@remotion/cloudrun 4.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +13 -0
- package/LICENSE.md +41 -0
- package/dist/admin/bundle-installer.d.ts +1 -0
- package/dist/admin/bundle-installer.js +32 -0
- package/dist/admin/bundle-renderLogic.d.ts +1 -0
- package/dist/admin/bundle-renderLogic.js +39 -0
- package/dist/api/check-if-service-exists.d.ts +18 -0
- package/dist/api/check-if-service-exists.js +46 -0
- package/dist/api/create-bucket.d.ts +13 -0
- package/dist/api/create-bucket.js +18 -0
- package/dist/api/delete-service.d.ts +12 -0
- package/dist/api/delete-service.js +19 -0
- package/dist/api/delete-site.d.ts +13 -0
- package/dist/api/delete-site.js +30 -0
- package/dist/api/deploy-service.d.ts +28 -0
- package/dist/api/deploy-service.js +90 -0
- package/dist/api/deploy-site.d.ts +35 -0
- package/dist/api/deploy-site.js +78 -0
- package/dist/api/download-file.d.ts +12 -0
- package/dist/api/download-file.js +29 -0
- package/dist/api/get-buckets.d.ts +10 -0
- package/dist/api/get-buckets.js +23 -0
- package/dist/api/get-or-create-bucket.d.ts +17 -0
- package/dist/api/get-or-create-bucket.js +42 -0
- package/dist/api/get-regions.d.ts +7 -0
- package/dist/api/get-regions.js +13 -0
- package/dist/api/get-service-info.d.ts +23 -0
- package/dist/api/get-service-info.js +34 -0
- package/dist/api/get-services.d.ts +14 -0
- package/dist/api/get-services.js +49 -0
- package/dist/api/get-sites.d.ts +23 -0
- package/dist/api/get-sites.js +49 -0
- package/dist/api/helpers/IService.d.ts +2 -0
- package/dist/api/helpers/IService.js +2 -0
- package/dist/api/helpers/construct-service-deploy-request.d.ts +32 -0
- package/dist/api/helpers/construct-service-deploy-request.js +36 -0
- package/dist/api/helpers/extract-mem-from-url.d.ts +1 -0
- package/dist/api/helpers/extract-mem-from-url.js +9 -0
- package/dist/api/helpers/extract-time-from-url.d.ts +1 -0
- package/dist/api/helpers/extract-time-from-url.js +13 -0
- package/dist/api/helpers/get-auth-client-for-url.d.ts +1 -0
- package/dist/api/helpers/get-auth-client-for-url.js +15 -0
- package/dist/api/helpers/get-cloud-logging-client.d.ts +1 -0
- package/dist/api/helpers/get-cloud-logging-client.js +15 -0
- package/dist/api/helpers/get-cloud-run-client.d.ts +2 -0
- package/dist/api/helpers/get-cloud-run-client.js +15 -0
- package/dist/api/helpers/get-cloud-storage-client.d.ts +2 -0
- package/dist/api/helpers/get-cloud-storage-client.js +14 -0
- package/dist/api/helpers/get-cloudrun-endpoint.d.ts +6 -0
- package/dist/api/helpers/get-cloudrun-endpoint.js +28 -0
- package/dist/api/helpers/get-resource-manager-client.d.ts +2 -0
- package/dist/api/helpers/get-resource-manager-client.js +15 -0
- package/dist/api/helpers/parse-service-name.d.ts +8 -0
- package/dist/api/helpers/parse-service-name.js +24 -0
- package/dist/api/iam-validation/testPermissions.d.ts +20 -0
- package/dist/api/iam-validation/testPermissions.js +48 -0
- package/dist/api/render-media-on-cloudrun.d.ts +78 -0
- package/dist/api/render-media-on-cloudrun.js +144 -0
- package/dist/api/render-still-on-cloudrun.d.ts +49 -0
- package/dist/api/render-still-on-cloudrun.js +76 -0
- package/dist/api/speculate-service-name.d.ts +13 -0
- package/dist/api/speculate-service-name.js +20 -0
- package/dist/api/test/service-names.test.d.ts +1 -0
- package/dist/api/test/service-names.test.js +28 -0
- package/dist/api/upload-dir.d.ts +18 -0
- package/dist/api/upload-dir.js +81 -0
- package/dist/cli/args.d.ts +19 -0
- package/dist/cli/args.js +11 -0
- package/dist/cli/commands/permissions.d.ts +2 -0
- package/dist/cli/commands/permissions.js +23 -0
- package/dist/cli/commands/regions.d.ts +2 -0
- package/dist/cli/commands/regions.js +10 -0
- package/dist/cli/commands/render/helpers/renderArgsCheck.d.ts +9 -0
- package/dist/cli/commands/render/helpers/renderArgsCheck.js +75 -0
- package/dist/cli/commands/render/index.d.ts +2 -0
- package/dist/cli/commands/render/index.js +227 -0
- package/dist/cli/commands/render/renderMedia.d.ts +2 -0
- package/dist/cli/commands/render/renderMedia.js +156 -0
- package/dist/cli/commands/render/renderStill.d.ts +2 -0
- package/dist/cli/commands/render/renderStill.js +123 -0
- package/dist/cli/commands/services/deploy.d.ts +2 -0
- package/dist/cli/commands/services/deploy.js +129 -0
- package/dist/cli/commands/services/index.d.ts +5 -0
- package/dist/cli/commands/services/index.js +64 -0
- package/dist/cli/commands/services/ls.d.ts +2 -0
- package/dist/cli/commands/services/ls.js +40 -0
- package/dist/cli/commands/services/rm.d.ts +2 -0
- package/dist/cli/commands/services/rm.js +63 -0
- package/dist/cli/commands/services/rmall.d.ts +2 -0
- package/dist/cli/commands/services/rmall.js +52 -0
- package/dist/cli/commands/sites/create.d.ts +2 -0
- package/dist/cli/commands/sites/create.js +138 -0
- package/dist/cli/commands/sites/index.d.ts +4 -0
- package/dist/cli/commands/sites/index.js +60 -0
- package/dist/cli/commands/sites/ls.d.ts +2 -0
- package/dist/cli/commands/sites/ls.js +40 -0
- package/dist/cli/commands/sites/rm.d.ts +2 -0
- package/dist/cli/commands/sites/rm.js +59 -0
- package/dist/cli/commands/sites/rmall.d.ts +2 -0
- package/dist/cli/commands/sites/rmall.js +38 -0
- package/dist/cli/commands/still.d.ts +2 -0
- package/dist/cli/commands/still.js +129 -0
- package/dist/cli/get-gcp-region.d.ts +2 -0
- package/dist/cli/get-gcp-region.js +19 -0
- package/dist/cli/help.d.ts +1 -0
- package/dist/cli/help.js +38 -0
- package/dist/cli/helpers/confirm.d.ts +4 -0
- package/dist/cli/helpers/confirm.js +12 -0
- package/dist/cli/helpers/date-string.d.ts +1 -0
- package/dist/cli/helpers/date-string.js +9 -0
- package/dist/cli/helpers/progress-bar.d.ts +23 -0
- package/dist/cli/helpers/progress-bar.js +81 -0
- package/dist/cli/helpers/quit.d.ts +1 -0
- package/dist/cli/helpers/quit.js +7 -0
- package/dist/cli/helpers/yes-or-no.d.ts +4 -0
- package/dist/cli/helpers/yes-or-no.js +44 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +56 -0
- package/dist/cli/log.d.ts +26 -0
- package/dist/cli/log.js +5 -0
- package/dist/defaults.d.ts +1 -0
- package/dist/defaults.js +17 -0
- package/dist/functions/helpers/get-composition-from-body.d.ts +2 -0
- package/dist/functions/helpers/get-composition-from-body.js +27 -0
- package/dist/functions/helpers/io.d.ts +11 -0
- package/dist/functions/helpers/io.js +17 -0
- package/dist/functions/helpers/payloads.d.ts +300 -0
- package/dist/functions/helpers/payloads.js +104 -0
- package/dist/functions/index.d.ts +3 -0
- package/dist/functions/index.js +39 -0
- package/dist/functions/render-media-single-thread.d.ts +3 -0
- package/dist/functions/render-media-single-thread.js +103 -0
- package/dist/functions/render-still-single-thread.d.ts +3 -0
- package/dist/functions/render-still-single-thread.js +82 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +31 -0
- package/dist/internals.d.ts +3 -0
- package/dist/internals.js +7 -0
- package/dist/pricing/gcp-regions.d.ts +2 -0
- package/dist/pricing/gcp-regions.js +40 -0
- package/dist/regions.d.ts +2 -0
- package/dist/regions.js +5 -0
- package/dist/shared/bundle-site.d.ts +2 -0
- package/dist/shared/bundle-site.js +5 -0
- package/dist/shared/constants.d.ts +13 -0
- package/dist/shared/constants.js +18 -0
- package/dist/shared/convert-to-serve-url.d.ts +4 -0
- package/dist/shared/convert-to-serve-url.js +14 -0
- package/dist/shared/docs-url.d.ts +1 -0
- package/dist/shared/docs-url.js +4 -0
- package/dist/shared/generate-service-name.d.ts +5 -0
- package/dist/shared/generate-service-name.js +20 -0
- package/dist/shared/get-etag.d.ts +1 -0
- package/dist/shared/get-etag.js +24 -0
- package/dist/shared/get-storage-operations.d.ts +10 -0
- package/dist/shared/get-storage-operations.js +36 -0
- package/dist/shared/make-storage-key.d.ts +1 -0
- package/dist/shared/make-storage-key.js +11 -0
- package/dist/shared/make-storage-url.d.ts +4 -0
- package/dist/shared/make-storage-url.js +7 -0
- package/dist/shared/random-hash.d.ts +3 -0
- package/dist/shared/random-hash.js +14 -0
- package/dist/shared/read-dir.d.ts +9 -0
- package/dist/shared/read-dir.js +57 -0
- package/dist/shared/sa-permissions.json +64 -0
- package/dist/shared/service-version-string.d.ts +1 -0
- package/dist/shared/service-version-string.js +8 -0
- package/dist/shared/validate-bucketname.d.ts +8 -0
- package/dist/shared/validate-bucketname.js +35 -0
- package/dist/shared/validate-cloudrun-url.d.ts +1 -0
- package/dist/shared/validate-cloudrun-url.js +10 -0
- package/dist/shared/validate-gcp-codec.d.ts +4 -0
- package/dist/shared/validate-gcp-codec.js +29 -0
- package/dist/shared/validate-gcp-region.d.ts +2 -0
- package/dist/shared/validate-gcp-region.js +10 -0
- package/dist/shared/validate-image-remotion-version.d.ts +1 -0
- package/dist/shared/validate-image-remotion-version.js +26 -0
- package/dist/shared/validate-privacy.d.ts +2 -0
- package/dist/shared/validate-privacy.js +12 -0
- package/dist/shared/validate-project-id.d.ts +1 -0
- package/dist/shared/validate-project-id.js +17 -0
- package/dist/shared/validate-region.d.ts +1 -0
- package/dist/shared/validate-region.js +15 -0
- package/dist/shared/validate-retries.d.ts +1 -0
- package/dist/shared/validate-retries.js +21 -0
- package/dist/shared/validate-serveurl.d.ts +1 -0
- package/dist/shared/validate-serveurl.js +30 -0
- package/dist/shared/validate-service-name.d.ts +1 -0
- package/dist/shared/validate-service-name.js +9 -0
- package/dist/shared/validate-site-name.d.ts +1 -0
- package/dist/shared/validate-site-name.js +17 -0
- package/package.json +56 -0
- package/readme.md +3 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { File } from '@google-cloud/storage';
|
|
2
|
+
export type CloudrunLSInput = {
|
|
3
|
+
bucketName: string;
|
|
4
|
+
prefix: string;
|
|
5
|
+
};
|
|
6
|
+
export type CloudrunLsReturnType = Promise<File[]>;
|
|
7
|
+
export declare const cloudrunLs: ({ bucketName, prefix, }: CloudrunLSInput) => CloudrunLsReturnType;
|
|
8
|
+
export declare const cloudrunDeleteFile: ({ bucketName, key, }: {
|
|
9
|
+
bucketName: string;
|
|
10
|
+
key: string;
|
|
11
|
+
}) => Promise<void>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cloudrunDeleteFile = exports.cloudrunLs = void 0;
|
|
4
|
+
const get_cloud_storage_client_1 = require("../../api/helpers/get-cloud-storage-client");
|
|
5
|
+
const cloudrunLs = async ({ bucketName, prefix, }) => {
|
|
6
|
+
const cloudStorageClient = (0, get_cloud_storage_client_1.getCloudStorageClient)();
|
|
7
|
+
const [files] = await cloudStorageClient
|
|
8
|
+
.bucket(bucketName)
|
|
9
|
+
.getFiles({ prefix, autoPaginate: true });
|
|
10
|
+
return files;
|
|
11
|
+
};
|
|
12
|
+
exports.cloudrunLs = cloudrunLs;
|
|
13
|
+
const cloudrunDeleteFile = async ({ bucketName, key, }) => {
|
|
14
|
+
const cloudStorageClient = (0, get_cloud_storage_client_1.getCloudStorageClient)();
|
|
15
|
+
await cloudStorageClient.bucket(bucketName).file(key).delete();
|
|
16
|
+
};
|
|
17
|
+
exports.cloudrunDeleteFile = cloudrunDeleteFile;
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const CloudRunPayload: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
|
|
3
|
+
type: z.ZodLiteral<"media">;
|
|
4
|
+
serveUrl: z.ZodString;
|
|
5
|
+
composition: z.ZodString;
|
|
6
|
+
forceHeight: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
|
|
7
|
+
forceWidth: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
|
|
8
|
+
codec: z.ZodEnum<["h264", "h265", "vp8", "vp9", "mp3", "aac", "wav", "prores", "h264-mkv", "gif"]>;
|
|
9
|
+
serializedInputPropsWithCustomSchema: z.ZodString;
|
|
10
|
+
jpegQuality: z.ZodNumber;
|
|
11
|
+
audioCodec: z.ZodNullable<z.ZodEnum<["pcm-16", "aac", "mp3", "opus"]>>;
|
|
12
|
+
audioBitrate: z.ZodNullable<z.ZodString>;
|
|
13
|
+
videoBitrate: z.ZodNullable<z.ZodString>;
|
|
14
|
+
crf: z.ZodNullable<z.ZodNumber>;
|
|
15
|
+
pixelFormat: z.ZodEnum<["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"]>;
|
|
16
|
+
imageFormat: z.ZodEnum<["png", "jpeg", "none"]>;
|
|
17
|
+
scale: z.ZodNumber;
|
|
18
|
+
proResProfile: z.ZodNullable<z.ZodEnum<["4444-xq", "4444", "hq", "standard", "light", "proxy"]>>;
|
|
19
|
+
everyNthFrame: z.ZodNumber;
|
|
20
|
+
numberOfGifLoops: z.ZodNullable<z.ZodNumber>;
|
|
21
|
+
frameRange: z.ZodNullable<z.ZodUnion<[z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodNumber]>>;
|
|
22
|
+
envVariables: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
23
|
+
chromiumOptions: z.ZodOptional<z.ZodObject<{
|
|
24
|
+
ignoreCertificateErrors: z.ZodOptional<z.ZodBoolean>;
|
|
25
|
+
disableWebSecurity: z.ZodOptional<z.ZodBoolean>;
|
|
26
|
+
gl: z.ZodNullable<z.ZodOptional<z.ZodEnum<["swangle", "angle", "egl", "swiftshader"]>>>;
|
|
27
|
+
headless: z.ZodOptional<z.ZodBoolean>;
|
|
28
|
+
userAgent: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
29
|
+
}, "strip", z.ZodTypeAny, {
|
|
30
|
+
ignoreCertificateErrors?: boolean | undefined;
|
|
31
|
+
disableWebSecurity?: boolean | undefined;
|
|
32
|
+
gl?: "swangle" | "angle" | "egl" | "swiftshader" | null | undefined;
|
|
33
|
+
headless?: boolean | undefined;
|
|
34
|
+
userAgent?: string | null | undefined;
|
|
35
|
+
}, {
|
|
36
|
+
ignoreCertificateErrors?: boolean | undefined;
|
|
37
|
+
disableWebSecurity?: boolean | undefined;
|
|
38
|
+
gl?: "swangle" | "angle" | "egl" | "swiftshader" | null | undefined;
|
|
39
|
+
headless?: boolean | undefined;
|
|
40
|
+
userAgent?: string | null | undefined;
|
|
41
|
+
}>>;
|
|
42
|
+
muted: z.ZodBoolean;
|
|
43
|
+
outputBucket: z.ZodString;
|
|
44
|
+
outName: z.ZodOptional<z.ZodString>;
|
|
45
|
+
privacy: z.ZodOptional<z.ZodEnum<["public", "private"]>>;
|
|
46
|
+
logLevel: z.ZodEnum<["verbose", "info", "warn", "error"]>;
|
|
47
|
+
delayRenderTimeoutInMilliseconds: z.ZodNumber;
|
|
48
|
+
concurrency: z.ZodNullable<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
|
|
49
|
+
enforceAudioTrack: z.ZodBoolean;
|
|
50
|
+
preferLossless: z.ZodBoolean;
|
|
51
|
+
}, "strip", z.ZodTypeAny, {
|
|
52
|
+
type: "media";
|
|
53
|
+
serveUrl: string;
|
|
54
|
+
composition: string;
|
|
55
|
+
codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif";
|
|
56
|
+
serializedInputPropsWithCustomSchema: string;
|
|
57
|
+
jpegQuality: number;
|
|
58
|
+
audioCodec: "mp3" | "aac" | "pcm-16" | "opus" | null;
|
|
59
|
+
audioBitrate: string | null;
|
|
60
|
+
videoBitrate: string | null;
|
|
61
|
+
crf: number | null;
|
|
62
|
+
pixelFormat: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
|
|
63
|
+
imageFormat: "png" | "jpeg" | "none";
|
|
64
|
+
scale: number;
|
|
65
|
+
proResProfile: "4444-xq" | "4444" | "hq" | "standard" | "light" | "proxy" | null;
|
|
66
|
+
everyNthFrame: number;
|
|
67
|
+
numberOfGifLoops: number | null;
|
|
68
|
+
frameRange: ((number | [number, number]) & (number | [number, number] | undefined)) | null;
|
|
69
|
+
envVariables: Record<string, string>;
|
|
70
|
+
muted: boolean;
|
|
71
|
+
outputBucket: string;
|
|
72
|
+
logLevel: "error" | "verbose" | "info" | "warn";
|
|
73
|
+
delayRenderTimeoutInMilliseconds: number;
|
|
74
|
+
concurrency: string | number | null;
|
|
75
|
+
enforceAudioTrack: boolean;
|
|
76
|
+
preferLossless: boolean;
|
|
77
|
+
forceHeight?: number | null | undefined;
|
|
78
|
+
forceWidth?: number | null | undefined;
|
|
79
|
+
chromiumOptions?: {
|
|
80
|
+
ignoreCertificateErrors?: boolean | undefined;
|
|
81
|
+
disableWebSecurity?: boolean | undefined;
|
|
82
|
+
gl?: "swangle" | "angle" | "egl" | "swiftshader" | null | undefined;
|
|
83
|
+
headless?: boolean | undefined;
|
|
84
|
+
userAgent?: string | null | undefined;
|
|
85
|
+
} | undefined;
|
|
86
|
+
outName?: string | undefined;
|
|
87
|
+
privacy?: "public" | "private" | undefined;
|
|
88
|
+
}, {
|
|
89
|
+
type: "media";
|
|
90
|
+
serveUrl: string;
|
|
91
|
+
composition: string;
|
|
92
|
+
codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif";
|
|
93
|
+
serializedInputPropsWithCustomSchema: string;
|
|
94
|
+
jpegQuality: number;
|
|
95
|
+
audioCodec: "mp3" | "aac" | "pcm-16" | "opus" | null;
|
|
96
|
+
audioBitrate: string | null;
|
|
97
|
+
videoBitrate: string | null;
|
|
98
|
+
crf: number | null;
|
|
99
|
+
pixelFormat: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
|
|
100
|
+
imageFormat: "png" | "jpeg" | "none";
|
|
101
|
+
scale: number;
|
|
102
|
+
proResProfile: "4444-xq" | "4444" | "hq" | "standard" | "light" | "proxy" | null;
|
|
103
|
+
everyNthFrame: number;
|
|
104
|
+
numberOfGifLoops: number | null;
|
|
105
|
+
frameRange: ((number | [number, number]) & (number | [number, number] | undefined)) | null;
|
|
106
|
+
envVariables: Record<string, string>;
|
|
107
|
+
muted: boolean;
|
|
108
|
+
outputBucket: string;
|
|
109
|
+
logLevel: "error" | "verbose" | "info" | "warn";
|
|
110
|
+
delayRenderTimeoutInMilliseconds: number;
|
|
111
|
+
concurrency: string | number | null;
|
|
112
|
+
enforceAudioTrack: boolean;
|
|
113
|
+
preferLossless: boolean;
|
|
114
|
+
forceHeight?: number | null | undefined;
|
|
115
|
+
forceWidth?: number | null | undefined;
|
|
116
|
+
chromiumOptions?: {
|
|
117
|
+
ignoreCertificateErrors?: boolean | undefined;
|
|
118
|
+
disableWebSecurity?: boolean | undefined;
|
|
119
|
+
gl?: "swangle" | "angle" | "egl" | "swiftshader" | null | undefined;
|
|
120
|
+
headless?: boolean | undefined;
|
|
121
|
+
userAgent?: string | null | undefined;
|
|
122
|
+
} | undefined;
|
|
123
|
+
outName?: string | undefined;
|
|
124
|
+
privacy?: "public" | "private" | undefined;
|
|
125
|
+
}>, z.ZodObject<{
|
|
126
|
+
type: z.ZodLiteral<"still">;
|
|
127
|
+
serveUrl: z.ZodString;
|
|
128
|
+
composition: z.ZodString;
|
|
129
|
+
forceHeight: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
|
|
130
|
+
forceWidth: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
|
|
131
|
+
serializedInputPropsWithCustomSchema: z.ZodString;
|
|
132
|
+
jpegQuality: z.ZodOptional<z.ZodNumber>;
|
|
133
|
+
imageFormat: z.ZodEnum<["png", "jpeg", "pdf", "webp"]>;
|
|
134
|
+
scale: z.ZodNumber;
|
|
135
|
+
privacy: z.ZodEnum<["public", "private"]>;
|
|
136
|
+
envVariables: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
137
|
+
chromiumOptions: z.ZodOptional<z.ZodObject<{
|
|
138
|
+
ignoreCertificateErrors: z.ZodOptional<z.ZodBoolean>;
|
|
139
|
+
disableWebSecurity: z.ZodOptional<z.ZodBoolean>;
|
|
140
|
+
gl: z.ZodNullable<z.ZodOptional<z.ZodEnum<["swangle", "angle", "egl", "swiftshader"]>>>;
|
|
141
|
+
headless: z.ZodOptional<z.ZodBoolean>;
|
|
142
|
+
userAgent: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
143
|
+
}, "strip", z.ZodTypeAny, {
|
|
144
|
+
ignoreCertificateErrors?: boolean | undefined;
|
|
145
|
+
disableWebSecurity?: boolean | undefined;
|
|
146
|
+
gl?: "swangle" | "angle" | "egl" | "swiftshader" | null | undefined;
|
|
147
|
+
headless?: boolean | undefined;
|
|
148
|
+
userAgent?: string | null | undefined;
|
|
149
|
+
}, {
|
|
150
|
+
ignoreCertificateErrors?: boolean | undefined;
|
|
151
|
+
disableWebSecurity?: boolean | undefined;
|
|
152
|
+
gl?: "swangle" | "angle" | "egl" | "swiftshader" | null | undefined;
|
|
153
|
+
headless?: boolean | undefined;
|
|
154
|
+
userAgent?: string | null | undefined;
|
|
155
|
+
}>>;
|
|
156
|
+
outputBucket: z.ZodString;
|
|
157
|
+
outName: z.ZodOptional<z.ZodString>;
|
|
158
|
+
frame: z.ZodNumber;
|
|
159
|
+
delayRenderTimeoutInMilliseconds: z.ZodNumber;
|
|
160
|
+
logLevel: z.ZodEnum<["verbose", "info", "warn", "error"]>;
|
|
161
|
+
}, "strip", z.ZodTypeAny, {
|
|
162
|
+
type: "still";
|
|
163
|
+
serveUrl: string;
|
|
164
|
+
composition: string;
|
|
165
|
+
serializedInputPropsWithCustomSchema: string;
|
|
166
|
+
imageFormat: "png" | "jpeg" | "pdf" | "webp";
|
|
167
|
+
scale: number;
|
|
168
|
+
envVariables: Record<string, string>;
|
|
169
|
+
outputBucket: string;
|
|
170
|
+
privacy: "public" | "private";
|
|
171
|
+
logLevel: "error" | "verbose" | "info" | "warn";
|
|
172
|
+
delayRenderTimeoutInMilliseconds: number;
|
|
173
|
+
frame: number;
|
|
174
|
+
forceHeight?: number | null | undefined;
|
|
175
|
+
forceWidth?: number | null | undefined;
|
|
176
|
+
jpegQuality?: number | undefined;
|
|
177
|
+
chromiumOptions?: {
|
|
178
|
+
ignoreCertificateErrors?: boolean | undefined;
|
|
179
|
+
disableWebSecurity?: boolean | undefined;
|
|
180
|
+
gl?: "swangle" | "angle" | "egl" | "swiftshader" | null | undefined;
|
|
181
|
+
headless?: boolean | undefined;
|
|
182
|
+
userAgent?: string | null | undefined;
|
|
183
|
+
} | undefined;
|
|
184
|
+
outName?: string | undefined;
|
|
185
|
+
}, {
|
|
186
|
+
type: "still";
|
|
187
|
+
serveUrl: string;
|
|
188
|
+
composition: string;
|
|
189
|
+
serializedInputPropsWithCustomSchema: string;
|
|
190
|
+
imageFormat: "png" | "jpeg" | "pdf" | "webp";
|
|
191
|
+
scale: number;
|
|
192
|
+
envVariables: Record<string, string>;
|
|
193
|
+
outputBucket: string;
|
|
194
|
+
privacy: "public" | "private";
|
|
195
|
+
logLevel: "error" | "verbose" | "info" | "warn";
|
|
196
|
+
delayRenderTimeoutInMilliseconds: number;
|
|
197
|
+
frame: number;
|
|
198
|
+
forceHeight?: number | null | undefined;
|
|
199
|
+
forceWidth?: number | null | undefined;
|
|
200
|
+
jpegQuality?: number | undefined;
|
|
201
|
+
chromiumOptions?: {
|
|
202
|
+
ignoreCertificateErrors?: boolean | undefined;
|
|
203
|
+
disableWebSecurity?: boolean | undefined;
|
|
204
|
+
gl?: "swangle" | "angle" | "egl" | "swiftshader" | null | undefined;
|
|
205
|
+
headless?: boolean | undefined;
|
|
206
|
+
userAgent?: string | null | undefined;
|
|
207
|
+
} | undefined;
|
|
208
|
+
outName?: string | undefined;
|
|
209
|
+
}>]>;
|
|
210
|
+
declare const renderFailResponsePayload: z.ZodObject<{
|
|
211
|
+
status: z.ZodLiteral<"error">;
|
|
212
|
+
error: z.ZodString;
|
|
213
|
+
stack: z.ZodString;
|
|
214
|
+
}, "strip", z.ZodTypeAny, {
|
|
215
|
+
status: "error";
|
|
216
|
+
error: string;
|
|
217
|
+
stack: string;
|
|
218
|
+
}, {
|
|
219
|
+
status: "error";
|
|
220
|
+
error: string;
|
|
221
|
+
stack: string;
|
|
222
|
+
}>;
|
|
223
|
+
declare const renderStillOnCloudrunResponsePayload: z.ZodObject<{
|
|
224
|
+
status: z.ZodLiteral<"success">;
|
|
225
|
+
publicUrl: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
226
|
+
cloudStorageUri: z.ZodString;
|
|
227
|
+
size: z.ZodNumber;
|
|
228
|
+
bucketName: z.ZodString;
|
|
229
|
+
renderId: z.ZodString;
|
|
230
|
+
privacy: z.ZodEnum<["public-read", "project-private"]>;
|
|
231
|
+
}, "strip", z.ZodTypeAny, {
|
|
232
|
+
status: "success";
|
|
233
|
+
privacy: "public-read" | "project-private";
|
|
234
|
+
cloudStorageUri: string;
|
|
235
|
+
size: number;
|
|
236
|
+
bucketName: string;
|
|
237
|
+
renderId: string;
|
|
238
|
+
publicUrl?: string | null | undefined;
|
|
239
|
+
}, {
|
|
240
|
+
status: "success";
|
|
241
|
+
privacy: "public-read" | "project-private";
|
|
242
|
+
cloudStorageUri: string;
|
|
243
|
+
size: number;
|
|
244
|
+
bucketName: string;
|
|
245
|
+
renderId: string;
|
|
246
|
+
publicUrl?: string | null | undefined;
|
|
247
|
+
}>;
|
|
248
|
+
declare const renderMediaOnCloudrunResponsePayload: z.ZodObject<{
|
|
249
|
+
status: z.ZodLiteral<"success">;
|
|
250
|
+
publicUrl: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
251
|
+
cloudStorageUri: z.ZodString;
|
|
252
|
+
size: z.ZodNumber;
|
|
253
|
+
bucketName: z.ZodString;
|
|
254
|
+
renderId: z.ZodString;
|
|
255
|
+
privacy: z.ZodEnum<["public-read", "project-private"]>;
|
|
256
|
+
}, "strip", z.ZodTypeAny, {
|
|
257
|
+
status: "success";
|
|
258
|
+
privacy: "public-read" | "project-private";
|
|
259
|
+
cloudStorageUri: string;
|
|
260
|
+
size: number;
|
|
261
|
+
bucketName: string;
|
|
262
|
+
renderId: string;
|
|
263
|
+
publicUrl?: string | null | undefined;
|
|
264
|
+
}, {
|
|
265
|
+
status: "success";
|
|
266
|
+
privacy: "public-read" | "project-private";
|
|
267
|
+
cloudStorageUri: string;
|
|
268
|
+
size: number;
|
|
269
|
+
bucketName: string;
|
|
270
|
+
renderId: string;
|
|
271
|
+
publicUrl?: string | null | undefined;
|
|
272
|
+
}>;
|
|
273
|
+
declare const cloudRunCrashResponse: z.ZodObject<{
|
|
274
|
+
status: z.ZodLiteral<"crash">;
|
|
275
|
+
cloudRunEndpoint: z.ZodString;
|
|
276
|
+
message: z.ZodLiteral<"Service crashed without sending a response. Check the logs in GCP console.">;
|
|
277
|
+
requestStartTime: z.ZodString;
|
|
278
|
+
requestCrashTime: z.ZodString;
|
|
279
|
+
requestElapsedTimeInSeconds: z.ZodNumber;
|
|
280
|
+
}, "strip", z.ZodTypeAny, {
|
|
281
|
+
message: "Service crashed without sending a response. Check the logs in GCP console.";
|
|
282
|
+
status: "crash";
|
|
283
|
+
cloudRunEndpoint: string;
|
|
284
|
+
requestStartTime: string;
|
|
285
|
+
requestCrashTime: string;
|
|
286
|
+
requestElapsedTimeInSeconds: number;
|
|
287
|
+
}, {
|
|
288
|
+
message: "Service crashed without sending a response. Check the logs in GCP console.";
|
|
289
|
+
status: "crash";
|
|
290
|
+
cloudRunEndpoint: string;
|
|
291
|
+
requestStartTime: string;
|
|
292
|
+
requestCrashTime: string;
|
|
293
|
+
requestElapsedTimeInSeconds: number;
|
|
294
|
+
}>;
|
|
295
|
+
export type CloudRunPayloadType = z.infer<typeof CloudRunPayload>;
|
|
296
|
+
export type RenderStillOnCloudrunOutput = z.infer<typeof renderStillOnCloudrunResponsePayload>;
|
|
297
|
+
export type RenderMediaOnCloudrunOutput = z.infer<typeof renderMediaOnCloudrunResponsePayload>;
|
|
298
|
+
export type ErrorResponsePayload = z.infer<typeof renderFailResponsePayload>;
|
|
299
|
+
export type CloudRunCrashResponse = z.infer<typeof cloudRunCrashResponse>;
|
|
300
|
+
export {};
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CloudRunPayload = void 0;
|
|
4
|
+
const renderer_1 = require("@remotion/renderer");
|
|
5
|
+
const client_1 = require("@remotion/renderer/client");
|
|
6
|
+
const zod_1 = require("zod");
|
|
7
|
+
const codec = zod_1.z.enum(renderer_1.RenderInternals.validCodecs);
|
|
8
|
+
const audioCodec = zod_1.z.enum(renderer_1.RenderInternals.validAudioCodecs);
|
|
9
|
+
const pixelFormat = zod_1.z.enum(renderer_1.RenderInternals.validPixelFormats);
|
|
10
|
+
const videoImageFormat = zod_1.z.enum(renderer_1.RenderInternals.validVideoImageFormats);
|
|
11
|
+
const stillImageFormat = zod_1.z.enum(renderer_1.RenderInternals.validStillImageFormats);
|
|
12
|
+
const proResProfile = zod_1.z.enum(client_1.BrowserSafeApis.proResProfileOptions).nullable();
|
|
13
|
+
const chromiumOptions = zod_1.z.object({
|
|
14
|
+
ignoreCertificateErrors: zod_1.z.boolean().optional(),
|
|
15
|
+
disableWebSecurity: zod_1.z.boolean().optional(),
|
|
16
|
+
gl: zod_1.z.enum(renderer_1.RenderInternals.validOpenGlRenderers).optional().nullable(),
|
|
17
|
+
headless: zod_1.z.boolean().optional(),
|
|
18
|
+
userAgent: zod_1.z.string().optional().nullable(),
|
|
19
|
+
});
|
|
20
|
+
const logLevel = zod_1.z.enum(renderer_1.RenderInternals.logLevels);
|
|
21
|
+
exports.CloudRunPayload = zod_1.z.discriminatedUnion('type', [
|
|
22
|
+
zod_1.z.object({
|
|
23
|
+
type: zod_1.z.literal('media'),
|
|
24
|
+
serveUrl: zod_1.z.string(),
|
|
25
|
+
composition: zod_1.z.string(),
|
|
26
|
+
forceHeight: zod_1.z.number().optional().nullable(),
|
|
27
|
+
forceWidth: zod_1.z.number().optional().nullable(),
|
|
28
|
+
codec,
|
|
29
|
+
serializedInputPropsWithCustomSchema: zod_1.z.string(),
|
|
30
|
+
jpegQuality: zod_1.z.number(),
|
|
31
|
+
audioCodec: audioCodec.nullable(),
|
|
32
|
+
audioBitrate: zod_1.z.string().nullable(),
|
|
33
|
+
videoBitrate: zod_1.z.string().nullable(),
|
|
34
|
+
crf: zod_1.z.number().nullable(),
|
|
35
|
+
pixelFormat,
|
|
36
|
+
imageFormat: videoImageFormat,
|
|
37
|
+
scale: zod_1.z.number(),
|
|
38
|
+
proResProfile,
|
|
39
|
+
everyNthFrame: zod_1.z.number(),
|
|
40
|
+
numberOfGifLoops: zod_1.z.number().nullable(),
|
|
41
|
+
frameRange: zod_1.z.tuple([zod_1.z.number(), zod_1.z.number()]).or(zod_1.z.number()).nullable(),
|
|
42
|
+
envVariables: zod_1.z.record(zod_1.z.string()),
|
|
43
|
+
chromiumOptions: chromiumOptions.optional(),
|
|
44
|
+
muted: zod_1.z.boolean(),
|
|
45
|
+
outputBucket: zod_1.z.string(),
|
|
46
|
+
outName: zod_1.z.string().optional(),
|
|
47
|
+
privacy: zod_1.z.enum(['public', 'private']).optional(),
|
|
48
|
+
logLevel,
|
|
49
|
+
delayRenderTimeoutInMilliseconds: zod_1.z.number(),
|
|
50
|
+
concurrency: zod_1.z.number().or(zod_1.z.string()).nullable(),
|
|
51
|
+
enforceAudioTrack: zod_1.z.boolean(),
|
|
52
|
+
preferLossless: zod_1.z.boolean(),
|
|
53
|
+
}),
|
|
54
|
+
zod_1.z.object({
|
|
55
|
+
type: zod_1.z.literal('still'),
|
|
56
|
+
serveUrl: zod_1.z.string(),
|
|
57
|
+
composition: zod_1.z.string(),
|
|
58
|
+
forceHeight: zod_1.z.number().optional().nullable(),
|
|
59
|
+
forceWidth: zod_1.z.number().optional().nullable(),
|
|
60
|
+
serializedInputPropsWithCustomSchema: zod_1.z.string(),
|
|
61
|
+
jpegQuality: zod_1.z.number().optional(),
|
|
62
|
+
imageFormat: stillImageFormat,
|
|
63
|
+
scale: zod_1.z.number(),
|
|
64
|
+
privacy: zod_1.z.enum(['public', 'private']),
|
|
65
|
+
envVariables: zod_1.z.record(zod_1.z.string()),
|
|
66
|
+
chromiumOptions: chromiumOptions.optional(),
|
|
67
|
+
outputBucket: zod_1.z.string(),
|
|
68
|
+
outName: zod_1.z.string().optional(),
|
|
69
|
+
frame: zod_1.z.number(),
|
|
70
|
+
delayRenderTimeoutInMilliseconds: zod_1.z.number(),
|
|
71
|
+
logLevel,
|
|
72
|
+
}),
|
|
73
|
+
]);
|
|
74
|
+
const renderFailResponsePayload = zod_1.z.object({
|
|
75
|
+
status: zod_1.z.literal('error'),
|
|
76
|
+
error: zod_1.z.string(),
|
|
77
|
+
stack: zod_1.z.string(),
|
|
78
|
+
});
|
|
79
|
+
const renderStillOnCloudrunResponsePayload = zod_1.z.object({
|
|
80
|
+
status: zod_1.z.literal('success'),
|
|
81
|
+
publicUrl: zod_1.z.string().optional().nullable(),
|
|
82
|
+
cloudStorageUri: zod_1.z.string(),
|
|
83
|
+
size: zod_1.z.number(),
|
|
84
|
+
bucketName: zod_1.z.string(),
|
|
85
|
+
renderId: zod_1.z.string(),
|
|
86
|
+
privacy: zod_1.z.enum(['public-read', 'project-private']),
|
|
87
|
+
});
|
|
88
|
+
const renderMediaOnCloudrunResponsePayload = zod_1.z.object({
|
|
89
|
+
status: zod_1.z.literal('success'),
|
|
90
|
+
publicUrl: zod_1.z.string().optional().nullable(),
|
|
91
|
+
cloudStorageUri: zod_1.z.string(),
|
|
92
|
+
size: zod_1.z.number(),
|
|
93
|
+
bucketName: zod_1.z.string(),
|
|
94
|
+
renderId: zod_1.z.string(),
|
|
95
|
+
privacy: zod_1.z.enum(['public-read', 'project-private']),
|
|
96
|
+
});
|
|
97
|
+
const cloudRunCrashResponse = zod_1.z.object({
|
|
98
|
+
status: zod_1.z.literal('crash'),
|
|
99
|
+
cloudRunEndpoint: zod_1.z.string(),
|
|
100
|
+
message: zod_1.z.literal('Service crashed without sending a response. Check the logs in GCP console.'),
|
|
101
|
+
requestStartTime: zod_1.z.string().datetime(),
|
|
102
|
+
requestCrashTime: zod_1.z.string().datetime(),
|
|
103
|
+
requestElapsedTimeInSeconds: zod_1.z.number(),
|
|
104
|
+
});
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renderOnCloudRun = void 0;
|
|
4
|
+
const renderer_1 = require("@remotion/renderer");
|
|
5
|
+
const log_1 = require("../cli/log");
|
|
6
|
+
const payloads_1 = require("./helpers/payloads");
|
|
7
|
+
const render_media_single_thread_1 = require("./render-media-single-thread");
|
|
8
|
+
const render_still_single_thread_1 = require("./render-still-single-thread");
|
|
9
|
+
const renderOnCloudRun = async (req, res) => {
|
|
10
|
+
var _a;
|
|
11
|
+
try {
|
|
12
|
+
log_1.Log.info('renderOnCloudRun', req.body);
|
|
13
|
+
const body = payloads_1.CloudRunPayload.parse(req.body);
|
|
14
|
+
const renderType = body.type;
|
|
15
|
+
renderer_1.RenderInternals.setLogLevel(body.logLevel);
|
|
16
|
+
switch (renderType) {
|
|
17
|
+
case 'media':
|
|
18
|
+
await (0, render_media_single_thread_1.renderMediaSingleThread)(body, res);
|
|
19
|
+
break;
|
|
20
|
+
case 'still':
|
|
21
|
+
await (0, render_still_single_thread_1.renderStillSingleThread)(body, res);
|
|
22
|
+
break;
|
|
23
|
+
default:
|
|
24
|
+
res
|
|
25
|
+
.status(400)
|
|
26
|
+
.send('Invalid render type, must be either "media" or "still"');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
log_1.Log.error('Error while rendering', err);
|
|
31
|
+
const response = {
|
|
32
|
+
error: err.message,
|
|
33
|
+
status: 'error',
|
|
34
|
+
stack: (_a = err.stack) !== null && _a !== void 0 ? _a : '',
|
|
35
|
+
};
|
|
36
|
+
res.status(500).send(JSON.stringify(response));
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
exports.renderOnCloudRun = renderOnCloudRun;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renderMediaSingleThread = void 0;
|
|
4
|
+
const storage_1 = require("@google-cloud/storage");
|
|
5
|
+
const renderer_1 = require("@remotion/renderer");
|
|
6
|
+
const remotion_1 = require("remotion");
|
|
7
|
+
const random_hash_1 = require("../shared/random-hash");
|
|
8
|
+
const get_composition_from_body_1 = require("./helpers/get-composition-from-body");
|
|
9
|
+
const renderMediaSingleThread = async (body, res) => {
|
|
10
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
11
|
+
if (body.type !== 'media') {
|
|
12
|
+
throw new Error('expected type media');
|
|
13
|
+
}
|
|
14
|
+
const composition = await (0, get_composition_from_body_1.getCompositionFromBody)(body);
|
|
15
|
+
const defaultOutName = `out.${renderer_1.RenderInternals.getFileExtensionFromCodec(body.codec, body.audioCodec)}`;
|
|
16
|
+
const tempFilePath = `/tmp/${defaultOutName}`;
|
|
17
|
+
const renderId = (0, random_hash_1.randomHash)({ randomInTests: true });
|
|
18
|
+
let previousProgress = 2;
|
|
19
|
+
const onProgress = ({ progress }) => {
|
|
20
|
+
if (previousProgress !== progress) {
|
|
21
|
+
res.write(JSON.stringify({ onProgress: progress }) + '\n');
|
|
22
|
+
previousProgress = progress;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
res.writeHead(200, { 'Content-Type': 'text/html' });
|
|
26
|
+
const actualChromiumOptions = {
|
|
27
|
+
...body.chromiumOptions,
|
|
28
|
+
// Override the `null` value, which might come from CLI with swANGLE
|
|
29
|
+
gl: (_b = (_a = body.chromiumOptions) === null || _a === void 0 ? void 0 : _a.gl) !== null && _b !== void 0 ? _b : 'swangle',
|
|
30
|
+
};
|
|
31
|
+
await renderer_1.RenderInternals.internalRenderMedia({
|
|
32
|
+
composition: {
|
|
33
|
+
...composition,
|
|
34
|
+
height: (_c = body.forceHeight) !== null && _c !== void 0 ? _c : composition.height,
|
|
35
|
+
width: (_d = body.forceWidth) !== null && _d !== void 0 ? _d : composition.width,
|
|
36
|
+
},
|
|
37
|
+
serveUrl: body.serveUrl,
|
|
38
|
+
codec: body.codec,
|
|
39
|
+
outputLocation: tempFilePath,
|
|
40
|
+
serializedInputPropsWithCustomSchema: body.serializedInputPropsWithCustomSchema,
|
|
41
|
+
serializedResolvedPropsWithCustomSchema: remotion_1.Internals.serializeJSONWithDate({
|
|
42
|
+
data: composition.props,
|
|
43
|
+
indent: undefined,
|
|
44
|
+
staticBase: null,
|
|
45
|
+
}).serializedString,
|
|
46
|
+
jpegQuality: body.jpegQuality,
|
|
47
|
+
audioCodec: body.audioCodec,
|
|
48
|
+
audioBitrate: body.audioBitrate,
|
|
49
|
+
videoBitrate: body.videoBitrate,
|
|
50
|
+
crf: body.crf,
|
|
51
|
+
pixelFormat: body.pixelFormat,
|
|
52
|
+
imageFormat: body.imageFormat,
|
|
53
|
+
scale: body.scale,
|
|
54
|
+
proResProfile: (_e = body.proResProfile) !== null && _e !== void 0 ? _e : undefined,
|
|
55
|
+
everyNthFrame: body.everyNthFrame,
|
|
56
|
+
numberOfGifLoops: body.numberOfGifLoops,
|
|
57
|
+
onProgress,
|
|
58
|
+
frameRange: body.frameRange,
|
|
59
|
+
envVariables: body.envVariables,
|
|
60
|
+
chromiumOptions: actualChromiumOptions,
|
|
61
|
+
muted: body.muted,
|
|
62
|
+
logLevel: body.logLevel,
|
|
63
|
+
browserExecutable: null,
|
|
64
|
+
timeoutInMilliseconds: body.delayRenderTimeoutInMilliseconds,
|
|
65
|
+
cancelSignal: undefined,
|
|
66
|
+
concurrency: (_f = body.concurrency) !== null && _f !== void 0 ? _f : '100%',
|
|
67
|
+
disallowParallelEncoding: false,
|
|
68
|
+
enforceAudioTrack: body.enforceAudioTrack,
|
|
69
|
+
ffmpegOverride: undefined,
|
|
70
|
+
indent: false,
|
|
71
|
+
onBrowserLog: null,
|
|
72
|
+
onCtrlCExit: () => undefined,
|
|
73
|
+
onDownload: () => undefined,
|
|
74
|
+
onStart: () => undefined,
|
|
75
|
+
overwrite: true,
|
|
76
|
+
port: null,
|
|
77
|
+
preferLossless: body.preferLossless,
|
|
78
|
+
puppeteerInstance: undefined,
|
|
79
|
+
server: undefined,
|
|
80
|
+
});
|
|
81
|
+
const storage = new storage_1.Storage();
|
|
82
|
+
const publicUpload = body.privacy === 'public' || !body.privacy;
|
|
83
|
+
const uploadedResponse = await storage
|
|
84
|
+
.bucket(body.outputBucket)
|
|
85
|
+
.upload(tempFilePath, {
|
|
86
|
+
destination: `renders/${renderId}/${(_g = body.outName) !== null && _g !== void 0 ? _g : defaultOutName}`,
|
|
87
|
+
predefinedAcl: publicUpload ? 'publicRead' : 'projectPrivate',
|
|
88
|
+
});
|
|
89
|
+
const uploadedFile = uploadedResponse[0];
|
|
90
|
+
const renderMetadata = await uploadedFile.getMetadata();
|
|
91
|
+
const responseData = {
|
|
92
|
+
status: 'success',
|
|
93
|
+
publicUrl: publicUpload ? uploadedFile.publicUrl() : null,
|
|
94
|
+
cloudStorageUri: uploadedFile.cloudStorageURI.href,
|
|
95
|
+
size: renderMetadata[0].size,
|
|
96
|
+
bucketName: body.outputBucket,
|
|
97
|
+
renderId,
|
|
98
|
+
privacy: publicUpload ? 'public-read' : 'project-private',
|
|
99
|
+
};
|
|
100
|
+
renderer_1.RenderInternals.Log.info('Render Completed:', responseData);
|
|
101
|
+
res.end(JSON.stringify({ response: responseData }));
|
|
102
|
+
};
|
|
103
|
+
exports.renderMediaSingleThread = renderMediaSingleThread;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renderStillSingleThread = void 0;
|
|
4
|
+
const storage_1 = require("@google-cloud/storage");
|
|
5
|
+
const renderer_1 = require("@remotion/renderer");
|
|
6
|
+
const remotion_1 = require("remotion");
|
|
7
|
+
const log_1 = require("../cli/log");
|
|
8
|
+
const random_hash_1 = require("../shared/random-hash");
|
|
9
|
+
const get_composition_from_body_1 = require("./helpers/get-composition-from-body");
|
|
10
|
+
const renderStillSingleThread = async (body, res) => {
|
|
11
|
+
var _a, _b, _c, _d, _e, _f;
|
|
12
|
+
if (body.type !== 'still') {
|
|
13
|
+
throw new Error('expected type still');
|
|
14
|
+
}
|
|
15
|
+
log_1.Log.verbose('Rendering still frame', body);
|
|
16
|
+
const composition = await (0, get_composition_from_body_1.getCompositionFromBody)(body);
|
|
17
|
+
log_1.Log.verbose('Composition loaded', composition);
|
|
18
|
+
const tempFilePath = '/tmp/still.png';
|
|
19
|
+
const renderId = (0, random_hash_1.randomHash)({ randomInTests: true });
|
|
20
|
+
const actualChromiumOptions = {
|
|
21
|
+
...body.chromiumOptions,
|
|
22
|
+
// Override the `null` value, which might come from CLI with swANGLE
|
|
23
|
+
gl: (_b = (_a = body.chromiumOptions) === null || _a === void 0 ? void 0 : _a.gl) !== null && _b !== void 0 ? _b : 'swangle',
|
|
24
|
+
};
|
|
25
|
+
await renderer_1.RenderInternals.internalRenderStill({
|
|
26
|
+
composition: {
|
|
27
|
+
...composition,
|
|
28
|
+
height: (_c = body.forceHeight) !== null && _c !== void 0 ? _c : composition.height,
|
|
29
|
+
width: (_d = body.forceWidth) !== null && _d !== void 0 ? _d : composition.width,
|
|
30
|
+
},
|
|
31
|
+
serveUrl: body.serveUrl,
|
|
32
|
+
output: tempFilePath,
|
|
33
|
+
serializedInputPropsWithCustomSchema: body.serializedInputPropsWithCustomSchema,
|
|
34
|
+
serializedResolvedPropsWithCustomSchema: remotion_1.Internals.serializeJSONWithDate({
|
|
35
|
+
data: composition.props,
|
|
36
|
+
indent: undefined,
|
|
37
|
+
staticBase: null,
|
|
38
|
+
}).serializedString,
|
|
39
|
+
jpegQuality: (_e = body.jpegQuality) !== null && _e !== void 0 ? _e : renderer_1.RenderInternals.DEFAULT_JPEG_QUALITY,
|
|
40
|
+
imageFormat: body.imageFormat,
|
|
41
|
+
scale: body.scale,
|
|
42
|
+
envVariables: body.envVariables,
|
|
43
|
+
chromiumOptions: actualChromiumOptions,
|
|
44
|
+
frame: body.frame,
|
|
45
|
+
logLevel: body.logLevel,
|
|
46
|
+
browserExecutable: null,
|
|
47
|
+
cancelSignal: null,
|
|
48
|
+
indent: false,
|
|
49
|
+
timeoutInMilliseconds: body.delayRenderTimeoutInMilliseconds,
|
|
50
|
+
onBrowserLog: null,
|
|
51
|
+
onDownload: null,
|
|
52
|
+
overwrite: true,
|
|
53
|
+
port: null,
|
|
54
|
+
puppeteerInstance: null,
|
|
55
|
+
server: undefined,
|
|
56
|
+
});
|
|
57
|
+
log_1.Log.info('Still rendered');
|
|
58
|
+
const storage = new storage_1.Storage();
|
|
59
|
+
const publicUpload = body.privacy === 'public' || !body.privacy;
|
|
60
|
+
const uploadedResponse = await storage
|
|
61
|
+
.bucket(body.outputBucket)
|
|
62
|
+
.upload(tempFilePath, {
|
|
63
|
+
destination: `renders/${renderId}/${(_f = body.outName) !== null && _f !== void 0 ? _f : 'out.png'}`,
|
|
64
|
+
predefinedAcl: publicUpload ? 'publicRead' : 'projectPrivate',
|
|
65
|
+
});
|
|
66
|
+
log_1.Log.info('Still uploaded');
|
|
67
|
+
const uploadedFile = uploadedResponse[0];
|
|
68
|
+
const renderMetadata = await uploadedFile.getMetadata();
|
|
69
|
+
const responseData = {
|
|
70
|
+
publicUrl: uploadedFile.publicUrl(),
|
|
71
|
+
cloudStorageUri: uploadedFile.cloudStorageURI.href,
|
|
72
|
+
size: renderMetadata[0].size,
|
|
73
|
+
bucketName: body.outputBucket,
|
|
74
|
+
renderId,
|
|
75
|
+
status: 'success',
|
|
76
|
+
privacy: publicUpload ? 'public-read' : 'project-private',
|
|
77
|
+
};
|
|
78
|
+
renderer_1.RenderInternals.Log.info('Render Completed:', responseData);
|
|
79
|
+
const jsonContent = JSON.stringify(responseData);
|
|
80
|
+
res.end(jsonContent);
|
|
81
|
+
};
|
|
82
|
+
exports.renderStillSingleThread = renderStillSingleThread;
|