@remotion/renderer 4.0.87 → 4.0.88
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/client.d.ts +17 -1
- package/dist/index.d.ts +2 -2
- package/dist/logger.js +6 -0
- package/dist/options/gl.d.ts +1 -1
- package/dist/options/index.d.ts +9 -1
- package/dist/options/index.js +2 -0
- package/dist/options/options-map.d.ts +8 -0
- package/dist/options/options-map.js +2 -0
- package/dist/options/repro.d.ts +9 -0
- package/dist/options/repro.js +12 -0
- package/dist/render-media.d.ts +3 -1
- package/dist/render-media.js +30 -3
- package/dist/repro.d.ts +25 -0
- package/dist/repro.js +174 -0
- package/package.json +9 -9
package/dist/client.d.ts
CHANGED
|
@@ -317,7 +317,7 @@ export declare const BrowserSafeApis: {
|
|
|
317
317
|
cliFlag: "gl";
|
|
318
318
|
docLink: string;
|
|
319
319
|
name: string;
|
|
320
|
-
type: "
|
|
320
|
+
type: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
|
|
321
321
|
ssrName: string;
|
|
322
322
|
description: () => JSX.Element;
|
|
323
323
|
};
|
|
@@ -361,6 +361,14 @@ export declare const BrowserSafeApis: {
|
|
|
361
361
|
docLink: string;
|
|
362
362
|
type: number | null;
|
|
363
363
|
};
|
|
364
|
+
reproOption: {
|
|
365
|
+
name: string;
|
|
366
|
+
cliFlag: string;
|
|
367
|
+
description: () => JSX.Element;
|
|
368
|
+
ssrName: string;
|
|
369
|
+
docLink: string;
|
|
370
|
+
type: boolean;
|
|
371
|
+
};
|
|
364
372
|
};
|
|
365
373
|
validColorSpaces: readonly ["default", "bt709", "bt2020-ncl"];
|
|
366
374
|
optionsMap: {
|
|
@@ -389,6 +397,14 @@ export declare const BrowserSafeApis: {
|
|
|
389
397
|
docLink: string;
|
|
390
398
|
type: number | null;
|
|
391
399
|
};
|
|
400
|
+
readonly repro: {
|
|
401
|
+
name: string;
|
|
402
|
+
cliFlag: string;
|
|
403
|
+
description: () => JSX.Element;
|
|
404
|
+
ssrName: string;
|
|
405
|
+
docLink: string;
|
|
406
|
+
type: boolean;
|
|
407
|
+
};
|
|
392
408
|
};
|
|
393
409
|
readonly renderStill: {
|
|
394
410
|
readonly offthreadVideoCacheSizeInBytes: {
|
package/dist/index.d.ts
CHANGED
|
@@ -138,8 +138,8 @@ export declare const RenderInternals: {
|
|
|
138
138
|
validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
|
|
139
139
|
DEFAULT_BROWSER: "chrome";
|
|
140
140
|
validateFrameRange: (frameRange: import("./frame-range").FrameRange | null) => void;
|
|
141
|
-
DEFAULT_OPENGL_RENDERER: "
|
|
142
|
-
validateOpenGlRenderer: (option: "
|
|
141
|
+
DEFAULT_OPENGL_RENDERER: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
|
|
142
|
+
validateOpenGlRenderer: (option: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null) => "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
|
|
143
143
|
validCodecs: readonly ["h264", "h265", "vp8", "vp9", "mp3", "aac", "wav", "prores", "h264-mkv", "gif"];
|
|
144
144
|
DEFAULT_PIXEL_FORMAT: "yuv420p" | "yuv422p" | "yuv444p" | "yuva420p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
|
|
145
145
|
validateJpegQuality: (q: number | undefined) => void;
|
package/dist/logger.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.setLogLevel = exports.getLogLevel = exports.Log = exports.secondverboseT
|
|
|
4
4
|
const chalk_1 = require("./chalk");
|
|
5
5
|
const is_color_supported_1 = require("./chalk/is-color-supported");
|
|
6
6
|
const log_level_1 = require("./log-level");
|
|
7
|
+
const repro_1 = require("./repro");
|
|
7
8
|
const truthy_1 = require("./truthy");
|
|
8
9
|
exports.INDENT_TOKEN = chalk_1.chalk.gray('│');
|
|
9
10
|
const verboseTag = (str) => {
|
|
@@ -16,6 +17,7 @@ const secondverboseTag = (str) => {
|
|
|
16
17
|
exports.secondverboseTag = secondverboseTag;
|
|
17
18
|
exports.Log = {
|
|
18
19
|
verbose: (options, ...args) => {
|
|
20
|
+
(0, repro_1.writeInRepro)('verbose', ...args);
|
|
19
21
|
if ((0, log_level_1.isEqualOrBelowLogLevel)(options.logLevel, 'verbose')) {
|
|
20
22
|
return console.log(...[
|
|
21
23
|
options.indent ? exports.INDENT_TOKEN : null,
|
|
@@ -29,9 +31,11 @@ exports.Log = {
|
|
|
29
31
|
exports.Log.infoAdvanced({ indent: false, logLevel: (0, exports.getLogLevel)() }, ...args);
|
|
30
32
|
},
|
|
31
33
|
infoAdvanced: (options, ...args) => {
|
|
34
|
+
(0, repro_1.writeInRepro)('info', ...args);
|
|
32
35
|
return console.log(...[options.indent ? exports.INDENT_TOKEN : null].filter(truthy_1.truthy).concat(args));
|
|
33
36
|
},
|
|
34
37
|
warn: (options, ...args) => {
|
|
38
|
+
(0, repro_1.writeInRepro)('warn', ...args);
|
|
35
39
|
if ((0, log_level_1.isEqualOrBelowLogLevel)(options.logLevel, 'warn')) {
|
|
36
40
|
return console.warn(...[options.indent ? chalk_1.chalk.yellow(exports.INDENT_TOKEN) : null]
|
|
37
41
|
.filter(truthy_1.truthy)
|
|
@@ -39,11 +43,13 @@ exports.Log = {
|
|
|
39
43
|
}
|
|
40
44
|
},
|
|
41
45
|
error: (...args) => {
|
|
46
|
+
(0, repro_1.writeInRepro)('error', ...args);
|
|
42
47
|
if ((0, log_level_1.isEqualOrBelowLogLevel)((0, exports.getLogLevel)(), 'error')) {
|
|
43
48
|
return console.error(...args.map((a) => chalk_1.chalk.red(a)));
|
|
44
49
|
}
|
|
45
50
|
},
|
|
46
51
|
errorAdvanced: (options, ...args) => {
|
|
52
|
+
(0, repro_1.writeInRepro)('error', ...args);
|
|
47
53
|
if ((0, log_level_1.isEqualOrBelowLogLevel)((0, exports.getLogLevel)(), 'error')) {
|
|
48
54
|
return console.log(...[
|
|
49
55
|
options.indent ? exports.INDENT_TOKEN : null,
|
package/dist/options/gl.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export declare const glOption: {
|
|
|
4
4
|
cliFlag: "gl";
|
|
5
5
|
docLink: string;
|
|
6
6
|
name: string;
|
|
7
|
-
type: "
|
|
7
|
+
type: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
|
|
8
8
|
ssrName: string;
|
|
9
9
|
description: () => JSX.Element;
|
|
10
10
|
};
|
package/dist/options/index.d.ts
CHANGED
|
@@ -116,7 +116,7 @@ export declare const allOptions: {
|
|
|
116
116
|
cliFlag: "gl";
|
|
117
117
|
docLink: string;
|
|
118
118
|
name: string;
|
|
119
|
-
type: "
|
|
119
|
+
type: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
|
|
120
120
|
ssrName: string;
|
|
121
121
|
description: () => JSX.Element;
|
|
122
122
|
};
|
|
@@ -160,5 +160,13 @@ export declare const allOptions: {
|
|
|
160
160
|
docLink: string;
|
|
161
161
|
type: number | null;
|
|
162
162
|
};
|
|
163
|
+
reproOption: {
|
|
164
|
+
name: string;
|
|
165
|
+
cliFlag: string;
|
|
166
|
+
description: () => JSX.Element;
|
|
167
|
+
ssrName: string;
|
|
168
|
+
docLink: string;
|
|
169
|
+
type: boolean;
|
|
170
|
+
};
|
|
163
171
|
};
|
|
164
172
|
export type AvailableOptions = keyof typeof allOptions;
|
package/dist/options/index.js
CHANGED
|
@@ -17,6 +17,7 @@ const jpeg_quality_1 = require("./jpeg-quality");
|
|
|
17
17
|
const mute_1 = require("./mute");
|
|
18
18
|
const number_of_gif_loops_1 = require("./number-of-gif-loops");
|
|
19
19
|
const offthreadvideo_cache_size_1 = require("./offthreadvideo-cache-size");
|
|
20
|
+
const repro_1 = require("./repro");
|
|
20
21
|
const scale_1 = require("./scale");
|
|
21
22
|
const video_bitrate_1 = require("./video-bitrate");
|
|
22
23
|
const video_codec_1 = require("./video-codec");
|
|
@@ -42,4 +43,5 @@ exports.allOptions = {
|
|
|
42
43
|
encodingBufferSizeOption: encoding_buffer_size_1.encodingBufferSizeOption,
|
|
43
44
|
beepOnFinishOption: beep_on_finish_1.beepOnFinishOption,
|
|
44
45
|
numberOfGifLoopsOption: number_of_gif_loops_1.numberOfGifLoopsOption,
|
|
46
|
+
reproOption: repro_1.reproOption,
|
|
45
47
|
};
|
|
@@ -25,6 +25,14 @@ export declare const optionsMap: {
|
|
|
25
25
|
docLink: string;
|
|
26
26
|
type: number | null;
|
|
27
27
|
};
|
|
28
|
+
readonly repro: {
|
|
29
|
+
name: string;
|
|
30
|
+
cliFlag: string;
|
|
31
|
+
description: () => JSX.Element;
|
|
32
|
+
ssrName: string;
|
|
33
|
+
docLink: string;
|
|
34
|
+
type: boolean;
|
|
35
|
+
};
|
|
28
36
|
};
|
|
29
37
|
readonly renderStill: {
|
|
30
38
|
readonly offthreadVideoCacheSizeInBytes: {
|
|
@@ -3,12 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.optionsMap = void 0;
|
|
4
4
|
const number_of_gif_loops_1 = require("./number-of-gif-loops");
|
|
5
5
|
const offthreadvideo_cache_size_1 = require("./offthreadvideo-cache-size");
|
|
6
|
+
const repro_1 = require("./repro");
|
|
6
7
|
const video_bitrate_1 = require("./video-bitrate");
|
|
7
8
|
exports.optionsMap = {
|
|
8
9
|
renderMedia: {
|
|
9
10
|
offthreadVideoCacheSizeInBytes: offthreadvideo_cache_size_1.offthreadVideoCacheSizeInBytes,
|
|
10
11
|
videoBitrate: video_bitrate_1.videoBitrate,
|
|
11
12
|
numberOfGifLoops: number_of_gif_loops_1.numberOfGifLoopsOption,
|
|
13
|
+
repro: repro_1.reproOption,
|
|
12
14
|
},
|
|
13
15
|
renderStill: {
|
|
14
16
|
offthreadVideoCacheSizeInBytes: offthreadvideo_cache_size_1.offthreadVideoCacheSizeInBytes,
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.reproOption = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
exports.reproOption = {
|
|
6
|
+
name: 'Create reproduction',
|
|
7
|
+
cliFlag: 'repro',
|
|
8
|
+
description: () => ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: "Create a ZIP that you can submit to Remotion if asked for a reproduction." })),
|
|
9
|
+
ssrName: 'repro',
|
|
10
|
+
docLink: 'https://www.remotion.dev/docs/render-media#repro',
|
|
11
|
+
type: false,
|
|
12
|
+
};
|
package/dist/render-media.d.ts
CHANGED
|
@@ -78,6 +78,7 @@ export type InternalRenderMediaOptions = {
|
|
|
78
78
|
serveUrl: string;
|
|
79
79
|
concurrency: number | string | null;
|
|
80
80
|
colorSpace: ColorSpace;
|
|
81
|
+
finishRenderProgress: () => void;
|
|
81
82
|
} & MoreRenderMediaOptions;
|
|
82
83
|
type Prettify<T> = {
|
|
83
84
|
[K in keyof T]: T[K];
|
|
@@ -133,6 +134,7 @@ export type RenderMediaOptions = Prettify<{
|
|
|
133
134
|
concurrency?: number | string | null;
|
|
134
135
|
logLevel?: LogLevel;
|
|
135
136
|
colorSpace?: ColorSpace;
|
|
137
|
+
repro?: boolean;
|
|
136
138
|
}> & Partial<MoreRenderMediaOptions>;
|
|
137
139
|
type RenderMediaResult = {
|
|
138
140
|
buffer: Buffer | null;
|
|
@@ -144,5 +146,5 @@ export declare const internalRenderMedia: (args_0: InternalRenderMediaOptions) =
|
|
|
144
146
|
* @description Render a video from a composition
|
|
145
147
|
* @see [Documentation](https://www.remotion.dev/docs/renderer/render-media)
|
|
146
148
|
*/
|
|
147
|
-
export declare const renderMedia: ({ proResProfile, x264Preset, 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, encodingMaxRate, encodingBufferSize, audioCodec, jpegQuality, concurrency, serveUrl, disallowParallelEncoding, everyNthFrame, imageFormat, numberOfGifLoops, dumpBrowserLogs, preferLossless, verbose, quality, logLevel, offthreadVideoCacheSizeInBytes, colorSpace, }: RenderMediaOptions) => Promise<RenderMediaResult>;
|
|
149
|
+
export declare const renderMedia: ({ proResProfile, x264Preset, 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, encodingMaxRate, encodingBufferSize, audioCodec, jpegQuality, concurrency, serveUrl, disallowParallelEncoding, everyNthFrame, imageFormat, numberOfGifLoops, dumpBrowserLogs, preferLossless, verbose, quality, logLevel, offthreadVideoCacheSizeInBytes, colorSpace, repro, }: RenderMediaOptions) => Promise<RenderMediaResult>;
|
|
148
150
|
export {};
|
package/dist/render-media.js
CHANGED
|
@@ -34,6 +34,7 @@ const prespawn_ffmpeg_1 = require("./prespawn-ffmpeg");
|
|
|
34
34
|
const prestitcher_memory_usage_1 = require("./prestitcher-memory-usage");
|
|
35
35
|
const prores_profile_1 = require("./prores-profile");
|
|
36
36
|
const render_frames_1 = require("./render-frames");
|
|
37
|
+
const repro_1 = require("./repro");
|
|
37
38
|
const stitch_frames_to_video_1 = require("./stitch-frames-to-video");
|
|
38
39
|
const validate_1 = require("./validate");
|
|
39
40
|
const validate_even_dimensions_with_codec_1 = require("./validate-even-dimensions-with-codec");
|
|
@@ -46,7 +47,18 @@ const validate_videobitrate_1 = require("./validate-videobitrate");
|
|
|
46
47
|
const wrap_with_error_handling_1 = require("./wrap-with-error-handling");
|
|
47
48
|
const x264_preset_1 = require("./x264-preset");
|
|
48
49
|
const SLOWEST_FRAME_COUNT = 10;
|
|
49
|
-
const internalRenderMediaRaw = ({ proResProfile, x264Preset, crf, composition, serializedInputPropsWithCustomSchema, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, audioBitrate, videoBitrate, encodingMaxRate, encodingBufferSize, audioCodec, concurrency, disallowParallelEncoding, everyNthFrame, imageFormat: provisionalImageFormat, indent, jpegQuality, numberOfGifLoops, onCtrlCExit, preferLossless, serveUrl, server: reusedServer, logLevel, serializedResolvedPropsWithCustomSchema, offthreadVideoCacheSizeInBytes, colorSpace, }) => {
|
|
50
|
+
const internalRenderMediaRaw = ({ proResProfile, x264Preset, crf, composition, serializedInputPropsWithCustomSchema, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, audioBitrate, videoBitrate, encodingMaxRate, encodingBufferSize, audioCodec, concurrency, disallowParallelEncoding, everyNthFrame, imageFormat: provisionalImageFormat, indent, jpegQuality, numberOfGifLoops, onCtrlCExit, preferLossless, serveUrl, server: reusedServer, logLevel, serializedResolvedPropsWithCustomSchema, offthreadVideoCacheSizeInBytes, colorSpace, repro, finishRenderProgress, }) => {
|
|
51
|
+
if (repro) {
|
|
52
|
+
(0, repro_1.enableRepro)({
|
|
53
|
+
serveUrl,
|
|
54
|
+
compositionName: composition.id,
|
|
55
|
+
serializedInputPropsWithCustomSchema,
|
|
56
|
+
serializedResolvedPropsWithCustomSchema,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
(0, repro_1.disableRepro)();
|
|
61
|
+
}
|
|
50
62
|
(0, jpeg_quality_1.validateJpegQuality)(jpegQuality);
|
|
51
63
|
(0, crf_1.validateQualitySettings)({
|
|
52
64
|
crf,
|
|
@@ -395,7 +407,20 @@ const internalRenderMediaRaw = ({ proResProfile, x264Preset, crf, composition, s
|
|
|
395
407
|
buffer,
|
|
396
408
|
slowestFrames,
|
|
397
409
|
};
|
|
398
|
-
|
|
410
|
+
finishRenderProgress();
|
|
411
|
+
if ((0, repro_1.isReproEnabled)()) {
|
|
412
|
+
(0, repro_1.getReproWriter)()
|
|
413
|
+
.onRenderSucceed({ indent, logLevel, output: absoluteOutputLocation })
|
|
414
|
+
.then(() => {
|
|
415
|
+
resolve(result);
|
|
416
|
+
})
|
|
417
|
+
.catch((err) => {
|
|
418
|
+
logger_1.Log.errorAdvanced({ indent, logLevel }, 'Could not create reproduction', err);
|
|
419
|
+
});
|
|
420
|
+
}
|
|
421
|
+
else {
|
|
422
|
+
resolve(result);
|
|
423
|
+
}
|
|
399
424
|
})
|
|
400
425
|
.catch((err) => {
|
|
401
426
|
/**
|
|
@@ -447,7 +472,7 @@ exports.internalRenderMedia = (0, wrap_with_error_handling_1.wrapWithErrorHandli
|
|
|
447
472
|
* @description Render a video from a composition
|
|
448
473
|
* @see [Documentation](https://www.remotion.dev/docs/renderer/render-media)
|
|
449
474
|
*/
|
|
450
|
-
const renderMedia = ({ proResProfile, x264Preset, 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, encodingMaxRate, encodingBufferSize, audioCodec, jpegQuality, concurrency, serveUrl, disallowParallelEncoding, everyNthFrame, imageFormat, numberOfGifLoops, dumpBrowserLogs, preferLossless, verbose, quality, logLevel, offthreadVideoCacheSizeInBytes, colorSpace, }) => {
|
|
475
|
+
const renderMedia = ({ proResProfile, x264Preset, 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, encodingMaxRate, encodingBufferSize, audioCodec, jpegQuality, concurrency, serveUrl, disallowParallelEncoding, everyNthFrame, imageFormat, numberOfGifLoops, dumpBrowserLogs, preferLossless, verbose, quality, logLevel, offthreadVideoCacheSizeInBytes, colorSpace, repro, }) => {
|
|
451
476
|
var _a, _b;
|
|
452
477
|
if (quality !== undefined) {
|
|
453
478
|
console.warn(`The "quality" option has been renamed. Please use "jpegQuality" instead.`);
|
|
@@ -506,6 +531,8 @@ const renderMedia = ({ proResProfile, x264Preset, crf, composition, inputProps,
|
|
|
506
531
|
}).serializedString,
|
|
507
532
|
offthreadVideoCacheSizeInBytes: offthreadVideoCacheSizeInBytes !== null && offthreadVideoCacheSizeInBytes !== void 0 ? offthreadVideoCacheSizeInBytes : null,
|
|
508
533
|
colorSpace: colorSpace !== null && colorSpace !== void 0 ? colorSpace : 'default',
|
|
534
|
+
repro: repro !== null && repro !== void 0 ? repro : false,
|
|
535
|
+
finishRenderProgress: () => undefined,
|
|
509
536
|
});
|
|
510
537
|
};
|
|
511
538
|
exports.renderMedia = renderMedia;
|
package/dist/repro.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { LogLevel } from './log-level';
|
|
2
|
+
type ReproWriter = {
|
|
3
|
+
start: (options: {
|
|
4
|
+
serveUrl: string;
|
|
5
|
+
serializedInputPropsWithCustomSchema: string;
|
|
6
|
+
serializedResolvedPropsWithCustomSchema: string;
|
|
7
|
+
}) => void;
|
|
8
|
+
writeLine: (level: string, ...args: Parameters<typeof console.log>[]) => void;
|
|
9
|
+
onRenderSucceed: (options: {
|
|
10
|
+
output: string | null;
|
|
11
|
+
logLevel: LogLevel;
|
|
12
|
+
indent: boolean;
|
|
13
|
+
}) => Promise<void>;
|
|
14
|
+
};
|
|
15
|
+
export declare const getReproWriter: () => ReproWriter;
|
|
16
|
+
export declare const writeInRepro: (level: string, message?: any, ...optionalParams: any[]) => void;
|
|
17
|
+
export declare const enableRepro: ({ serveUrl, compositionName, serializedInputPropsWithCustomSchema, serializedResolvedPropsWithCustomSchema, }: {
|
|
18
|
+
serveUrl: string;
|
|
19
|
+
compositionName: string;
|
|
20
|
+
serializedInputPropsWithCustomSchema: string;
|
|
21
|
+
serializedResolvedPropsWithCustomSchema: string;
|
|
22
|
+
}) => void;
|
|
23
|
+
export declare const disableRepro: () => void;
|
|
24
|
+
export declare const isReproEnabled: () => boolean;
|
|
25
|
+
export {};
|
package/dist/repro.js
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.isReproEnabled = exports.disableRepro = exports.enableRepro = exports.writeInRepro = exports.getReproWriter = void 0;
|
|
30
|
+
const node_child_process_1 = require("node:child_process");
|
|
31
|
+
const node_fs_1 = __importStar(require("node:fs"));
|
|
32
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
33
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
34
|
+
const version_1 = require("remotion/version");
|
|
35
|
+
const chalk_1 = require("./chalk");
|
|
36
|
+
const find_closest_package_json_1 = require("./find-closest-package-json");
|
|
37
|
+
const is_serve_url_1 = require("./is-serve-url");
|
|
38
|
+
const logger_1 = require("./logger");
|
|
39
|
+
const REPRO_DIR = '.remotionrepro';
|
|
40
|
+
const LOG_FILE_NAME = 'logs.txt';
|
|
41
|
+
const INPUT_DIR = 'bundle';
|
|
42
|
+
const OUTPUT_DIR = 'output';
|
|
43
|
+
const LINE_SPLIT = '\n';
|
|
44
|
+
const getZipFileName = (name) => `remotion-repro-${name}-${Date.now()}.zip`;
|
|
45
|
+
const readyDirSync = (dir) => {
|
|
46
|
+
let items;
|
|
47
|
+
try {
|
|
48
|
+
items = node_fs_1.default.readdirSync(dir);
|
|
49
|
+
}
|
|
50
|
+
catch (_a) {
|
|
51
|
+
return node_fs_1.default.mkdirSync(dir, { recursive: true });
|
|
52
|
+
}
|
|
53
|
+
items.forEach((item) => {
|
|
54
|
+
item = node_path_1.default.join(dir, item);
|
|
55
|
+
node_fs_1.default.rmSync(item, { recursive: true, force: true });
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
const zipFolder = ({ sourceFolder, targetZip, indent, logLevel, }) => {
|
|
59
|
+
const platform = node_os_1.default.platform();
|
|
60
|
+
try {
|
|
61
|
+
logger_1.Log.infoAdvanced({ indent, logLevel }, '+ Creating reproduction ZIP');
|
|
62
|
+
if (platform === 'win32') {
|
|
63
|
+
(0, node_child_process_1.execSync)(`powershell.exe Compress-Archive -Path "${sourceFolder}" -DestinationPath "${targetZip}"`);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
(0, node_child_process_1.execSync)(`zip -r "${targetZip}" "${sourceFolder}"`);
|
|
67
|
+
}
|
|
68
|
+
(0, node_fs_1.rmSync)(sourceFolder, { recursive: true });
|
|
69
|
+
logger_1.Log.infoAdvanced({ indent, logLevel }, `${chalk_1.chalk.blue(`+ Repro: ${targetZip}`)}`);
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
logger_1.Log.errorAdvanced({ indent, logLevel }, `Failed to zip repro folder, The repro folder is ${sourceFolder}. You can try manually zip it.`);
|
|
73
|
+
logger_1.Log.errorAdvanced({ indent, logLevel }, error);
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
const reproWriter = (name) => {
|
|
77
|
+
const root = (0, find_closest_package_json_1.findRemotionRoot)();
|
|
78
|
+
const reproFolder = node_path_1.default.join(root, REPRO_DIR);
|
|
79
|
+
const logPath = node_path_1.default.join(reproFolder, LOG_FILE_NAME);
|
|
80
|
+
const zipFile = node_path_1.default.join(root, getZipFileName(name));
|
|
81
|
+
readyDirSync(reproFolder);
|
|
82
|
+
const reproLogWriteStream = node_fs_1.default.createWriteStream(logPath, { flags: 'a' });
|
|
83
|
+
const serializeArgs = (args) => JSON.stringify(args);
|
|
84
|
+
const writeLine = (level, ...args) => {
|
|
85
|
+
if (!args.length)
|
|
86
|
+
return;
|
|
87
|
+
const startTime = new Date().toISOString();
|
|
88
|
+
const line = `[${startTime}] ${level} ${serializeArgs(args)}`;
|
|
89
|
+
reproLogWriteStream.write(line + LINE_SPLIT);
|
|
90
|
+
};
|
|
91
|
+
const start = ({ serveUrl, serializedInputPropsWithCustomSchema, serializedResolvedPropsWithCustomSchema, }) => {
|
|
92
|
+
const isServe = (0, is_serve_url_1.isServeUrl)(serveUrl);
|
|
93
|
+
if (!isServe) {
|
|
94
|
+
const inputDir = node_path_1.default.resolve(reproFolder, INPUT_DIR);
|
|
95
|
+
readyDirSync(inputDir);
|
|
96
|
+
node_fs_1.default.cpSync(serveUrl, inputDir, { recursive: true });
|
|
97
|
+
}
|
|
98
|
+
const serializedProps = node_path_1.default.resolve(reproFolder, 'input-props.json');
|
|
99
|
+
node_fs_1.default.writeFileSync(serializedProps, serializedInputPropsWithCustomSchema);
|
|
100
|
+
const serializedResolvedProps = node_path_1.default.resolve(reproFolder, 'resolved-props.json');
|
|
101
|
+
node_fs_1.default.writeFileSync(serializedResolvedProps, serializedResolvedPropsWithCustomSchema);
|
|
102
|
+
writeLine('info', [`Args: ${JSON.stringify(process.argv)}`]);
|
|
103
|
+
writeLine('info', [`Node/Bun version: ${process.version}`]);
|
|
104
|
+
writeLine('info', [`OS: ${process.platform}-${process.arch}`]);
|
|
105
|
+
writeLine('info', [`Serve URL: ${serveUrl}`]);
|
|
106
|
+
writeLine('info', [`Remotion version: ${version_1.VERSION}`]);
|
|
107
|
+
};
|
|
108
|
+
const onRenderSucceed = ({ indent, logLevel, output, }) => {
|
|
109
|
+
return new Promise((resolve, reject) => {
|
|
110
|
+
try {
|
|
111
|
+
if (output) {
|
|
112
|
+
const outputDir = node_path_1.default.resolve(reproFolder, OUTPUT_DIR);
|
|
113
|
+
readyDirSync(outputDir);
|
|
114
|
+
const fileName = node_path_1.default.basename(output);
|
|
115
|
+
const targetPath = node_path_1.default.join(outputDir, fileName);
|
|
116
|
+
node_fs_1.default.copyFileSync(output, targetPath);
|
|
117
|
+
}
|
|
118
|
+
(0, exports.disableRepro)();
|
|
119
|
+
reproLogWriteStream.end(() => {
|
|
120
|
+
reproLogWriteStream.close(() => {
|
|
121
|
+
zipFolder({
|
|
122
|
+
sourceFolder: reproFolder,
|
|
123
|
+
targetZip: zipFile,
|
|
124
|
+
indent,
|
|
125
|
+
logLevel,
|
|
126
|
+
});
|
|
127
|
+
resolve();
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
logger_1.Log.error(`repro render success error:`);
|
|
133
|
+
logger_1.Log.error(error);
|
|
134
|
+
reject(error);
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
};
|
|
138
|
+
return {
|
|
139
|
+
start,
|
|
140
|
+
writeLine,
|
|
141
|
+
onRenderSucceed,
|
|
142
|
+
};
|
|
143
|
+
};
|
|
144
|
+
let reproWriteInstance = null;
|
|
145
|
+
const getReproWriter = () => {
|
|
146
|
+
if (!reproWriteInstance) {
|
|
147
|
+
throw new Error('reproWriteInstance is not initialized');
|
|
148
|
+
}
|
|
149
|
+
return reproWriteInstance;
|
|
150
|
+
};
|
|
151
|
+
exports.getReproWriter = getReproWriter;
|
|
152
|
+
const writeInRepro = (level, ...args) => {
|
|
153
|
+
if ((0, exports.isReproEnabled)()) {
|
|
154
|
+
(0, exports.getReproWriter)().writeLine(level, ...args);
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
exports.writeInRepro = writeInRepro;
|
|
158
|
+
let shouldRepro = false;
|
|
159
|
+
const enableRepro = ({ serveUrl, compositionName, serializedInputPropsWithCustomSchema, serializedResolvedPropsWithCustomSchema, }) => {
|
|
160
|
+
shouldRepro = true;
|
|
161
|
+
reproWriteInstance = reproWriter(compositionName);
|
|
162
|
+
(0, exports.getReproWriter)().start({
|
|
163
|
+
serveUrl,
|
|
164
|
+
serializedInputPropsWithCustomSchema,
|
|
165
|
+
serializedResolvedPropsWithCustomSchema,
|
|
166
|
+
});
|
|
167
|
+
};
|
|
168
|
+
exports.enableRepro = enableRepro;
|
|
169
|
+
const disableRepro = () => {
|
|
170
|
+
shouldRepro = false;
|
|
171
|
+
};
|
|
172
|
+
exports.disableRepro = disableRepro;
|
|
173
|
+
const isReproEnabled = () => shouldRepro;
|
|
174
|
+
exports.isReproEnabled = isReproEnabled;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remotion/renderer",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.88",
|
|
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.88"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
24
|
"react": ">=16.8.0",
|
|
@@ -40,13 +40,13 @@
|
|
|
40
40
|
"vitest": "0.31.1"
|
|
41
41
|
},
|
|
42
42
|
"optionalDependencies": {
|
|
43
|
-
"@remotion/compositor-darwin-arm64": "4.0.
|
|
44
|
-
"@remotion/compositor-linux-arm64-
|
|
45
|
-
"@remotion/compositor-linux-
|
|
46
|
-
"@remotion/compositor-
|
|
47
|
-
"@remotion/compositor-
|
|
48
|
-
"@remotion/compositor-linux-
|
|
49
|
-
"@remotion/compositor-
|
|
43
|
+
"@remotion/compositor-darwin-arm64": "4.0.88",
|
|
44
|
+
"@remotion/compositor-linux-arm64-musl": "4.0.88",
|
|
45
|
+
"@remotion/compositor-linux-arm64-gnu": "4.0.88",
|
|
46
|
+
"@remotion/compositor-darwin-x64": "4.0.88",
|
|
47
|
+
"@remotion/compositor-linux-x64-gnu": "4.0.88",
|
|
48
|
+
"@remotion/compositor-linux-x64-musl": "4.0.88",
|
|
49
|
+
"@remotion/compositor-win32-x64-msvc": "4.0.88"
|
|
50
50
|
},
|
|
51
51
|
"keywords": [
|
|
52
52
|
"remotion",
|