@remotion/lambda-client 4.0.378 → 4.0.380

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 (141) hide show
  1. package/dist/app-router-webhook.d.ts +10 -0
  2. package/dist/app-router-webhook.js +43 -0
  3. package/dist/apply-lifecycle.d.ts +8 -0
  4. package/dist/apply-lifecycle.js +18 -0
  5. package/dist/aws-clients.d.ts +12 -0
  6. package/dist/aws-clients.js +56 -0
  7. package/dist/aws-provider.d.ts +27 -0
  8. package/dist/aws-provider.js +94 -0
  9. package/dist/bucket-exists.d.ts +3 -0
  10. package/dist/bucket-exists.js +27 -0
  11. package/dist/call-lambda-async.d.ts +2 -0
  12. package/dist/call-lambda-async.js +20 -0
  13. package/dist/call-lambda-streaming.d.ts +6 -0
  14. package/dist/call-lambda-streaming.js +126 -0
  15. package/dist/call-lambda-sync.d.ts +2 -0
  16. package/dist/call-lambda-sync.js +30 -0
  17. package/dist/check-credentials.d.ts +1 -0
  18. package/dist/check-credentials.js +39 -0
  19. package/dist/cjs/index.js +36 -33
  20. package/dist/clean-items.d.ts +17 -0
  21. package/dist/clean-items.js +26 -0
  22. package/dist/constants.d.ts +25 -0
  23. package/dist/constants.js +26 -0
  24. package/dist/content-disposition-header.d.ts +2 -0
  25. package/dist/content-disposition-header.js +50 -0
  26. package/dist/convert-to-serve-url.d.ts +6 -0
  27. package/dist/convert-to-serve-url.js +14 -0
  28. package/dist/create-bucket.d.ts +3 -0
  29. package/dist/create-bucket.js +65 -0
  30. package/dist/delete-file.d.ts +3 -0
  31. package/dist/delete-file.js +17 -0
  32. package/dist/delete-function.d.ts +7 -0
  33. package/dist/delete-function.js +15 -0
  34. package/dist/delete-render.d.ts +22 -0
  35. package/dist/delete-render.js +90 -0
  36. package/dist/encode-aws-url-params.d.ts +1 -0
  37. package/dist/encode-aws-url-params.js +7 -0
  38. package/dist/esm/index.mjs +23 -20
  39. package/dist/estimate-price.d.ts +17 -0
  40. package/dist/estimate-price.js +45 -0
  41. package/dist/express-webhook.d.ts +3 -0
  42. package/dist/express-webhook.js +46 -0
  43. package/dist/get-account-id.d.ts +3 -0
  44. package/dist/get-account-id.js +15 -0
  45. package/dist/get-aws-client.d.ts +32 -0
  46. package/dist/get-aws-client.js +67 -0
  47. package/dist/get-aws-urls.d.ts +25 -0
  48. package/dist/get-aws-urls.js +31 -0
  49. package/dist/get-buckets.d.ts +9 -0
  50. package/dist/get-buckets.js +64 -0
  51. package/dist/get-compositions-on-lambda.d.ts +20 -0
  52. package/dist/get-compositions-on-lambda.js +62 -0
  53. package/dist/get-credentials.d.ts +9 -0
  54. package/dist/get-credentials.js +55 -0
  55. package/dist/get-env-variable.d.ts +1 -0
  56. package/dist/get-env-variable.js +15 -0
  57. package/dist/get-function-name.d.ts +8 -0
  58. package/dist/get-function-name.js +17 -0
  59. package/dist/get-function-version.d.ts +9 -0
  60. package/dist/get-function-version.js +35 -0
  61. package/dist/get-functions.d.ts +10 -0
  62. package/dist/get-functions.js +80 -0
  63. package/dist/get-output-url-from-metadata.d.ts +3 -0
  64. package/dist/get-output-url-from-metadata.js +18 -0
  65. package/dist/get-render-progress.d.ts +17 -0
  66. package/dist/get-render-progress.js +47 -0
  67. package/dist/get-s3-client.d.ts +11 -0
  68. package/dist/get-s3-client.js +15 -0
  69. package/dist/get-service-client.d.ts +25 -0
  70. package/dist/get-service-client.js +131 -0
  71. package/dist/get-sites.d.ts +31 -0
  72. package/dist/get-sites.js +83 -0
  73. package/dist/head-file.d.ts +3 -0
  74. package/dist/head-file.js +18 -0
  75. package/dist/index.d.ts +129 -0
  76. package/dist/index.js +108 -0
  77. package/dist/is-cli.d.ts +2 -0
  78. package/dist/is-cli.js +10 -0
  79. package/dist/is-flaky-error.d.ts +1 -0
  80. package/dist/is-flaky-error.js +78 -0
  81. package/dist/is-in-lambda.d.ts +1 -0
  82. package/dist/is-in-lambda.js +9 -0
  83. package/dist/is-likely-to-have-aws-profile.d.ts +1 -0
  84. package/dist/is-likely-to-have-aws-profile.js +50 -0
  85. package/dist/lambda-version-string.d.ts +1 -0
  86. package/dist/lambda-version-string.js +7 -0
  87. package/dist/lifecycle-rules.d.ts +12 -0
  88. package/dist/lifecycle-rules.js +73 -0
  89. package/dist/lifecycle.d.ts +7 -0
  90. package/dist/lifecycle.js +24 -0
  91. package/dist/list-objects.d.ts +3 -0
  92. package/dist/list-objects.js +70 -0
  93. package/dist/make-lambda-payload.d.ts +59 -0
  94. package/dist/make-lambda-payload.js +150 -0
  95. package/dist/make-s3-url.d.ts +6 -0
  96. package/dist/make-s3-url.js +7 -0
  97. package/dist/p-limit.d.ts +1 -0
  98. package/dist/p-limit.js +57 -0
  99. package/dist/pages-router-webhook.d.ts +5 -0
  100. package/dist/pages-router-webhook.js +48 -0
  101. package/dist/parse-function-name.d.ts +8 -0
  102. package/dist/parse-function-name.js +17 -0
  103. package/dist/presign-url.d.ts +17 -0
  104. package/dist/presign-url.js +66 -0
  105. package/dist/price-per-1s.d.ts +37 -0
  106. package/dist/price-per-1s.js +822 -0
  107. package/dist/random-hash.d.ts +1 -0
  108. package/dist/random-hash.js +13 -0
  109. package/dist/read-file.d.ts +11 -0
  110. package/dist/read-file.js +19 -0
  111. package/dist/regions.d.ts +3 -0
  112. package/dist/regions.js +48 -0
  113. package/dist/render-media-on-lambda.d.ts +66 -0
  114. package/dist/render-media-on-lambda.js +133 -0
  115. package/dist/render-still-on-lambda.d.ts +61 -0
  116. package/dist/render-still-on-lambda.js +121 -0
  117. package/dist/runtime-preference.d.ts +2 -0
  118. package/dist/runtime-preference.js +8 -0
  119. package/dist/speculate-function-name.d.ts +7 -0
  120. package/dist/speculate-function-name.js +39 -0
  121. package/dist/types.d.ts +4 -0
  122. package/dist/types.js +2 -0
  123. package/dist/validate-aws-region.d.ts +2 -0
  124. package/dist/validate-aws-region.js +9 -0
  125. package/dist/validate-bucketname.d.ts +4 -0
  126. package/dist/validate-bucketname.js +15 -0
  127. package/dist/validate-disk-size-in-mb.d.ts +1 -0
  128. package/dist/validate-disk-size-in-mb.js +23 -0
  129. package/dist/validate-lambda-codec.d.ts +2 -0
  130. package/dist/validate-lambda-codec.js +21 -0
  131. package/dist/validate-memory-size.d.ts +1 -0
  132. package/dist/validate-memory-size.js +22 -0
  133. package/dist/validate-presign-expiration.d.ts +1 -0
  134. package/dist/validate-presign-expiration.js +29 -0
  135. package/dist/validate-serveurl.d.ts +1 -0
  136. package/dist/validate-serveurl.js +9 -0
  137. package/dist/validate-webhook-signature.d.ts +5 -0
  138. package/dist/validate-webhook-signature.js +28 -0
  139. package/dist/write-file.d.ts +5 -0
  140. package/dist/write-file.js +83 -0
  141. package/package.json +3 -3
package/dist/cjs/index.js CHANGED
@@ -65826,12 +65826,12 @@ __export(exports_src, {
65826
65826
  module.exports = __toCommonJS(exports_src);
65827
65827
 
65828
65828
  // src/get-service-client.ts
65829
- var import_client_cloudwatch_logs = __toESM(require_dist_cjs64(), 1);
65830
- var import_client_iam = __toESM(require_dist_cjs66(), 1);
65831
- var import_client_lambda = __toESM(require_dist_cjs67(), 1);
65832
- var import_client_s3 = __toESM(require_dist_cjs77(), 1);
65833
- var import_client_service_quotas = __toESM(require_dist_cjs78(), 1);
65834
- var import_client_sts = __toESM(require_dist_cjs79(), 1);
65829
+ var import_client_cloudwatch_logs = __toESM(require_dist_cjs64());
65830
+ var import_client_iam = __toESM(require_dist_cjs66());
65831
+ var import_client_lambda = __toESM(require_dist_cjs67());
65832
+ var import_client_s3 = __toESM(require_dist_cjs77());
65833
+ var import_client_service_quotas = __toESM(require_dist_cjs78());
65834
+ var import_client_sts = __toESM(require_dist_cjs79());
65835
65835
 
65836
65836
  // ../serverless-client/dist/esm/index.mjs
65837
65837
  var tty = __toESM(require("tty"));
@@ -66555,7 +66555,7 @@ var validateDownloadBehavior = (downloadBehavior) => {
66555
66555
  }
66556
66556
  }
66557
66557
  };
66558
- var VERSION = "4.0.378";
66558
+ var VERSION = "4.0.380";
66559
66559
  var isColorSupported = () => {
66560
66560
  const env = process.env || {};
66561
66561
  const isForceDisabled = "NO_COLOR" in env;
@@ -68465,7 +68465,7 @@ var checkCredentials = () => {
68465
68465
  };
68466
68466
 
68467
68467
  // src/get-credentials.ts
68468
- var import_credential_provider_ini = __toESM(require_dist_cjs56(), 1);
68468
+ var import_credential_provider_ini = __toESM(require_dist_cjs56());
68469
68469
 
68470
68470
  // src/is-in-lambda.ts
68471
68471
  var isInsideLambda = () => Boolean(typeof process !== "undefined" && process?.env?.__RESERVED_IS_INSIDE_REMOTION_LAMBDA);
@@ -68676,7 +68676,7 @@ var getStsClient = (region, requestHandler) => {
68676
68676
  var import_node_events = require("node:events");
68677
68677
 
68678
68678
  // src/bucket-exists.ts
68679
- var import_client_s32 = __toESM(require_dist_cjs77(), 1);
68679
+ var import_client_s32 = __toESM(require_dist_cjs77());
68680
68680
 
68681
68681
  // src/get-s3-client.ts
68682
68682
  var getS3Client = ({
@@ -68722,7 +68722,7 @@ var bucketExistsInRegionImplementation = async ({
68722
68722
  };
68723
68723
 
68724
68724
  // src/call-lambda-async.ts
68725
- var import_client_lambda2 = __toESM(require_dist_cjs67(), 1);
68725
+ var import_client_lambda2 = __toESM(require_dist_cjs67());
68726
68726
  var callFunctionAsyncImplementation = async ({
68727
68727
  functionName,
68728
68728
  payload,
@@ -68744,7 +68744,7 @@ var callFunctionAsyncImplementation = async ({
68744
68744
  };
68745
68745
 
68746
68746
  // src/call-lambda-streaming.ts
68747
- var import_client_lambda3 = __toESM(require_dist_cjs67(), 1);
68747
+ var import_client_lambda3 = __toESM(require_dist_cjs67());
68748
68748
  var STREAM_STALL_TIMEOUT = 30000;
68749
68749
  var LAMBDA_STREAM_STALL = `AWS did not invoke Lambda in ${STREAM_STALL_TIMEOUT}ms`;
68750
68750
  var parseJsonOrThrowSource = (data, type) => {
@@ -68859,7 +68859,7 @@ var callFunctionWithStreamingImplementation = async (options) => {
68859
68859
  };
68860
68860
 
68861
68861
  // src/call-lambda-sync.ts
68862
- var import_client_lambda4 = __toESM(require_dist_cjs67(), 1);
68862
+ var import_client_lambda4 = __toESM(require_dist_cjs67());
68863
68863
  var callLambdaSyncWithoutRetry = async ({
68864
68864
  functionName,
68865
68865
  payload,
@@ -68917,7 +68917,7 @@ var convertToServeUrlImplementation = ({
68917
68917
  };
68918
68918
 
68919
68919
  // src/create-bucket.ts
68920
- var import_client_s33 = __toESM(require_dist_cjs77(), 1);
68920
+ var import_client_s33 = __toESM(require_dist_cjs77());
68921
68921
  var createBucket = async ({ region, bucketName, forcePathStyle, requestHandler }) => {
68922
68922
  await getS3Client({
68923
68923
  region,
@@ -68976,7 +68976,7 @@ var createBucket = async ({ region, bucketName, forcePathStyle, requestHandler }
68976
68976
  };
68977
68977
 
68978
68978
  // src/delete-file.ts
68979
- var import_client_s34 = __toESM(require_dist_cjs77(), 1);
68979
+ var import_client_s34 = __toESM(require_dist_cjs77());
68980
68980
  var lambdaDeleteFileImplementation = async ({
68981
68981
  bucketName,
68982
68982
  key,
@@ -68997,7 +68997,7 @@ var lambdaDeleteFileImplementation = async ({
68997
68997
  };
68998
68998
 
68999
68999
  // src/delete-function.ts
69000
- var import_client_lambda5 = __toESM(require_dist_cjs67(), 1);
69000
+ var import_client_lambda5 = __toESM(require_dist_cjs67());
69001
69001
  var deleteFunction = async ({
69002
69002
  region,
69003
69003
  functionName,
@@ -69935,7 +69935,7 @@ var estimatePrice = ({
69935
69935
  };
69936
69936
 
69937
69937
  // src/get-account-id.ts
69938
- var import_client_sts2 = __toESM(require_dist_cjs79(), 1);
69938
+ var import_client_sts2 = __toESM(require_dist_cjs79());
69939
69939
  var getAccountIdImplementation = async (options) => {
69940
69940
  validateAwsRegion(options.region);
69941
69941
  const callerIdentity = await getStsClient(options.region, null).send(new import_client_sts2.GetCallerIdentityCommand({}));
@@ -69996,7 +69996,7 @@ var getProgressJsonUrl = ({
69996
69996
  };
69997
69997
 
69998
69998
  // src/get-buckets.ts
69999
- var import_client_s35 = __toESM(require_dist_cjs77(), 1);
69999
+ var import_client_s35 = __toESM(require_dist_cjs77());
70000
70000
 
70001
70001
  // src/validate-bucketname.ts
70002
70002
  var parseBucketName = (name) => {
@@ -70066,7 +70066,7 @@ var getRemotionBuckets = async ({
70066
70066
  };
70067
70067
 
70068
70068
  // src/get-functions.ts
70069
- var import_client_lambda6 = __toESM(require_dist_cjs67(), 1);
70069
+ var import_client_lambda6 = __toESM(require_dist_cjs67());
70070
70070
 
70071
70071
  // src/get-function-version.ts
70072
70072
  var getFunctionVersion = async ({
@@ -70189,7 +70189,7 @@ var getOutputUrlFromMetadata = ({
70189
70189
  };
70190
70190
 
70191
70191
  // src/head-file.ts
70192
- var import_client_s36 = __toESM(require_dist_cjs77(), 1);
70192
+ var import_client_s36 = __toESM(require_dist_cjs77());
70193
70193
  var lambdaHeadFileImplementation = async ({
70194
70194
  bucketName,
70195
70195
  key,
@@ -70267,11 +70267,14 @@ var isFlakyError = (err) => {
70267
70267
  if (message.includes("ServiceException: We currently do not have sufficient capacity in the region you requested")) {
70268
70268
  return true;
70269
70269
  }
70270
+ if (message.includes("Page crashed!")) {
70271
+ return true;
70272
+ }
70270
70273
  return false;
70271
70274
  };
70272
70275
 
70273
70276
  // src/lifecycle-rules.ts
70274
- var import_client_s37 = __toESM(require_dist_cjs77(), 1);
70277
+ var import_client_s37 = __toESM(require_dist_cjs77());
70275
70278
 
70276
70279
  // src/apply-lifecycle.ts
70277
70280
  var deleteLifeCycleInput = ({
@@ -70400,7 +70403,7 @@ var applyLifeCyleOperation = async ({
70400
70403
  };
70401
70404
 
70402
70405
  // src/list-objects.ts
70403
- var import_client_s38 = __toESM(require_dist_cjs77(), 1);
70406
+ var import_client_s38 = __toESM(require_dist_cjs77());
70404
70407
  var lambdaLsImplementation = async ({
70405
70408
  bucketName,
70406
70409
  prefix,
@@ -70494,7 +70497,7 @@ var randomHashImplementation = () => {
70494
70497
  };
70495
70498
 
70496
70499
  // src/read-file.ts
70497
- var import_client_s39 = __toESM(require_dist_cjs77(), 1);
70500
+ var import_client_s39 = __toESM(require_dist_cjs77());
70498
70501
  var lambdaReadFileImplementation = async ({
70499
70502
  bucketName,
70500
70503
  key,
@@ -70517,9 +70520,9 @@ var lambdaReadFileImplementation = async ({
70517
70520
  };
70518
70521
 
70519
70522
  // src/write-file.ts
70520
- var import_client_s310 = __toESM(require_dist_cjs77(), 1);
70521
- var import_lib_storage = __toESM(require_dist_cjs81(), 1);
70522
- var import_mime_types = __toESM(require_mime_types(), 1);
70523
+ var import_client_s310 = __toESM(require_dist_cjs77());
70524
+ var import_lib_storage = __toESM(require_dist_cjs81());
70525
+ var import_mime_types = __toESM(require_mime_types());
70523
70526
 
70524
70527
  // src/content-disposition-header.ts
70525
70528
  var problematicCharacters = {
@@ -71610,12 +71613,12 @@ var expressWebhook = (options) => {
71610
71613
  };
71611
71614
  };
71612
71615
  // src/get-aws-client.ts
71613
- var CloudWatchSDK = __toESM(require_dist_cjs64(), 1);
71614
- var IamSdk = __toESM(require_dist_cjs66(), 1);
71615
- var LambdaSDK = __toESM(require_dist_cjs67(), 1);
71616
- var S3SDK = __toESM(require_dist_cjs77(), 1);
71617
- var ServiceQuotasSDK = __toESM(require_dist_cjs78(), 1);
71618
- var StsSdk = __toESM(require_dist_cjs79(), 1);
71616
+ var CloudWatchSDK = __toESM(require_dist_cjs64());
71617
+ var IamSdk = __toESM(require_dist_cjs66());
71618
+ var LambdaSDK = __toESM(require_dist_cjs67());
71619
+ var S3SDK = __toESM(require_dist_cjs77());
71620
+ var ServiceQuotasSDK = __toESM(require_dist_cjs78());
71621
+ var StsSdk = __toESM(require_dist_cjs79());
71619
71622
  var getAwsClient = ({
71620
71623
  region,
71621
71624
  service,
@@ -71744,8 +71747,8 @@ var getRenderProgress = async (input) => {
71744
71747
  return result;
71745
71748
  };
71746
71749
  // src/presign-url.ts
71747
- var import_client_s311 = __toESM(require_dist_cjs77(), 1);
71748
- var import_s3_request_presigner = __toESM(require_dist_cjs83(), 1);
71750
+ var import_client_s311 = __toESM(require_dist_cjs77());
71751
+ var import_s3_request_presigner = __toESM(require_dist_cjs83());
71749
71752
 
71750
71753
  // src/validate-presign-expiration.ts
71751
71754
  var MAX_PRESIGN_EXPIRATION = 604800;
@@ -0,0 +1,17 @@
1
+ import type { CloudProvider, ProviderSpecifics } from '@remotion/serverless-client';
2
+ export declare const cleanItems: <Provider extends CloudProvider>({ bucket, onAfterItemDeleted, onBeforeItemDeleted, region, list, providerSpecifics, forcePathStyle, requestHandler, }: {
3
+ bucket: string;
4
+ region: Provider["region"];
5
+ list: string[];
6
+ onBeforeItemDeleted: (data: {
7
+ bucketName: string;
8
+ itemName: string;
9
+ }) => void;
10
+ onAfterItemDeleted: (data: {
11
+ bucketName: string;
12
+ itemName: string;
13
+ }) => void;
14
+ providerSpecifics: ProviderSpecifics<Provider>;
15
+ forcePathStyle: boolean;
16
+ requestHandler: Provider["requestHandler"] | null;
17
+ }) => Promise<void[]>;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cleanItems = void 0;
4
+ const p_limit_1 = require("./p-limit");
5
+ const limit = (0, p_limit_1.pLimit)(10);
6
+ const cleanItems = ({ bucket, onAfterItemDeleted, onBeforeItemDeleted, region, list, providerSpecifics, forcePathStyle, requestHandler, }) => {
7
+ return Promise.all(list.map((object) => limit(async () => {
8
+ onBeforeItemDeleted({
9
+ bucketName: bucket,
10
+ itemName: object,
11
+ });
12
+ await providerSpecifics.deleteFile({
13
+ bucketName: bucket,
14
+ key: object,
15
+ region,
16
+ customCredentials: null,
17
+ forcePathStyle,
18
+ requestHandler,
19
+ });
20
+ onAfterItemDeleted({
21
+ bucketName: bucket,
22
+ itemName: object,
23
+ });
24
+ })));
25
+ };
26
+ exports.cleanItems = cleanItems;
@@ -0,0 +1,25 @@
1
+ import type { GenericRenderProgress, Privacy } from '@remotion/serverless-client';
2
+ import type { AwsProvider } from './aws-provider';
3
+ import type { AwsRegion } from './regions';
4
+ export declare const MIN_MEMORY = 512;
5
+ export declare const MAX_MEMORY = 10240;
6
+ export declare const DEFAULT_MEMORY_SIZE = 2048;
7
+ export declare const DEFAULT_TIMEOUT = 120;
8
+ export declare const MIN_TIMEOUT = 15;
9
+ export declare const MAX_TIMEOUT = 900;
10
+ export declare const DEFAULT_FRAMES_PER_LAMBDA = 20;
11
+ export declare const BINARY_NAME = "remotion lambda";
12
+ export declare const DEFAULT_REGION: AwsRegion;
13
+ export declare const DEFAULT_MAX_RETRIES = 1;
14
+ export declare const MAX_EPHEMERAL_STORAGE_IN_MB = 10240;
15
+ export declare const DEFAULT_EPHEMERAL_STORAGE_IN_MB = 2048;
16
+ export declare const MIN_EPHEMERAL_STORAGE_IN_MB = 512;
17
+ export declare const DEFAULT_OUTPUT_PRIVACY: Privacy;
18
+ export declare const DEFAULT_CLOUDWATCH_RETENTION_PERIOD = 14;
19
+ export declare const RENDER_FN_PREFIX = "remotion-render-";
20
+ export declare const LOG_GROUP_PREFIX = "/aws/lambda/";
21
+ export declare const LAMBDA_INSIGHTS_PREFIX = "/aws/lambda-insights";
22
+ export declare const getSitesKey: (siteId: string) => string;
23
+ export type RenderProgress = GenericRenderProgress<AwsProvider>;
24
+ export declare const LAMBDA_CONCURRENCY_LIMIT_QUOTA = "L-B99A9384";
25
+ export declare const REMOTION_BUCKET_PREFIX = "remotionlambda-";
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.REMOTION_BUCKET_PREFIX = exports.LAMBDA_CONCURRENCY_LIMIT_QUOTA = exports.getSitesKey = exports.LAMBDA_INSIGHTS_PREFIX = exports.LOG_GROUP_PREFIX = exports.RENDER_FN_PREFIX = exports.DEFAULT_CLOUDWATCH_RETENTION_PERIOD = exports.DEFAULT_OUTPUT_PRIVACY = exports.MIN_EPHEMERAL_STORAGE_IN_MB = exports.DEFAULT_EPHEMERAL_STORAGE_IN_MB = exports.MAX_EPHEMERAL_STORAGE_IN_MB = exports.DEFAULT_MAX_RETRIES = exports.DEFAULT_REGION = exports.BINARY_NAME = exports.DEFAULT_FRAMES_PER_LAMBDA = exports.MAX_TIMEOUT = exports.MIN_TIMEOUT = exports.DEFAULT_TIMEOUT = exports.DEFAULT_MEMORY_SIZE = exports.MAX_MEMORY = exports.MIN_MEMORY = void 0;
4
+ exports.MIN_MEMORY = 512;
5
+ exports.MAX_MEMORY = 10240;
6
+ exports.DEFAULT_MEMORY_SIZE = 2048;
7
+ exports.DEFAULT_TIMEOUT = 120;
8
+ exports.MIN_TIMEOUT = 15;
9
+ exports.MAX_TIMEOUT = 900;
10
+ exports.DEFAULT_FRAMES_PER_LAMBDA = 20;
11
+ exports.BINARY_NAME = 'remotion lambda';
12
+ exports.DEFAULT_REGION = 'us-east-1';
13
+ exports.DEFAULT_MAX_RETRIES = 1;
14
+ exports.MAX_EPHEMERAL_STORAGE_IN_MB = 10240;
15
+ // TODO: In V5, Enable set this to 10240
16
+ exports.DEFAULT_EPHEMERAL_STORAGE_IN_MB = 2048;
17
+ exports.MIN_EPHEMERAL_STORAGE_IN_MB = 512;
18
+ exports.DEFAULT_OUTPUT_PRIVACY = 'public';
19
+ exports.DEFAULT_CLOUDWATCH_RETENTION_PERIOD = 14;
20
+ exports.RENDER_FN_PREFIX = 'remotion-render-';
21
+ exports.LOG_GROUP_PREFIX = '/aws/lambda/';
22
+ exports.LAMBDA_INSIGHTS_PREFIX = '/aws/lambda-insights';
23
+ const getSitesKey = (siteId) => `sites/${siteId}`;
24
+ exports.getSitesKey = getSitesKey;
25
+ exports.LAMBDA_CONCURRENCY_LIMIT_QUOTA = 'L-B99A9384';
26
+ exports.REMOTION_BUCKET_PREFIX = 'remotionlambda-';
@@ -0,0 +1,2 @@
1
+ import type { DownloadBehavior } from '@remotion/serverless-client';
2
+ export declare const getContentDispositionHeader: (behavior: DownloadBehavior | null) => string | undefined;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getContentDispositionHeader = void 0;
4
+ // By setting the Content-Disposition header in an S3 object,
5
+ // you can control if the user downloads the item if you
6
+ // visit the link
7
+ const problematicCharacters = {
8
+ '%3A': ':',
9
+ '%2F': '/',
10
+ '%3F': '?',
11
+ '%23': '#',
12
+ '%5B': '[',
13
+ '%5D': ']',
14
+ '%40': '@',
15
+ '%21': '!',
16
+ '%24': '$',
17
+ '%26': '&',
18
+ '%27': "'",
19
+ '%28': '(',
20
+ '%29': ')',
21
+ '%2A': '*',
22
+ '%2B': '+',
23
+ '%2C': ',',
24
+ '%3B': ';',
25
+ };
26
+ const includesHexOfUnsafeChar = (path) => {
27
+ for (const key of Object.keys(problematicCharacters)) {
28
+ if (path.includes(key)) {
29
+ return { containsHex: true };
30
+ }
31
+ }
32
+ return { containsHex: false };
33
+ };
34
+ const getContentDispositionHeader = (behavior) => {
35
+ if (behavior === null) {
36
+ return undefined;
37
+ }
38
+ if (behavior.type === 'play-in-browser') {
39
+ return undefined;
40
+ }
41
+ if (behavior.fileName === null) {
42
+ return `attachment`;
43
+ }
44
+ const { containsHex } = includesHexOfUnsafeChar(behavior.fileName);
45
+ if (containsHex) {
46
+ return `attachment; filename="${behavior.fileName}"`;
47
+ }
48
+ return `attachment; filename="${encodeURIComponent(behavior.fileName)}"`;
49
+ };
50
+ exports.getContentDispositionHeader = getContentDispositionHeader;
@@ -0,0 +1,6 @@
1
+ import type { AwsRegion } from './regions';
2
+ export declare const convertToServeUrlImplementation: ({ urlOrId, region, bucketName, }: {
3
+ urlOrId: string;
4
+ region: AwsRegion;
5
+ bucketName: string;
6
+ }) => string;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convertToServeUrlImplementation = void 0;
4
+ const serverless_client_1 = require("@remotion/serverless-client");
5
+ const convertToServeUrlImplementation = ({ urlOrId, region, bucketName, }) => {
6
+ if (urlOrId.startsWith('src/')) {
7
+ throw new Error(`Remotion Lambda can only render based on a URL in the cloud. It seems like you passed a local file: ${urlOrId}. Read the setup guide for Remotion Lambda ${serverless_client_1.DOCS_URL}/docs/lambda/setup`);
8
+ }
9
+ if (urlOrId.startsWith('http://') || urlOrId.startsWith('https://')) {
10
+ return urlOrId;
11
+ }
12
+ return `https://${bucketName}.s3.${region}.amazonaws.com/sites/${urlOrId}/index.html`;
13
+ };
14
+ exports.convertToServeUrlImplementation = convertToServeUrlImplementation;
@@ -0,0 +1,3 @@
1
+ import type { ProviderSpecifics } from '@remotion/serverless-client';
2
+ import type { AwsProvider } from './aws-provider';
3
+ export declare const createBucket: ProviderSpecifics<AwsProvider>['createBucket'];
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createBucket = void 0;
4
+ const client_s3_1 = require("@aws-sdk/client-s3");
5
+ const get_s3_client_1 = require("./get-s3-client");
6
+ const createBucket = async ({ region, bucketName, forcePathStyle, requestHandler }) => {
7
+ await (0, get_s3_client_1.getS3Client)({
8
+ region,
9
+ customCredentials: null,
10
+ forcePathStyle,
11
+ requestHandler,
12
+ }).send(new client_s3_1.CreateBucketCommand({
13
+ Bucket: bucketName,
14
+ }));
15
+ try {
16
+ await (0, get_s3_client_1.getS3Client)({
17
+ region,
18
+ customCredentials: null,
19
+ forcePathStyle,
20
+ requestHandler,
21
+ }).send(new client_s3_1.DeleteBucketOwnershipControlsCommand({
22
+ Bucket: bucketName,
23
+ }));
24
+ }
25
+ catch (err) {
26
+ if (err.message.includes('Access Denied')) {
27
+ throw new Error('Since April 2023, more AWS permissions are required to create an S3 bucket. You need to update your user policy to continue. See https://remotion.dev/docs/lambda/s3-public-access for instructions on how to resolve this issue.');
28
+ }
29
+ throw err;
30
+ }
31
+ try {
32
+ await (0, get_s3_client_1.getS3Client)({
33
+ region,
34
+ customCredentials: null,
35
+ forcePathStyle,
36
+ requestHandler,
37
+ }).send(new client_s3_1.DeletePublicAccessBlockCommand({
38
+ Bucket: bucketName,
39
+ }));
40
+ }
41
+ catch (err) {
42
+ if (err.message.includes('Access Denied')) {
43
+ throw new Error('PARTIAL SUCCESS: The s3:PutBucketOwnershipControls was found, but the s3:PutBucketPublicAccessBlock permission is not given. Since April 2023, more AWS permissions are required to create an S3 bucket. You need to update your user policy to continue. You need to update your user policy to continue. See https://remotion.dev/docs/lambda/s3-public-access for instructions on how to resolve this issue.');
44
+ }
45
+ throw err;
46
+ }
47
+ try {
48
+ await (0, get_s3_client_1.getS3Client)({
49
+ region,
50
+ customCredentials: null,
51
+ forcePathStyle,
52
+ requestHandler,
53
+ }).send(new client_s3_1.PutBucketAclCommand({
54
+ Bucket: bucketName,
55
+ ACL: 'public-read',
56
+ }));
57
+ }
58
+ catch (err) {
59
+ if (err.message.includes('The bucket does not allow ACLs')) {
60
+ throw new Error(`Could not add an ACL to the bucket. This might have happened because the bucket was already successfully created before but then failed to configure correctly. We recommend to delete the bucket (${bucketName}) if it is empty and start over to fix the problem.`);
61
+ }
62
+ throw err;
63
+ }
64
+ };
65
+ exports.createBucket = createBucket;
@@ -0,0 +1,3 @@
1
+ import type { ProviderSpecifics } from '@remotion/serverless-client';
2
+ import type { AwsProvider } from './aws-provider';
3
+ export declare const lambdaDeleteFileImplementation: ProviderSpecifics<AwsProvider>['deleteFile'];
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.lambdaDeleteFileImplementation = void 0;
4
+ const client_s3_1 = require("@aws-sdk/client-s3");
5
+ const get_s3_client_1 = require("./get-s3-client");
6
+ const lambdaDeleteFileImplementation = async ({ bucketName, key, region, customCredentials, forcePathStyle, requestHandler, }) => {
7
+ await (0, get_s3_client_1.getS3Client)({
8
+ region,
9
+ customCredentials,
10
+ forcePathStyle,
11
+ requestHandler,
12
+ }).send(new client_s3_1.DeleteObjectCommand({
13
+ Bucket: bucketName,
14
+ Key: key,
15
+ }));
16
+ };
17
+ exports.lambdaDeleteFileImplementation = lambdaDeleteFileImplementation;
@@ -0,0 +1,7 @@
1
+ import type { DeleteFunction, DeleteFunctionInput as GenericDeleteFunctionInput } from '@remotion/serverless-client';
2
+ import type { AwsProvider } from './aws-provider';
3
+ import type { RequestHandler } from './types';
4
+ export type DeleteFunctionInput = GenericDeleteFunctionInput<AwsProvider> & {
5
+ requestHandler?: RequestHandler;
6
+ };
7
+ export declare const deleteFunction: DeleteFunction<AwsProvider>;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deleteFunction = void 0;
4
+ const client_lambda_1 = require("@aws-sdk/client-lambda");
5
+ const aws_clients_1 = require("./aws-clients");
6
+ /*
7
+ * @description Deletes a deployed Lambda function based on its name.
8
+ * @see [Documentation](https://remotion.dev/docs/lambda/deletefunction)
9
+ */
10
+ const deleteFunction = async ({ region, functionName, requestHandler, }) => {
11
+ await (0, aws_clients_1.getLambdaClient)(region, undefined, requestHandler !== null && requestHandler !== void 0 ? requestHandler : null).send(new client_lambda_1.DeleteFunctionCommand({
12
+ FunctionName: functionName,
13
+ }));
14
+ };
15
+ exports.deleteFunction = deleteFunction;
@@ -0,0 +1,22 @@
1
+ import type { ProviderSpecifics } from '@remotion/serverless-client';
2
+ import { type CustomCredentials } from '@remotion/serverless-client';
3
+ import type { AwsProvider } from './aws-provider';
4
+ import type { AwsRegion } from './regions';
5
+ import type { RequestHandler } from './types';
6
+ export type DeleteRenderInput = {
7
+ region: AwsRegion;
8
+ bucketName: string;
9
+ renderId: string;
10
+ customCredentials?: CustomCredentials<AwsProvider>;
11
+ forcePathStyle?: boolean;
12
+ requestHandler?: RequestHandler;
13
+ };
14
+ export declare const internalDeleteRender: (input: DeleteRenderInput & {
15
+ providerSpecifics: ProviderSpecifics<AwsProvider>;
16
+ forcePathStyle: boolean;
17
+ }) => Promise<{
18
+ freedBytes: number;
19
+ }>;
20
+ export declare const deleteRender: (input: DeleteRenderInput) => Promise<{
21
+ freedBytes: number;
22
+ }>;
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deleteRender = exports.internalDeleteRender = void 0;
4
+ const serverless_client_1 = require("@remotion/serverless-client");
5
+ const aws_provider_1 = require("./aws-provider");
6
+ const clean_items_1 = require("./clean-items");
7
+ const constants_1 = require("./constants");
8
+ const internalDeleteRender = async (input) => {
9
+ var _a;
10
+ const expectedBucketOwner = await input.providerSpecifics.getAccountId({
11
+ region: input.region,
12
+ });
13
+ const progress = await (0, serverless_client_1.getOverallProgressFromStorage)({
14
+ bucketName: input.bucketName,
15
+ expectedBucketOwner,
16
+ region: input.region,
17
+ renderId: input.renderId,
18
+ providerSpecifics: input.providerSpecifics,
19
+ forcePathStyle: input.forcePathStyle,
20
+ requestHandler: input.requestHandler,
21
+ });
22
+ // Render did not start yet
23
+ if (progress.renderMetadata === null) {
24
+ return { freedBytes: 0 };
25
+ }
26
+ const { key, renderBucketName, customCredentials } = (0, serverless_client_1.getExpectedOutName)({
27
+ renderMetadata: progress.renderMetadata,
28
+ bucketName: input.bucketName,
29
+ customCredentials: (_a = input.customCredentials) !== null && _a !== void 0 ? _a : null,
30
+ bucketNamePrefix: constants_1.REMOTION_BUCKET_PREFIX,
31
+ });
32
+ await input.providerSpecifics.deleteFile({
33
+ bucketName: renderBucketName,
34
+ customCredentials,
35
+ key,
36
+ region: input.region,
37
+ forcePathStyle: input.forcePathStyle,
38
+ requestHandler: input.requestHandler,
39
+ });
40
+ let files = await input.providerSpecifics.listObjects({
41
+ bucketName: input.bucketName,
42
+ prefix: (0, serverless_client_1.rendersPrefix)(input.renderId),
43
+ region: input.region,
44
+ expectedBucketOwner,
45
+ forcePathStyle: input.forcePathStyle,
46
+ requestHandler: input.requestHandler,
47
+ });
48
+ let totalSize = 0;
49
+ while (files.length > 0) {
50
+ totalSize += files.reduce((a, b) => {
51
+ var _a;
52
+ return a + ((_a = b.Size) !== null && _a !== void 0 ? _a : 0);
53
+ }, 0);
54
+ await (0, clean_items_1.cleanItems)({
55
+ list: files.map((f) => f.Key),
56
+ bucket: input.bucketName,
57
+ onAfterItemDeleted: () => undefined,
58
+ onBeforeItemDeleted: () => undefined,
59
+ region: input.region,
60
+ providerSpecifics: input.providerSpecifics,
61
+ forcePathStyle: input.forcePathStyle,
62
+ requestHandler: input.requestHandler,
63
+ });
64
+ files = await input.providerSpecifics.listObjects({
65
+ bucketName: input.bucketName,
66
+ prefix: (0, serverless_client_1.rendersPrefix)(input.renderId),
67
+ region: input.region,
68
+ expectedBucketOwner,
69
+ forcePathStyle: input.forcePathStyle,
70
+ requestHandler: input.requestHandler,
71
+ });
72
+ }
73
+ return {
74
+ freedBytes: totalSize,
75
+ };
76
+ };
77
+ exports.internalDeleteRender = internalDeleteRender;
78
+ /*
79
+ * @description Deletes a rendered video, audio or still and its associated metadata.
80
+ * @see [Documentation](https://remotion.dev/docs/lambda/deleterender)
81
+ */
82
+ const deleteRender = (input) => {
83
+ var _a;
84
+ return (0, exports.internalDeleteRender)({
85
+ ...input,
86
+ providerSpecifics: aws_provider_1.awsImplementation,
87
+ forcePathStyle: (_a = input.forcePathStyle) !== null && _a !== void 0 ? _a : false,
88
+ });
89
+ };
90
+ exports.deleteRender = deleteRender;
@@ -0,0 +1 @@
1
+ export declare const encodeAwsUrlParams: (input: string) => string;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encodeAwsUrlParams = void 0;
4
+ const encodeAwsUrlParams = (input) => {
5
+ return encodeURIComponent(input).replace(/%/g, '$25');
6
+ };
7
+ exports.encodeAwsUrlParams = encodeAwsUrlParams;