@remotion/renderer 4.0.3 → 4.0.5
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/dist/assets/download-and-map-assets-to-file.d.ts +2 -4
- package/dist/assets/download-and-map-assets-to-file.js +14 -10
- package/dist/assets/download-map.d.ts +4 -0
- package/dist/assets/download-map.js +3 -0
- package/dist/audio-codec.d.ts +1 -1
- package/dist/client.d.ts +4 -9
- package/dist/get-compositions.js +5 -1
- package/dist/get-local-browser-executable.js +15 -0
- package/dist/index.d.ts +15 -21
- package/dist/logger.d.ts +1 -1
- package/dist/offthread-video-server.d.ts +0 -1
- package/dist/offthread-video-server.js +2 -4
- package/dist/prepare-server.d.ts +0 -2
- package/dist/prepare-server.js +6 -8
- package/dist/render-frames.js +6 -2
- package/dist/render-media.js +2 -2
- package/dist/render-still.js +2 -0
- package/dist/select-composition.d.ts +1 -1
- package/dist/select-composition.js +2 -0
- package/dist/serve-handler/index.js +1 -1
- package/dist/serve-static.d.ts +0 -2
- package/dist/serve-static.js +2 -2
- package/dist/set-props-and-env.d.ts +3 -0
- package/dist/set-props-and-env.js +29 -6
- package/package.json +9 -9
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import type { TAsset } from 'remotion';
|
|
2
|
-
import { OffthreadVideoServerEmitter } from '../offthread-video-server';
|
|
3
2
|
import type { DownloadMap } from './download-map';
|
|
4
3
|
export type RenderMediaOnDownload = (src: string) => ((progress: {
|
|
5
4
|
percent: number | null;
|
|
6
5
|
downloaded: number;
|
|
7
6
|
totalSize: number | null;
|
|
8
7
|
}) => void) | undefined | void;
|
|
9
|
-
export declare const downloadAsset: ({ src, downloadMap,
|
|
8
|
+
export declare const downloadAsset: ({ src, downloadMap, }: {
|
|
10
9
|
src: string;
|
|
11
|
-
emitter: OffthreadVideoServerEmitter;
|
|
12
10
|
downloadMap: DownloadMap;
|
|
13
11
|
}) => Promise<string>;
|
|
14
12
|
export declare const markAllAssetsAsDownloaded: (downloadMap: DownloadMap) => void;
|
|
@@ -23,4 +21,4 @@ export declare const downloadAndMapAssetsToFileUrl: ({ asset, onDownload, downlo
|
|
|
23
21
|
onDownload: RenderMediaOnDownload | null;
|
|
24
22
|
downloadMap: DownloadMap;
|
|
25
23
|
}) => Promise<TAsset>;
|
|
26
|
-
export declare const attachDownloadListenerToEmitter: (
|
|
24
|
+
export declare const attachDownloadListenerToEmitter: (downloadMap: DownloadMap, onDownload: RenderMediaOnDownload | null) => () => void;
|
|
@@ -33,7 +33,6 @@ const remotion_1 = require("remotion");
|
|
|
33
33
|
const compress_assets_1 = require("../compress-assets");
|
|
34
34
|
const ensure_output_directory_1 = require("../ensure-output-directory");
|
|
35
35
|
const mime_types_1 = require("../mime-types");
|
|
36
|
-
const offthread_video_server_1 = require("../offthread-video-server");
|
|
37
36
|
const download_file_1 = require("./download-file");
|
|
38
37
|
const sanitize_filepath_1 = require("./sanitize-filepath");
|
|
39
38
|
const waitForAssetToBeDownloaded = ({ src, downloadDir, downloadMap, }) => {
|
|
@@ -116,7 +115,7 @@ function validateBufferEncoding(potentialEncoding, dataUrl) {
|
|
|
116
115
|
throw new TypeError(errMessage);
|
|
117
116
|
}
|
|
118
117
|
}
|
|
119
|
-
const downloadAsset = async ({ src, downloadMap,
|
|
118
|
+
const downloadAsset = async ({ src, downloadMap, }) => {
|
|
120
119
|
var _a, _b, _c;
|
|
121
120
|
if ((0, compress_assets_1.isAssetCompressed)(src)) {
|
|
122
121
|
return src;
|
|
@@ -146,7 +145,7 @@ const downloadAsset = async ({ src, downloadMap, emitter, }) => {
|
|
|
146
145
|
if (process.env.NODE_ENV === 'test') {
|
|
147
146
|
console.log('Actually downloading asset', src);
|
|
148
147
|
}
|
|
149
|
-
emitter.dispatchDownload(src);
|
|
148
|
+
downloadMap.emitter.dispatchDownload(src);
|
|
150
149
|
if (src.startsWith('data:')) {
|
|
151
150
|
const [assetDetails, assetData] = src.substring('data:'.length).split(',');
|
|
152
151
|
if (!assetDetails.includes(';')) {
|
|
@@ -176,7 +175,7 @@ const downloadAsset = async ({ src, downloadMap, emitter, }) => {
|
|
|
176
175
|
const { to } = await (0, download_file_1.downloadFile)({
|
|
177
176
|
url: src,
|
|
178
177
|
onProgress: (progress) => {
|
|
179
|
-
emitter.dispatchDownloadProgress(src, progress.percent, progress.downloaded, progress.totalSize);
|
|
178
|
+
downloadMap.emitter.dispatchDownloadProgress(src, progress.percent, progress.downloaded, progress.totalSize);
|
|
180
179
|
},
|
|
181
180
|
to: (contentDisposition, contentType) => (0, exports.getSanitizedFilenameForAssetUrl)({
|
|
182
181
|
contentDisposition,
|
|
@@ -243,11 +242,9 @@ const getSanitizedFilenameForAssetUrl = ({ src, downloadDir, contentDisposition,
|
|
|
243
242
|
};
|
|
244
243
|
exports.getSanitizedFilenameForAssetUrl = getSanitizedFilenameForAssetUrl;
|
|
245
244
|
const downloadAndMapAssetsToFileUrl = async ({ asset, onDownload, downloadMap, }) => {
|
|
246
|
-
const
|
|
247
|
-
const cleanup = (0, exports.attachDownloadListenerToEmitter)(emitter, onDownload);
|
|
245
|
+
const cleanup = (0, exports.attachDownloadListenerToEmitter)(downloadMap, onDownload);
|
|
248
246
|
const newSrc = await (0, exports.downloadAsset)({
|
|
249
247
|
src: asset.src,
|
|
250
|
-
emitter,
|
|
251
248
|
downloadMap,
|
|
252
249
|
});
|
|
253
250
|
cleanup();
|
|
@@ -257,14 +254,21 @@ const downloadAndMapAssetsToFileUrl = async ({ asset, onDownload, downloadMap, }
|
|
|
257
254
|
};
|
|
258
255
|
};
|
|
259
256
|
exports.downloadAndMapAssetsToFileUrl = downloadAndMapAssetsToFileUrl;
|
|
260
|
-
const attachDownloadListenerToEmitter = (
|
|
257
|
+
const attachDownloadListenerToEmitter = (downloadMap, onDownload) => {
|
|
261
258
|
const cleanup = [];
|
|
262
259
|
if (!onDownload) {
|
|
263
260
|
return () => undefined;
|
|
264
261
|
}
|
|
265
|
-
|
|
262
|
+
if (downloadMap.downloadListeners.includes(onDownload)) {
|
|
263
|
+
return () => undefined;
|
|
264
|
+
}
|
|
265
|
+
downloadMap.downloadListeners.push(onDownload);
|
|
266
|
+
cleanup.push(() => {
|
|
267
|
+
downloadMap.downloadListeners = downloadMap.downloadListeners.filter((l) => l !== onDownload);
|
|
268
|
+
});
|
|
269
|
+
const a = downloadMap.emitter.addEventListener('download', ({ detail: { src: initialSrc } }) => {
|
|
266
270
|
const progress = onDownload(initialSrc);
|
|
267
|
-
const b = emitter.addEventListener('progress', ({ detail: { downloaded, percent, src: progressSrc, totalSize } }) => {
|
|
271
|
+
const b = downloadMap.emitter.addEventListener('progress', ({ detail: { downloaded, percent, src: progressSrc, totalSize } }) => {
|
|
268
272
|
if (initialSrc === progressSrc) {
|
|
269
273
|
progress === null || progress === void 0 ? void 0 : progress({ downloaded, percent, totalSize });
|
|
270
274
|
}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import type { TAsset } from 'remotion';
|
|
2
|
+
import { OffthreadVideoServerEmitter } from '../offthread-video-server';
|
|
3
|
+
import type { RenderMediaOnDownload } from './download-and-map-assets-to-file';
|
|
2
4
|
export type AudioChannelsAndDurationResultCache = {
|
|
3
5
|
channels: number;
|
|
4
6
|
duration: number | null;
|
|
5
7
|
};
|
|
6
8
|
export type DownloadMap = {
|
|
7
9
|
id: string;
|
|
10
|
+
emitter: OffthreadVideoServerEmitter;
|
|
11
|
+
downloadListeners: RenderMediaOnDownload[];
|
|
8
12
|
isDownloadingMap: {
|
|
9
13
|
[src: string]: {
|
|
10
14
|
[downloadDir: string]: boolean;
|
|
@@ -31,6 +31,7 @@ const node_fs_1 = __importStar(require("node:fs"));
|
|
|
31
31
|
const node_path_1 = __importDefault(require("node:path"));
|
|
32
32
|
const delete_directory_1 = require("../delete-directory");
|
|
33
33
|
const tmp_dir_1 = require("../tmp-dir");
|
|
34
|
+
const offthread_video_server_1 = require("../offthread-video-server");
|
|
34
35
|
const makeAndReturn = (dir, name) => {
|
|
35
36
|
const p = node_path_1.default.join(dir, name);
|
|
36
37
|
(0, node_fs_1.mkdirSync)(p);
|
|
@@ -51,6 +52,7 @@ const makeDownloadMap = () => {
|
|
|
51
52
|
durationOfAssetCache: {},
|
|
52
53
|
id: String(Math.random()),
|
|
53
54
|
assetDir: dir,
|
|
55
|
+
downloadListeners: [],
|
|
54
56
|
downloadDir: makeAndReturn(dir, 'remotion-assets-dir'),
|
|
55
57
|
complexFilter: makeAndReturn(dir, 'remotion-complex-filter'),
|
|
56
58
|
preEncode: makeAndReturn(dir, 'pre-encode'),
|
|
@@ -59,6 +61,7 @@ const makeDownloadMap = () => {
|
|
|
59
61
|
stitchFrames: makeAndReturn(dir, 'remotion-stitch-temp-dir'),
|
|
60
62
|
compositingDir: makeAndReturn(dir, 'remotion-compositing-temp-dir'),
|
|
61
63
|
compositorCache: {},
|
|
64
|
+
emitter: new offthread_video_server_1.OffthreadVideoServerEmitter(),
|
|
62
65
|
};
|
|
63
66
|
};
|
|
64
67
|
exports.makeDownloadMap = makeDownloadMap;
|
package/dist/audio-codec.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export declare const supportedAudioCodecs: {
|
|
|
5
5
|
readonly h264: readonly ["aac", "pcm-16"];
|
|
6
6
|
readonly 'h264-mkv': readonly ["pcm-16"];
|
|
7
7
|
readonly aac: readonly ["aac", "pcm-16"];
|
|
8
|
-
readonly gif:
|
|
8
|
+
readonly gif: readonly [];
|
|
9
9
|
readonly h265: readonly ["aac", "pcm-16"];
|
|
10
10
|
readonly mp3: readonly ["mp3", "pcm-16"];
|
|
11
11
|
readonly prores: readonly ["aac", "pcm-16"];
|
package/dist/client.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export declare const BrowserSafeApis: {
|
|
|
12
12
|
readonly h264: readonly ["aac", "pcm-16"];
|
|
13
13
|
readonly 'h264-mkv': readonly ["pcm-16"];
|
|
14
14
|
readonly aac: readonly ["aac", "pcm-16"];
|
|
15
|
-
readonly gif:
|
|
15
|
+
readonly gif: readonly [];
|
|
16
16
|
readonly h265: readonly ["aac", "pcm-16"];
|
|
17
17
|
readonly mp3: readonly ["mp3", "pcm-16"];
|
|
18
18
|
readonly prores: readonly ["aac", "pcm-16"];
|
|
@@ -132,12 +132,7 @@ export declare const BrowserSafeApis: {
|
|
|
132
132
|
};
|
|
133
133
|
gif: {
|
|
134
134
|
default: import("./file-extensions").FileExtension;
|
|
135
|
-
forAudioCodec: {
|
|
136
|
-
[x: string]: {
|
|
137
|
-
possible: import("./file-extensions").FileExtension[];
|
|
138
|
-
default: import("./file-extensions").FileExtension;
|
|
139
|
-
};
|
|
140
|
-
};
|
|
135
|
+
forAudioCodec: {};
|
|
141
136
|
};
|
|
142
137
|
};
|
|
143
138
|
defaultAudioCodecs: {
|
|
@@ -178,8 +173,8 @@ export declare const BrowserSafeApis: {
|
|
|
178
173
|
lossless: "pcm-16" | null;
|
|
179
174
|
};
|
|
180
175
|
gif: {
|
|
181
|
-
compressed:
|
|
182
|
-
lossless:
|
|
176
|
+
compressed: null;
|
|
177
|
+
lossless: null;
|
|
183
178
|
};
|
|
184
179
|
};
|
|
185
180
|
defaultCodecsForFileExtension: Record<import("./file-extensions").FileExtension, "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif">;
|
package/dist/get-compositions.js
CHANGED
|
@@ -12,7 +12,7 @@ const seek_to_frame_1 = require("./seek-to-frame");
|
|
|
12
12
|
const set_props_and_env_1 = require("./set-props-and-env");
|
|
13
13
|
const validate_puppeteer_timeout_1 = require("./validate-puppeteer-timeout");
|
|
14
14
|
const logger_1 = require("./logger");
|
|
15
|
-
const innerGetCompositions = async ({ envVariables, serializedInputPropsWithCustomSchema, onBrowserLog, page, proxyPort, serveUrl, timeoutInMilliseconds, }) => {
|
|
15
|
+
const innerGetCompositions = async ({ envVariables, serializedInputPropsWithCustomSchema, onBrowserLog, page, proxyPort, serveUrl, timeoutInMilliseconds, indent, logLevel, }) => {
|
|
16
16
|
if (onBrowserLog) {
|
|
17
17
|
page.on('console', (log) => {
|
|
18
18
|
onBrowserLog({
|
|
@@ -34,6 +34,8 @@ const innerGetCompositions = async ({ envVariables, serializedInputPropsWithCust
|
|
|
34
34
|
retriesRemaining: 2,
|
|
35
35
|
audioEnabled: false,
|
|
36
36
|
videoEnabled: false,
|
|
37
|
+
indent,
|
|
38
|
+
logLevel,
|
|
37
39
|
});
|
|
38
40
|
await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
|
|
39
41
|
page,
|
|
@@ -96,6 +98,8 @@ const internalGetCompositions = async ({ browserExecutable, chromiumOptions, env
|
|
|
96
98
|
proxyPort: offthreadPort,
|
|
97
99
|
serveUrl,
|
|
98
100
|
timeoutInMilliseconds,
|
|
101
|
+
indent,
|
|
102
|
+
logLevel,
|
|
99
103
|
});
|
|
100
104
|
})
|
|
101
105
|
.then((comp) => {
|
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getLocalBrowserExecutable = exports.ensureLocalBrowser = void 0;
|
|
7
7
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
8
9
|
const BrowserFetcher_1 = require("./browser/BrowserFetcher");
|
|
9
10
|
const create_browser_fetcher_1 = require("./browser/create-browser-fetcher");
|
|
10
11
|
const revisions_1 = require("./browser/revisions");
|
|
@@ -28,6 +29,20 @@ const getSearchPathsForProduct = (product) => {
|
|
|
28
29
|
process.platform === 'win32'
|
|
29
30
|
? 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe'
|
|
30
31
|
: null,
|
|
32
|
+
process.platform === 'win32'
|
|
33
|
+
? node_os_1.default.homedir() +
|
|
34
|
+
'\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe'
|
|
35
|
+
: null,
|
|
36
|
+
process.platform === 'win32'
|
|
37
|
+
? 'C:\\Program Files\\Google\\Chrome SxS\\Application\\chrome.exe'
|
|
38
|
+
: null,
|
|
39
|
+
process.platform === 'win32'
|
|
40
|
+
? 'C:\\Program Files (x86)\\Google\\Chrome SxS\\Application\\chrome.exe'
|
|
41
|
+
: null,
|
|
42
|
+
process.platform === 'win32'
|
|
43
|
+
? node_os_1.default.homedir() +
|
|
44
|
+
'\\AppData\\Local\\Google\\Chrome SxS\\Application\\chrome.exe'
|
|
45
|
+
: null,
|
|
31
46
|
].filter(Boolean);
|
|
32
47
|
}
|
|
33
48
|
if (product === 'firefox') {
|
package/dist/index.d.ts
CHANGED
|
@@ -43,13 +43,12 @@ export declare const RenderInternals: {
|
|
|
43
43
|
downloadMap: import("./assets/download-map").DownloadMap;
|
|
44
44
|
remotionRoot: string;
|
|
45
45
|
concurrency: number;
|
|
46
|
-
logLevel: "
|
|
46
|
+
logLevel: "verbose" | "info" | "warn" | "error";
|
|
47
47
|
indent: boolean;
|
|
48
48
|
}) => Promise<{
|
|
49
49
|
port: number;
|
|
50
50
|
close: () => Promise<void>;
|
|
51
51
|
compositor: import("./compositor/compositor").Compositor;
|
|
52
|
-
events: import("./offthread-video-server").OffthreadVideoServerEmitter;
|
|
53
52
|
}>;
|
|
54
53
|
validateEvenDimensionsWithCodec: ({ width, height, codec, scale, }: {
|
|
55
54
|
width: number;
|
|
@@ -123,7 +122,7 @@ export declare const RenderInternals: {
|
|
|
123
122
|
DEFAULT_CODEC: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif";
|
|
124
123
|
isAudioCodec: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif" | undefined) => boolean;
|
|
125
124
|
logLevels: readonly ["verbose", "info", "warn", "error"];
|
|
126
|
-
isEqualOrBelowLogLevel: (currentLevel: "
|
|
125
|
+
isEqualOrBelowLogLevel: (currentLevel: "verbose" | "info" | "warn" | "error", level: "verbose" | "info" | "warn" | "error") => boolean;
|
|
127
126
|
isValidLogLevel: (level: string) => boolean;
|
|
128
127
|
perf: typeof perf;
|
|
129
128
|
convertToPositiveFrameIndex: ({ frame, durationInFrames, }: {
|
|
@@ -262,19 +261,14 @@ export declare const RenderInternals: {
|
|
|
262
261
|
};
|
|
263
262
|
gif: {
|
|
264
263
|
default: import("./file-extensions").FileExtension;
|
|
265
|
-
forAudioCodec: {
|
|
266
|
-
[x: string]: {
|
|
267
|
-
possible: import("./file-extensions").FileExtension[];
|
|
268
|
-
default: import("./file-extensions").FileExtension;
|
|
269
|
-
};
|
|
270
|
-
};
|
|
264
|
+
forAudioCodec: {};
|
|
271
265
|
};
|
|
272
266
|
};
|
|
273
267
|
supportedAudioCodecs: {
|
|
274
268
|
readonly h264: readonly ["aac", "pcm-16"];
|
|
275
269
|
readonly 'h264-mkv': readonly ["pcm-16"];
|
|
276
270
|
readonly aac: readonly ["aac", "pcm-16"];
|
|
277
|
-
readonly gif:
|
|
271
|
+
readonly gif: readonly [];
|
|
278
272
|
readonly h265: readonly ["aac", "pcm-16"];
|
|
279
273
|
readonly mp3: readonly ["mp3", "pcm-16"];
|
|
280
274
|
readonly prores: readonly ["aac", "pcm-16"];
|
|
@@ -357,24 +351,24 @@ export declare const RenderInternals: {
|
|
|
357
351
|
verbose: (message?: any, ...optionalParams: any[]) => void;
|
|
358
352
|
verboseAdvanced: (options: {
|
|
359
353
|
indent: boolean;
|
|
360
|
-
logLevel: "
|
|
354
|
+
logLevel: "verbose" | "info" | "warn" | "error";
|
|
361
355
|
} & {
|
|
362
356
|
tag?: string | undefined;
|
|
363
357
|
}, message?: any, ...optionalParams: any[]) => void;
|
|
364
358
|
info: (message?: any, ...optionalParams: any[]) => void;
|
|
365
359
|
infoAdvanced: (options: {
|
|
366
360
|
indent: boolean;
|
|
367
|
-
logLevel: "
|
|
361
|
+
logLevel: "verbose" | "info" | "warn" | "error";
|
|
368
362
|
}, message?: any, ...optionalParams: any[]) => void;
|
|
369
363
|
warn: (message?: any, ...optionalParams: any[]) => void;
|
|
370
364
|
warnAdvanced: (options: {
|
|
371
365
|
indent: boolean;
|
|
372
|
-
logLevel: "
|
|
366
|
+
logLevel: "verbose" | "info" | "warn" | "error";
|
|
373
367
|
}, message?: any, ...optionalParams: any[]) => void;
|
|
374
368
|
error: (message?: any, ...optionalParams: any[]) => void;
|
|
375
369
|
};
|
|
376
|
-
getLogLevel: () => "
|
|
377
|
-
setLogLevel: (newLogLevel: "
|
|
370
|
+
getLogLevel: () => "verbose" | "info" | "warn" | "error";
|
|
371
|
+
setLogLevel: (newLogLevel: "verbose" | "info" | "warn" | "error") => void;
|
|
378
372
|
INDENT_TOKEN: string;
|
|
379
373
|
isColorSupported: () => boolean;
|
|
380
374
|
HeadlessBrowser: typeof HeadlessBrowser;
|
|
@@ -383,7 +377,7 @@ export declare const RenderInternals: {
|
|
|
383
377
|
port: number | null;
|
|
384
378
|
remotionRoot: string;
|
|
385
379
|
concurrency: number;
|
|
386
|
-
logLevel: "
|
|
380
|
+
logLevel: "verbose" | "info" | "warn" | "error";
|
|
387
381
|
indent: boolean;
|
|
388
382
|
}) => Promise<import("./prepare-server").RemotionServer>;
|
|
389
383
|
makeOrReuseServer: (server: import("./prepare-server").RemotionServer | undefined, config: {
|
|
@@ -391,7 +385,7 @@ export declare const RenderInternals: {
|
|
|
391
385
|
port: number | null;
|
|
392
386
|
remotionRoot: string;
|
|
393
387
|
concurrency: number;
|
|
394
|
-
logLevel: "
|
|
388
|
+
logLevel: "verbose" | "info" | "warn" | "error";
|
|
395
389
|
indent: boolean;
|
|
396
390
|
}, { onDownload, onError, }: {
|
|
397
391
|
onError: (err: Error) => void;
|
|
@@ -420,7 +414,7 @@ export declare const RenderInternals: {
|
|
|
420
414
|
cancelSignal: import("./make-cancel-signal").CancelSignal | null;
|
|
421
415
|
indent: boolean;
|
|
422
416
|
server: import("./prepare-server").RemotionServer | undefined;
|
|
423
|
-
logLevel: "
|
|
417
|
+
logLevel: "verbose" | "info" | "warn" | "error";
|
|
424
418
|
serveUrl: string;
|
|
425
419
|
port: number | null;
|
|
426
420
|
}) => Promise<{
|
|
@@ -433,7 +427,7 @@ export declare const RenderInternals: {
|
|
|
433
427
|
viewport: import("./browser/PuppeteerViewport").Viewport | null;
|
|
434
428
|
indent: boolean;
|
|
435
429
|
browser: import("./browser").Browser;
|
|
436
|
-
logLevel: "
|
|
430
|
+
logLevel: "verbose" | "info" | "warn" | "error";
|
|
437
431
|
}) => Promise<HeadlessBrowser>;
|
|
438
432
|
internalSelectComposition: (options: {
|
|
439
433
|
serializedInputPropsWithCustomSchema: string;
|
|
@@ -446,7 +440,7 @@ export declare const RenderInternals: {
|
|
|
446
440
|
port: number | null;
|
|
447
441
|
indent: boolean;
|
|
448
442
|
server: import("./prepare-server").RemotionServer | undefined;
|
|
449
|
-
logLevel: "
|
|
443
|
+
logLevel: "verbose" | "info" | "warn" | "error";
|
|
450
444
|
serveUrl: string;
|
|
451
445
|
id: string;
|
|
452
446
|
}) => Promise<{
|
|
@@ -464,7 +458,7 @@ export declare const RenderInternals: {
|
|
|
464
458
|
port: number | null;
|
|
465
459
|
server: import("./prepare-server").RemotionServer | undefined;
|
|
466
460
|
indent: boolean;
|
|
467
|
-
logLevel: "
|
|
461
|
+
logLevel: "verbose" | "info" | "warn" | "error";
|
|
468
462
|
serveUrlOrWebpackUrl: string;
|
|
469
463
|
}) => Promise<import("remotion").VideoConfig[]>;
|
|
470
464
|
internalRenderFrames: ({ browserExecutable, cancelSignal, chromiumOptions, composition, concurrency, envVariables, everyNthFrame, frameRange, imageFormat, indent, jpegQuality, muted, onBrowserLog, onDownload, onFrameBuffer, onFrameUpdate, onStart, outputDir, port, puppeteerInstance, scale, server, timeoutInMilliseconds, logLevel, webpackBundleOrServeUrl, serializedInputPropsWithCustomSchema, serializedResolvedPropsWithCustomSchema, }: import("./render-frames").InternalRenderFramesOptions) => Promise<import("./types").RenderFramesOutput>;
|
package/dist/logger.d.ts
CHANGED
|
@@ -18,6 +18,6 @@ export declare const Log: {
|
|
|
18
18
|
warnAdvanced: (options: LogOptions, message?: any, ...optionalParams: any[]) => void;
|
|
19
19
|
error: (message?: any, ...optionalParams: any[]) => void;
|
|
20
20
|
};
|
|
21
|
-
export declare const getLogLevel: () => "
|
|
21
|
+
export declare const getLogLevel: () => "verbose" | "info" | "warn" | "error";
|
|
22
22
|
export declare const setLogLevel: (newLogLevel: LogLevel) => void;
|
|
23
23
|
export {};
|
|
@@ -16,7 +16,6 @@ export declare const startOffthreadVideoServer: ({ downloadMap, concurrency, log
|
|
|
16
16
|
listener: RequestListener;
|
|
17
17
|
close: () => Promise<void>;
|
|
18
18
|
compositor: Compositor;
|
|
19
|
-
events: OffthreadVideoServerEmitter;
|
|
20
19
|
};
|
|
21
20
|
type DownloadEventPayload = {
|
|
22
21
|
src: string;
|
|
@@ -30,7 +30,6 @@ const extractUrlAndSourceFromUrl = (url) => {
|
|
|
30
30
|
};
|
|
31
31
|
exports.extractUrlAndSourceFromUrl = extractUrlAndSourceFromUrl;
|
|
32
32
|
const startOffthreadVideoServer = ({ downloadMap, concurrency, logLevel, indent, }) => {
|
|
33
|
-
const events = new OffthreadVideoServerEmitter();
|
|
34
33
|
const compositor = (0, compositor_1.startCompositor)('StartLongRunningProcess', {
|
|
35
34
|
concurrency,
|
|
36
35
|
maximum_frame_cache_items: (0, compositor_1.getIdealMaximumFrameCacheItems)(),
|
|
@@ -70,7 +69,7 @@ const startOffthreadVideoServer = ({ downloadMap, concurrency, logLevel, indent,
|
|
|
70
69
|
return;
|
|
71
70
|
}
|
|
72
71
|
let extractStart = Date.now();
|
|
73
|
-
(0, download_and_map_assets_to_file_1.downloadAsset)({ src,
|
|
72
|
+
(0, download_and_map_assets_to_file_1.downloadAsset)({ src, downloadMap })
|
|
74
73
|
.then((to) => {
|
|
75
74
|
extractStart = Date.now();
|
|
76
75
|
return compositor.executeCommand('ExtractFrame', {
|
|
@@ -95,12 +94,11 @@ const startOffthreadVideoServer = ({ downloadMap, concurrency, logLevel, indent,
|
|
|
95
94
|
.catch((err) => {
|
|
96
95
|
res.writeHead(500);
|
|
97
96
|
res.end();
|
|
98
|
-
|
|
97
|
+
downloadMap.emitter.dispatchError(err);
|
|
99
98
|
console.log('Error occurred', err);
|
|
100
99
|
});
|
|
101
100
|
},
|
|
102
101
|
compositor,
|
|
103
|
-
events,
|
|
104
102
|
};
|
|
105
103
|
};
|
|
106
104
|
exports.startOffthreadVideoServer = startOffthreadVideoServer;
|
package/dist/prepare-server.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
|
|
2
2
|
import type { DownloadMap } from './assets/download-map';
|
|
3
3
|
import type { Compositor } from './compositor/compositor';
|
|
4
|
-
import type { OffthreadVideoServerEmitter } from './offthread-video-server';
|
|
5
4
|
import type { AnySourceMapConsumer } from './symbolicate-stacktrace';
|
|
6
5
|
import type { LogLevel } from './log-level';
|
|
7
6
|
export type RemotionServer = {
|
|
@@ -10,7 +9,6 @@ export type RemotionServer = {
|
|
|
10
9
|
offthreadPort: number;
|
|
11
10
|
compositor: Compositor;
|
|
12
11
|
sourceMap: AnySourceMapConsumer | null;
|
|
13
|
-
events: OffthreadVideoServerEmitter;
|
|
14
12
|
downloadMap: DownloadMap;
|
|
15
13
|
};
|
|
16
14
|
type PrepareServerOptions = {
|
package/dist/prepare-server.js
CHANGED
|
@@ -18,7 +18,7 @@ const prepareServer = async ({ webpackConfigOrServeUrl, port, remotionRoot, conc
|
|
|
18
18
|
const downloadMap = (0, download_map_1.makeDownloadMap)();
|
|
19
19
|
logger_1.Log.verboseAdvanced({ indent, logLevel }, 'Created directory for temporary files', downloadMap.assetDir);
|
|
20
20
|
if ((0, is_serve_url_1.isServeUrl)(webpackConfigOrServeUrl)) {
|
|
21
|
-
const { port: offthreadPort, close: closeProxy, compositor: comp,
|
|
21
|
+
const { port: offthreadPort, close: closeProxy, compositor: comp, } = await (0, serve_static_1.serveStatic)(null, {
|
|
22
22
|
port,
|
|
23
23
|
downloadMap,
|
|
24
24
|
remotionRoot,
|
|
@@ -35,7 +35,6 @@ const prepareServer = async ({ webpackConfigOrServeUrl, port, remotionRoot, conc
|
|
|
35
35
|
offthreadPort,
|
|
36
36
|
compositor: comp,
|
|
37
37
|
sourceMap: null,
|
|
38
|
-
events,
|
|
39
38
|
downloadMap,
|
|
40
39
|
});
|
|
41
40
|
}
|
|
@@ -46,7 +45,7 @@ const prepareServer = async ({ webpackConfigOrServeUrl, port, remotionRoot, conc
|
|
|
46
45
|
throw new Error(`Tried to serve the Webpack bundle on a HTTP server, but the file ${indexFile} does not exist. Is this a valid path to a Webpack bundle?`);
|
|
47
46
|
}
|
|
48
47
|
const sourceMap = (0, symbolicate_stacktrace_1.getSourceMapFromLocalFile)(node_path_1.default.join(webpackConfigOrServeUrl, remotion_1.Internals.bundleName));
|
|
49
|
-
const { port: serverPort, close, compositor,
|
|
48
|
+
const { port: serverPort, close, compositor, } = await (0, serve_static_1.serveStatic)(webpackConfigOrServeUrl, {
|
|
50
49
|
port,
|
|
51
50
|
downloadMap,
|
|
52
51
|
remotionRoot,
|
|
@@ -67,15 +66,14 @@ const prepareServer = async ({ webpackConfigOrServeUrl, port, remotionRoot, conc
|
|
|
67
66
|
offthreadPort: serverPort,
|
|
68
67
|
compositor,
|
|
69
68
|
sourceMap: await sourceMap,
|
|
70
|
-
events: newEvents,
|
|
71
69
|
downloadMap,
|
|
72
70
|
});
|
|
73
71
|
};
|
|
74
72
|
exports.prepareServer = prepareServer;
|
|
75
73
|
const makeOrReuseServer = async (server, config, { onDownload, onError, }) => {
|
|
76
74
|
if (server) {
|
|
77
|
-
const cleanupOnDownload = (0, download_and_map_assets_to_file_1.attachDownloadListenerToEmitter)(server.
|
|
78
|
-
const cleanupError = server.
|
|
75
|
+
const cleanupOnDownload = (0, download_and_map_assets_to_file_1.attachDownloadListenerToEmitter)(server.downloadMap, onDownload);
|
|
76
|
+
const cleanupError = server.downloadMap.emitter.addEventListener('error', ({ detail: { error } }) => {
|
|
79
77
|
onError(error);
|
|
80
78
|
});
|
|
81
79
|
return {
|
|
@@ -88,8 +86,8 @@ const makeOrReuseServer = async (server, config, { onDownload, onError, }) => {
|
|
|
88
86
|
};
|
|
89
87
|
}
|
|
90
88
|
const newServer = await (0, exports.prepareServer)(config);
|
|
91
|
-
const cleanupOnDownloadNew = (0, download_and_map_assets_to_file_1.attachDownloadListenerToEmitter)(newServer.
|
|
92
|
-
const cleanupErrorNew = newServer.
|
|
89
|
+
const cleanupOnDownloadNew = (0, download_and_map_assets_to_file_1.attachDownloadListenerToEmitter)(newServer.downloadMap, onDownload);
|
|
90
|
+
const cleanupErrorNew = newServer.downloadMap.emitter.addEventListener('error', ({ detail: { error } }) => {
|
|
93
91
|
onError(error);
|
|
94
92
|
});
|
|
95
93
|
return {
|
package/dist/render-frames.js
CHANGED
|
@@ -79,6 +79,8 @@ const innerRenderFrames = async ({ onFrameUpdate, outputDir, onStart, serialized
|
|
|
79
79
|
retriesRemaining: 2,
|
|
80
80
|
audioEnabled: !muted,
|
|
81
81
|
videoEnabled: imageFormat !== 'none',
|
|
82
|
+
indent,
|
|
83
|
+
logLevel,
|
|
82
84
|
});
|
|
83
85
|
await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
|
|
84
86
|
// eslint-disable-next-line max-params
|
|
@@ -338,9 +340,11 @@ const internalRenderFrames = ({ browserExecutable, cancelSignal, chromiumOptions
|
|
|
338
340
|
onError,
|
|
339
341
|
}),
|
|
340
342
|
browserInstance,
|
|
341
|
-
]).then(([{ server:
|
|
343
|
+
]).then(([{ server: openedServer, cleanupServer }, pInstance]) => {
|
|
344
|
+
const { serveUrl, offthreadPort, compositor, sourceMap, downloadMap } = openedServer;
|
|
342
345
|
const browserReplacer = (0, replace_browser_1.handleBrowserCrash)(pInstance, logLevel, indent);
|
|
343
|
-
cleanup.push((0, cycle_browser_tabs_1.cycleBrowserTabs)(browserReplacer, actualConcurrency, logLevel, indent)
|
|
346
|
+
cleanup.push((0, cycle_browser_tabs_1.cycleBrowserTabs)(browserReplacer, actualConcurrency, logLevel, indent)
|
|
347
|
+
.stopCycling);
|
|
344
348
|
cleanup.push(() => cleanupServer(false));
|
|
345
349
|
return innerRenderFrames({
|
|
346
350
|
onError,
|
package/dist/render-media.js
CHANGED
|
@@ -404,7 +404,7 @@ exports.internalRenderMedia = internalRenderMedia;
|
|
|
404
404
|
* @see [Documentation](https://www.remotion.dev/docs/renderer/render-media)
|
|
405
405
|
*/
|
|
406
406
|
const renderMedia = ({ proResProfile, crf, composition, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, audioBitrate, videoBitrate, audioCodec, jpegQuality, concurrency, serveUrl, disallowParallelEncoding, everyNthFrame, imageFormat, numberOfGifLoops, dumpBrowserLogs, preferLossless, verbose, quality, logLevel, }) => {
|
|
407
|
-
var _a;
|
|
407
|
+
var _a, _b;
|
|
408
408
|
if (quality !== undefined) {
|
|
409
409
|
console.warn(`The "quality" option has been renamed. Please use "jpegQuality" instead.`);
|
|
410
410
|
}
|
|
@@ -455,7 +455,7 @@ const renderMedia = ({ proResProfile, crf, composition, inputProps, pixelFormat,
|
|
|
455
455
|
serializedResolvedPropsWithCustomSchema: remotion_1.Internals.serializeJSONWithDate({
|
|
456
456
|
indent: undefined,
|
|
457
457
|
staticBase: null,
|
|
458
|
-
data: composition.props,
|
|
458
|
+
data: (_b = composition.props) !== null && _b !== void 0 ? _b : {},
|
|
459
459
|
}).serializedString,
|
|
460
460
|
});
|
|
461
461
|
};
|
package/dist/render-still.js
CHANGED
|
@@ -144,6 +144,8 @@ const innerRenderStill = async ({ composition, imageFormat = image_format_1.DEFA
|
|
|
144
144
|
retriesRemaining: 2,
|
|
145
145
|
audioEnabled: false,
|
|
146
146
|
videoEnabled: true,
|
|
147
|
+
indent,
|
|
148
|
+
logLevel,
|
|
147
149
|
});
|
|
148
150
|
await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
|
|
149
151
|
// eslint-disable-next-line max-params
|
|
@@ -42,5 +42,5 @@ export declare const internalSelectComposition: (options: InternalSelectComposit
|
|
|
42
42
|
* @description Gets a composition defined in a Remotion project based on a Webpack bundle.
|
|
43
43
|
* @see [Documentation](https://www.remotion.dev/docs/renderer/select-composition)
|
|
44
44
|
*/
|
|
45
|
-
export declare const selectComposition: (options: SelectCompositionOptions) => Promise<
|
|
45
|
+
export declare const selectComposition: (options: SelectCompositionOptions) => Promise<VideoConfig>;
|
|
46
46
|
export {};
|
|
@@ -169,7 +169,7 @@ const serveHandler = async (request, response, config) => {
|
|
|
169
169
|
return sendError(absolutePath, response, {
|
|
170
170
|
statusCode: 404,
|
|
171
171
|
code: 'not_found',
|
|
172
|
-
message: 'The requested path could not be found',
|
|
172
|
+
message: 'The requested path (' + absolutePath + ') could not be found',
|
|
173
173
|
});
|
|
174
174
|
}
|
|
175
175
|
let streamOpts = null;
|
package/dist/serve-static.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { DownloadMap } from './assets/download-map';
|
|
2
2
|
import type { Compositor } from './compositor/compositor';
|
|
3
|
-
import type { OffthreadVideoServerEmitter } from './offthread-video-server';
|
|
4
3
|
import type { LogLevel } from './log-level';
|
|
5
4
|
export declare const serveStatic: (path: string | null, options: {
|
|
6
5
|
port: number | null;
|
|
@@ -13,5 +12,4 @@ export declare const serveStatic: (path: string | null, options: {
|
|
|
13
12
|
port: number;
|
|
14
13
|
close: () => Promise<void>;
|
|
15
14
|
compositor: Compositor;
|
|
16
|
-
events: OffthreadVideoServerEmitter;
|
|
17
15
|
}>;
|
package/dist/serve-static.js
CHANGED
|
@@ -9,7 +9,7 @@ const get_port_1 = require("./get-port");
|
|
|
9
9
|
const offthread_video_server_1 = require("./offthread-video-server");
|
|
10
10
|
const serve_handler_1 = require("./serve-handler");
|
|
11
11
|
const serveStatic = async (path, options) => {
|
|
12
|
-
const { listener: offthreadRequest, close: closeCompositor, compositor,
|
|
12
|
+
const { listener: offthreadRequest, close: closeCompositor, compositor, } = (0, offthread_video_server_1.startOffthreadVideoServer)({
|
|
13
13
|
downloadMap: options.downloadMap,
|
|
14
14
|
concurrency: options.concurrency,
|
|
15
15
|
logLevel: options.logLevel,
|
|
@@ -85,7 +85,7 @@ const serveStatic = async (path, options) => {
|
|
|
85
85
|
}),
|
|
86
86
|
]);
|
|
87
87
|
};
|
|
88
|
-
return { port: selectedPort, close, compositor
|
|
88
|
+
return { port: selectedPort, close, compositor };
|
|
89
89
|
}
|
|
90
90
|
catch (err) {
|
|
91
91
|
if (!(err instanceof Error)) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Page } from './browser/BrowserPage';
|
|
2
|
+
import type { LogLevel } from './log-level';
|
|
2
3
|
type SetPropsAndEnv = {
|
|
3
4
|
serializedInputPropsWithCustomSchema: string;
|
|
4
5
|
envVariables: Record<string, string> | undefined;
|
|
@@ -10,6 +11,8 @@ type SetPropsAndEnv = {
|
|
|
10
11
|
retriesRemaining: number;
|
|
11
12
|
audioEnabled: boolean;
|
|
12
13
|
videoEnabled: boolean;
|
|
14
|
+
indent: boolean;
|
|
15
|
+
logLevel: LogLevel;
|
|
13
16
|
};
|
|
14
17
|
export declare const setPropsAndEnv: (params: SetPropsAndEnv) => Promise<unknown>;
|
|
15
18
|
export {};
|
|
@@ -8,7 +8,7 @@ const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
|
|
|
8
8
|
const redirect_status_codes_1 = require("./redirect-status-codes");
|
|
9
9
|
const validate_puppeteer_timeout_1 = require("./validate-puppeteer-timeout");
|
|
10
10
|
const logger_1 = require("./logger");
|
|
11
|
-
const innerSetPropsAndEnv = async ({ serializedInputPropsWithCustomSchema, envVariables, page, serveUrl, initialFrame, timeoutInMilliseconds, proxyPort, retriesRemaining, audioEnabled, videoEnabled, }) => {
|
|
11
|
+
const innerSetPropsAndEnv = async ({ serializedInputPropsWithCustomSchema, envVariables, page, serveUrl, initialFrame, timeoutInMilliseconds, proxyPort, retriesRemaining, audioEnabled, videoEnabled, indent, logLevel, }) => {
|
|
12
12
|
(0, validate_puppeteer_timeout_1.validatePuppeteerTimeout)(timeoutInMilliseconds);
|
|
13
13
|
const actualTimeout = timeoutInMilliseconds !== null && timeoutInMilliseconds !== void 0 ? timeoutInMilliseconds : TimeoutSettings_1.DEFAULT_TIMEOUT;
|
|
14
14
|
page.setDefaultTimeout(actualTimeout);
|
|
@@ -61,12 +61,14 @@ const innerSetPropsAndEnv = async ({ serializedInputPropsWithCustomSchema, envVa
|
|
|
61
61
|
timeoutInMilliseconds,
|
|
62
62
|
audioEnabled,
|
|
63
63
|
videoEnabled,
|
|
64
|
+
indent,
|
|
65
|
+
logLevel,
|
|
64
66
|
});
|
|
65
67
|
}
|
|
66
68
|
if (!redirect_status_codes_1.redirectStatusCodes.every((code) => code !== status)) {
|
|
67
69
|
throw new Error(`Error while getting compositions: Tried to go to ${urlToVisit} but the status code was ${status} instead of 200. Does the site you specified exist?`);
|
|
68
70
|
}
|
|
69
|
-
const isRemotionFn = await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
|
|
71
|
+
const { value: isRemotionFn } = await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
|
|
70
72
|
pageFunction: () => {
|
|
71
73
|
return window.getStaticCompositions;
|
|
72
74
|
},
|
|
@@ -74,8 +76,23 @@ const innerSetPropsAndEnv = async ({ serializedInputPropsWithCustomSchema, envVa
|
|
|
74
76
|
frame: null,
|
|
75
77
|
page,
|
|
76
78
|
});
|
|
77
|
-
if (isRemotionFn === undefined) {
|
|
78
|
-
|
|
79
|
+
if (typeof isRemotionFn === 'undefined') {
|
|
80
|
+
const { value: body } = await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
|
|
81
|
+
pageFunction: () => {
|
|
82
|
+
return document.body.innerHTML;
|
|
83
|
+
},
|
|
84
|
+
args: [],
|
|
85
|
+
frame: null,
|
|
86
|
+
page,
|
|
87
|
+
});
|
|
88
|
+
const errorMessage = [
|
|
89
|
+
`Error while getting compositions: Tried to go to ${urlToVisit} and verify that it is a Remotion project by checking if window.getStaticCompositions is defined.`,
|
|
90
|
+
'However, the function was undefined, which indicates that this is not a valid Remotion project. Please check the URL you passed.',
|
|
91
|
+
'The page loaded contained the following markup:',
|
|
92
|
+
body.substring(0, 500) + (body.length > 500 ? '...' : ''),
|
|
93
|
+
'Does this look like a foreign page? If so, try to stop this server.',
|
|
94
|
+
].join('\n');
|
|
95
|
+
throw new Error(errorMessage);
|
|
79
96
|
}
|
|
80
97
|
const { value: siteVersion } = await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
|
|
81
98
|
pageFunction: () => {
|
|
@@ -99,10 +116,16 @@ const innerSetPropsAndEnv = async ({ serializedInputPropsWithCustomSchema, envVa
|
|
|
99
116
|
}
|
|
100
117
|
if (remotionVersion !== version_1.VERSION && process.env.NODE_ENV !== 'test') {
|
|
101
118
|
if (remotionVersion) {
|
|
102
|
-
logger_1.Log.
|
|
119
|
+
logger_1.Log.warnAdvanced({
|
|
120
|
+
indent,
|
|
121
|
+
logLevel,
|
|
122
|
+
}, `The site was bundled with version ${remotionVersion} of @remotion/bundler, while @remotion/renderer is on version ${version_1.VERSION}. You may not have the newest bugfixes and features. Re-bundle the site to fix this issue.`);
|
|
103
123
|
}
|
|
104
124
|
else {
|
|
105
|
-
logger_1.Log.
|
|
125
|
+
logger_1.Log.warnAdvanced({
|
|
126
|
+
indent,
|
|
127
|
+
logLevel,
|
|
128
|
+
}, `The site was bundled with an old version of Remotion, while @remotion/renderer is on version ${version_1.VERSION}. You may not have the newest bugfixes and features. Re-bundle the site to fix this issue.`);
|
|
106
129
|
}
|
|
107
130
|
}
|
|
108
131
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remotion/renderer",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.5",
|
|
4
4
|
"description": "Renderer for Remotion",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"extract-zip": "2.0.1",
|
|
19
19
|
"source-map": "^0.8.0-beta.0",
|
|
20
20
|
"ws": "8.7.0",
|
|
21
|
-
"remotion": "4.0.
|
|
21
|
+
"remotion": "4.0.5"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
24
|
"react": ">=16.8.0",
|
|
@@ -42,13 +42,13 @@
|
|
|
42
42
|
"zod": "^3.21.4"
|
|
43
43
|
},
|
|
44
44
|
"optionalDependencies": {
|
|
45
|
-
"@remotion/compositor-darwin-
|
|
46
|
-
"@remotion/compositor-
|
|
47
|
-
"@remotion/compositor-linux-
|
|
48
|
-
"@remotion/compositor-
|
|
49
|
-
"@remotion/compositor-linux-x64-musl": "4.0.
|
|
50
|
-
"@remotion/compositor-linux-arm64-gnu": "4.0.
|
|
51
|
-
"@remotion/compositor-
|
|
45
|
+
"@remotion/compositor-darwin-arm64": "4.0.5",
|
|
46
|
+
"@remotion/compositor-linux-arm64-musl": "4.0.5",
|
|
47
|
+
"@remotion/compositor-linux-x64-gnu": "4.0.5",
|
|
48
|
+
"@remotion/compositor-win32-x64-msvc": "4.0.5",
|
|
49
|
+
"@remotion/compositor-linux-x64-musl": "4.0.5",
|
|
50
|
+
"@remotion/compositor-linux-arm64-gnu": "4.0.5",
|
|
51
|
+
"@remotion/compositor-darwin-x64": "4.0.5"
|
|
52
52
|
},
|
|
53
53
|
"keywords": [
|
|
54
54
|
"remotion",
|