@remotion/cli 4.1.0-alpha2 → 4.1.0-alpha4

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/benchmark.js CHANGED
@@ -103,11 +103,11 @@ const benchmarkCommand = async (remotionRoot, args) => {
103
103
  const browserInstance = renderer_1.RenderInternals.internalOpenBrowser({
104
104
  browser,
105
105
  browserExecutable,
106
- shouldDumpIo: renderer_1.RenderInternals.isEqualOrBelowLogLevel(config_1.ConfigInternals.Logging.getLogLevel(), 'verbose'),
107
106
  chromiumOptions,
108
107
  forceDeviceScaleFactor: scale,
109
108
  indent: false,
110
109
  viewport: null,
110
+ logLevel,
111
111
  });
112
112
  const { urlOrBundle: bundleLocation, cleanup: cleanupBundle } = await (0, setup_cache_1.bundleOnCliOrTakeServeUrl)({
113
113
  fullPath: fullEntryPoint,
@@ -125,7 +125,6 @@ const benchmarkCommand = async (remotionRoot, args) => {
125
125
  });
126
126
  (0, cleanup_before_quit_1.registerCleanupJob)(() => cleanupBundle());
127
127
  const puppeteerInstance = await browserInstance;
128
- const verbose = renderer_1.RenderInternals.isEqualOrBelowLogLevel(config_1.ConfigInternals.Logging.getLogLevel(), 'verbose');
129
128
  const comps = await renderer_1.RenderInternals.internalGetCompositions({
130
129
  serveUrlOrWebpackUrl: bundleLocation,
131
130
  inputProps,
@@ -139,7 +138,7 @@ const benchmarkCommand = async (remotionRoot, args) => {
139
138
  onBrowserLog: null,
140
139
  // Intentionally disabling server to not cache results
141
140
  server: undefined,
142
- verbose,
141
+ logLevel,
143
142
  });
144
143
  const ids = (remainingArgs[0]
145
144
  ? remainingArgs[0]
@@ -197,14 +196,13 @@ const benchmarkCommand = async (remotionRoot, args) => {
197
196
  pixelFormat,
198
197
  proResProfile,
199
198
  jpegQuality,
200
- dumpBrowserLogs: verbose,
201
199
  chromiumOptions,
202
200
  timeoutInMilliseconds: config_1.ConfigInternals.getCurrentPuppeteerTimeout(),
203
201
  scale: configFileScale,
204
202
  port,
205
203
  numberOfGifLoops,
206
204
  everyNthFrame,
207
- verbose,
205
+ logLevel,
208
206
  muted,
209
207
  enforceAudioTrack,
210
208
  browserExecutable,
@@ -17,7 +17,7 @@ const listCompositionsCommand = async (remotionRoot, args) => {
17
17
  log_1.Log.error('See https://www.remotion.dev/docs/register-root for more information.');
18
18
  process.exit(1);
19
19
  }
20
- const verbose = renderer_1.RenderInternals.isEqualOrBelowLogLevel(config_1.ConfigInternals.Logging.getLogLevel(), 'verbose');
20
+ const logLevel = config_1.ConfigInternals.Logging.getLogLevel();
21
21
  log_1.Log.verbose('Entry point:', file, 'reason:', reason);
22
22
  const { browserExecutable, chromiumOptions, envVariables, inputProps, puppeteerTimeout, port, publicDir, } = await (0, get_cli_options_1.getCliOptions)({
23
23
  isLambda: false,
@@ -30,7 +30,7 @@ const listCompositionsCommand = async (remotionRoot, args) => {
30
30
  publicDir,
31
31
  onProgress: () => undefined,
32
32
  indentOutput: false,
33
- logLevel: config_1.ConfigInternals.Logging.getLogLevel(),
33
+ logLevel,
34
34
  bundlingStep: 0,
35
35
  steps: 1,
36
36
  onDirectoryCreated: (dir) => {
@@ -50,7 +50,7 @@ const listCompositionsCommand = async (remotionRoot, args) => {
50
50
  indent: false,
51
51
  onBrowserLog: null,
52
52
  puppeteerInstance: undefined,
53
- verbose,
53
+ logLevel,
54
54
  server: undefined,
55
55
  });
56
56
  (0, print_compositions_1.printCompositions)(compositions);
@@ -2,4 +2,4 @@ import type { StillImageFormat, VideoImageFormat } from '@remotion/renderer';
2
2
  export declare const setStillImageFormat: (format: StillImageFormat) => void;
3
3
  export declare const setVideoImageFormat: (format: VideoImageFormat) => void;
4
4
  export declare const getUserPreferredStillImageFormat: () => "png" | "jpeg" | "pdf" | "webp" | undefined;
5
- export declare const getUserPreferredVideoImageFormat: () => "png" | "jpeg" | "none" | undefined;
5
+ export declare const getUserPreferredVideoImageFormat: () => "none" | "png" | "jpeg" | undefined;
@@ -245,6 +245,30 @@ type FlatConfig = RemotionConfigObject & RemotionBundlingOptions & {
245
245
  * See the Encoding guide in the docs for defaults and available options.
246
246
  */
247
247
  setAudioCodec: (codec: 'pcm-16' | 'aac' | 'mp3' | 'opus') => void;
248
+ /**
249
+ * @deprecated 'The config format has changed. Change `Config.Bundling.*()` calls to `Config.*()` in your config file.'
250
+ */
251
+ Bundling: void;
252
+ /**
253
+ * @deprecated 'The config format has changed. Change `Config.Preview.*()` calls to `Config.*()` in your config file.'
254
+ */
255
+ Preview: void;
256
+ /**
257
+ * @deprecated 'The config format has changed. Change `Config.Log.*()` calls to `Config.*()` in your config file.'
258
+ */
259
+ Log: void;
260
+ /**
261
+ * @deprecated 'The config format has changed. Change `Config.Puppeteer.*()` calls to `Config.*()` in your config file.'
262
+ */
263
+ Puppeteer: void;
264
+ /**
265
+ * @deprecated 'The config format has changed. Change `Config.Rendering.*()` calls to `Config.*()` in your config file.'
266
+ */
267
+ Rendering: void;
268
+ /**
269
+ * @deprecated 'The config format has changed. Change `Config.Output.*()` calls to `Config.*()` in your config file.'
270
+ */
271
+ Output: void;
248
272
  };
249
273
  export declare const Config: FlatConfig;
250
274
  export type { Concurrency, WebpackConfiguration, WebpackOverrideFn };
@@ -273,7 +297,7 @@ export declare const ConfigInternals: {
273
297
  getShouldOutputImageSequence: (frameRange: FrameRange | null) => boolean;
274
298
  getDotEnvLocation: () => string | null;
275
299
  getUserPreferredStillImageFormat: () => "png" | "jpeg" | "pdf" | "webp" | undefined;
276
- getUserPreferredVideoImageFormat: () => "png" | "jpeg" | "none" | undefined;
300
+ getUserPreferredVideoImageFormat: () => "none" | "png" | "jpeg" | undefined;
277
301
  getWebpackOverrideFn: () => WebpackOverrideFn;
278
302
  getWebpackCaching: () => boolean;
279
303
  getOutputLocation: () => string | null;
@@ -83,6 +83,24 @@ const webpack_caching_2 = require("./webpack-caching");
83
83
  const webpack_poll_1 = require("./webpack-poll");
84
84
  const width_1 = require("./width");
85
85
  exports.Config = {
86
+ get Bundling() {
87
+ throw new Error('The config format has changed. Change `Config.Bundling.*()` calls to `Config.*()` in your config file.');
88
+ },
89
+ get Rendering() {
90
+ throw new Error('The config format has changed. Change `Config.Rendering.*()` calls to `Config.*()` in your config file.');
91
+ },
92
+ get Output() {
93
+ throw new Error('The config format has changed. Change `Config.Output.*()` calls to `Config.*()` in your config file.');
94
+ },
95
+ get Log() {
96
+ throw new Error('The config format has changed. Change `Config.Log.*()` calls to `Config.*()` in your config file.');
97
+ },
98
+ get Preview() {
99
+ throw new Error('The config format has changed. Change `Config.Preview.*()` calls to `Config.*()` in your config file.');
100
+ },
101
+ get Puppeteer() {
102
+ throw new Error('The config format has changed. Change `Config.Puppeteer.*()` calls to `Config.*()` in your config file.');
103
+ },
86
104
  setMaxTimelineTracks: max_timeline_tracks_2.setMaxTimelineTracks,
87
105
  setKeyboardShortcutsEnabled: keyboard_shortcuts_1.setKeyboardShortcutsEnabled,
88
106
  setNumberOfSharedAudioTags: number_of_shared_audio_tags_1.setNumberOfSharedAudioTags,
@@ -108,7 +126,7 @@ exports.Config = {
108
126
  throw new Error('setQuality() has been renamed - use setJpegQuality() instead.');
109
127
  },
110
128
  setImageFormat: () => {
111
- throw new Error('setImageFormat() has been renamed - use setVideoImageFormat() or setStillImageFormat() instead.');
129
+ throw new Error('Config.setImageFormat() has been renamed - use Config.setVideoImageFormat() instead (default "jpeg"). For rendering stills, use Config.setStillImageFormat() (default "png")');
112
130
  },
113
131
  setJpegQuality: jpeg_quality_2.setJpegQuality,
114
132
  setStillImageFormat: image_format_1.setStillImageFormat,
@@ -1 +1 @@
1
- export declare const getLogLevel: () => "verbose" | "info" | "warn" | "error", setLogLevel: (newLogLevel: "verbose" | "info" | "warn" | "error") => void;
1
+ export declare const getLogLevel: () => "error" | "verbose" | "info" | "warn", setLogLevel: (newLogLevel: "error" | "verbose" | "info" | "warn") => void;
@@ -9,6 +9,9 @@ const noop_1 = require("../../helpers/noop");
9
9
  const input_dragger_click_lock_1 = require("../../state/input-dragger-click-lock");
10
10
  const z_index_1 = require("../../state/z-index");
11
11
  const RemInput_1 = require("./RemInput");
12
+ const isInt = (num) => {
13
+ return num % 1 === 0;
14
+ };
12
15
  const InputDragger = ({ onValueChange, min: _min, max: _max, step: _step, value, onTextChange, formatter = (q) => String(q), status, rightAlign, ...props }) => {
13
16
  const [inputFallback, setInputFallback] = (0, react_1.useState)(false);
14
17
  const fallbackRef = (0, react_1.useRef)(null);
@@ -99,8 +102,17 @@ const InputDragger = ({ onValueChange, min: _min, max: _max, step: _step, value,
99
102
  (_a = fallbackRef.current) === null || _a === void 0 ? void 0 : _a.select();
100
103
  }
101
104
  }, [inputFallback]);
105
+ const deriveStep = (0, react_1.useMemo)(() => {
106
+ if (_step !== undefined) {
107
+ return _step;
108
+ }
109
+ if (typeof _min === 'number' && isInt(_min)) {
110
+ return 1;
111
+ }
112
+ return 0.0001;
113
+ }, [_min, _step]);
102
114
  if (inputFallback) {
103
- return ((0, jsx_runtime_1.jsx)(z_index_1.HigherZIndex, { onEscape: onEscape, onOutsideClick: noop_1.noop, children: (0, jsx_runtime_1.jsx)(RemInput_1.RemotionInput, { ref: fallbackRef, autoFocus: true, onKeyPress: onKeyPress, onBlur: onBlur, min: _min, step: _step, defaultValue: value, status: status, pattern: '[0-9]*[.]?[0-9]*', rightAlign: rightAlign, ...props }) }));
115
+ return ((0, jsx_runtime_1.jsx)(z_index_1.HigherZIndex, { onEscape: onEscape, onOutsideClick: noop_1.noop, children: (0, jsx_runtime_1.jsx)(RemInput_1.RemotionInput, { ref: fallbackRef, autoFocus: true, onKeyPress: onKeyPress, onBlur: onBlur, min: _min, max: _max, step: deriveStep, defaultValue: value, status: status, pattern: '[0-9]*[.]?[0-9]*', rightAlign: rightAlign, ...props }) }));
104
116
  }
105
117
  return ((0, jsx_runtime_1.jsx)("button", { type: "button", style: style, onClick: onClick, onPointerDown: onPointerDown, children: (0, jsx_runtime_1.jsx)("span", { style: span, children: formatter(value) }) }));
106
118
  };
@@ -13,5 +13,5 @@ export declare const getInputBorderColor: ({ status, isFocused, isHovered, }: {
13
13
  isFocused: boolean;
14
14
  isHovered: boolean;
15
15
  }) => "hsla(0, 0%, 100%, 0.15)" | "rgba(0, 0, 0, 0.6)" | "rgba(255, 255, 255, 0.05)" | "#ff3232" | "#f1c40f";
16
- export declare const RemotionInput: React.ForwardRefExoticComponent<Pick<Props, "status" | "key" | "rightAlign" | keyof React.InputHTMLAttributes<HTMLInputElement>> & React.RefAttributes<HTMLInputElement>>;
16
+ export declare const RemotionInput: React.ForwardRefExoticComponent<Pick<Props, "key" | "status" | "rightAlign" | keyof React.InputHTMLAttributes<HTMLInputElement>> & React.RefAttributes<HTMLInputElement>>;
17
17
  export {};
@@ -4,5 +4,5 @@ type Props = React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>
4
4
  status: RemInputStatus;
5
5
  name: string;
6
6
  };
7
- export declare const RemInputTypeColor: React.ForwardRefExoticComponent<Pick<Props, "status" | "key" | keyof React.InputHTMLAttributes<HTMLInputElement>> & React.RefAttributes<HTMLInputElement>>;
7
+ export declare const RemInputTypeColor: React.ForwardRefExoticComponent<Pick<Props, "key" | "status" | keyof React.InputHTMLAttributes<HTMLInputElement>> & React.RefAttributes<HTMLInputElement>>;
8
8
  export {};
@@ -3,5 +3,5 @@ type Props = React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLTextAreaEleme
3
3
  status: 'error' | 'warning' | 'ok';
4
4
  };
5
5
  export declare const inputBaseStyle: React.CSSProperties;
6
- export declare const RemTextarea: React.ForwardRefExoticComponent<Pick<Props, "status" | "key" | keyof React.InputHTMLAttributes<HTMLTextAreaElement>> & React.RefAttributes<HTMLTextAreaElement>>;
6
+ export declare const RemTextarea: React.ForwardRefExoticComponent<Pick<Props, "key" | "status" | keyof React.InputHTMLAttributes<HTMLTextAreaElement>> & React.RefAttributes<HTMLTextAreaElement>>;
7
7
  export {};
@@ -1,2 +1,2 @@
1
1
  import type { Codec } from '@remotion/renderer';
2
- export declare const humanReadableCodec: (codec: Codec) => "GIF" | "AAC" | "MP3" | "H.264" | "H.264 Matroska" | "H.265" | "ProRes" | "WebM VP8" | "WebM VP9" | "Waveform" | undefined;
2
+ export declare const humanReadableCodec: (codec: Codec) => "AAC" | "MP3" | "GIF" | "H.264" | "H.264 Matroska" | "H.265" | "ProRes" | "WebM VP8" | "WebM VP9" | "Waveform" | undefined;
@@ -16,4 +16,4 @@ export declare const BLUE_DISABLED = "#284f73";
16
16
  export declare const getBackgroundFromHoverState: ({ selected, hovered, }: {
17
17
  selected: boolean;
18
18
  hovered: boolean;
19
- }) => "transparent" | "hsla(0, 0%, 100%, 0.15)" | "hsla(0, 0%, 100%, 0.25)" | "rgba(255, 255, 255, 0.06)";
19
+ }) => "transparent" | "hsla(0, 0%, 100%, 0.15)" | "rgba(255, 255, 255, 0.06)" | "hsla(0, 0%, 100%, 0.25)";
@@ -20,7 +20,7 @@ export declare const getCliOptions: (options: {
20
20
  numberOfGifLoops: import("./config/number-of-gif-loops").Loop;
21
21
  stillFrame: number;
22
22
  browserExecutable: BrowserExecutable;
23
- logLevel: "verbose" | "info" | "warn" | "error";
23
+ logLevel: "error" | "verbose" | "info" | "warn";
24
24
  scale: number;
25
25
  chromiumOptions: ChromiumOptions;
26
26
  overwrite: boolean;
@@ -33,5 +33,5 @@ export declare const getCliOptions: (options: {
33
33
  videoBitrate: string | null;
34
34
  height: number | null;
35
35
  width: number | null;
36
- configFileImageFormat: "png" | "jpeg" | "none" | undefined;
36
+ configFileImageFormat: "none" | "png" | "jpeg" | undefined;
37
37
  }>;
@@ -1,6 +1,6 @@
1
- import type { BrowserExecutable, ChromiumOptions, HeadlessBrowser, RemotionServer } from '@remotion/renderer';
1
+ import type { BrowserExecutable, ChromiumOptions, HeadlessBrowser, LogLevel, RemotionServer } from '@remotion/renderer';
2
2
  import type { AnyCompMetadata } from 'remotion';
3
- export declare const getCompositionId: ({ args, compositionIdFromUi, inputProps, puppeteerInstance, envVariables, timeoutInMilliseconds, chromiumOptions, port, browserExecutable, serveUrlOrWebpackUrl, verbose, indent, server, }: {
3
+ export declare const getCompositionId: ({ args, compositionIdFromUi, inputProps, puppeteerInstance, envVariables, timeoutInMilliseconds, chromiumOptions, port, browserExecutable, serveUrlOrWebpackUrl, logLevel, indent, server, }: {
4
4
  args: string[];
5
5
  compositionIdFromUi: string | null;
6
6
  inputProps: Record<string, unknown>;
@@ -11,7 +11,7 @@ export declare const getCompositionId: ({ args, compositionIdFromUi, inputProps,
11
11
  port: number | null;
12
12
  browserExecutable: BrowserExecutable;
13
13
  serveUrlOrWebpackUrl: string;
14
- verbose: boolean;
14
+ logLevel: LogLevel;
15
15
  indent: boolean;
16
16
  server: RemotionServer;
17
17
  }) => Promise<{
@@ -15,7 +15,7 @@ const getCompName = ({ cliArgs, compositionIdFromUi, }) => {
15
15
  const [compName, ...remainingArgs] = cliArgs;
16
16
  return { compName, remainingArgs, reason: 'Passed as argument' };
17
17
  };
18
- const getCompositionId = async ({ args, compositionIdFromUi, inputProps, puppeteerInstance, envVariables, timeoutInMilliseconds, chromiumOptions, port, browserExecutable, serveUrlOrWebpackUrl, verbose, indent, server, }) => {
18
+ const getCompositionId = async ({ args, compositionIdFromUi, inputProps, puppeteerInstance, envVariables, timeoutInMilliseconds, chromiumOptions, port, browserExecutable, serveUrlOrWebpackUrl, logLevel, indent, server, }) => {
19
19
  const { compName, remainingArgs, reason: compReason, } = getCompName({
20
20
  cliArgs: args,
21
21
  compositionIdFromUi,
@@ -31,7 +31,7 @@ const getCompositionId = async ({ args, compositionIdFromUi, inputProps, puppete
31
31
  browserExecutable,
32
32
  chromiumOptions,
33
33
  port,
34
- verbose,
34
+ logLevel,
35
35
  server,
36
36
  indent,
37
37
  onBrowserLog: null,
@@ -55,7 +55,7 @@ const getCompositionId = async ({ args, compositionIdFromUi, inputProps, puppete
55
55
  chromiumOptions,
56
56
  port,
57
57
  browserExecutable,
58
- verbose,
58
+ logLevel,
59
59
  indent,
60
60
  server,
61
61
  serveUrlOrWebpackUrl,
@@ -1,6 +1,6 @@
1
- import type { BrowserExecutable, ChromiumOptions, HeadlessBrowser, RemotionServer } from '@remotion/renderer';
1
+ import type { BrowserExecutable, ChromiumOptions, HeadlessBrowser, LogLevel, RemotionServer } from '@remotion/renderer';
2
2
  import type { AnyCompMetadata } from 'remotion';
3
- export declare const getCompositionWithDimensionOverride: ({ height, width, args, compositionIdFromUi, chromiumOptions, envVariables, port, puppeteerInstance, timeoutInMilliseconds, browserExecutable, serveUrlOrWebpackUrl, indent, inputProps, verbose, server, }: {
3
+ export declare const getCompositionWithDimensionOverride: ({ height, width, args, compositionIdFromUi, chromiumOptions, envVariables, port, puppeteerInstance, timeoutInMilliseconds, browserExecutable, serveUrlOrWebpackUrl, indent, inputProps, logLevel, server, }: {
4
4
  height: number | null;
5
5
  width: number | null;
6
6
  args: string[];
@@ -13,7 +13,7 @@ export declare const getCompositionWithDimensionOverride: ({ height, width, args
13
13
  browserExecutable: BrowserExecutable | null;
14
14
  serveUrlOrWebpackUrl: string;
15
15
  indent: boolean;
16
- verbose: boolean;
16
+ logLevel: LogLevel;
17
17
  inputProps: Record<string, unknown>;
18
18
  server: RemotionServer;
19
19
  }) => Promise<{
@@ -2,13 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getCompositionWithDimensionOverride = void 0;
4
4
  const get_composition_id_1 = require("./get-composition-id");
5
- const getCompositionWithDimensionOverride = async ({ height, width, args, compositionIdFromUi, chromiumOptions, envVariables, port, puppeteerInstance, timeoutInMilliseconds, browserExecutable, serveUrlOrWebpackUrl, indent, inputProps, verbose, server, }) => {
5
+ const getCompositionWithDimensionOverride = async ({ height, width, args, compositionIdFromUi, chromiumOptions, envVariables, port, puppeteerInstance, timeoutInMilliseconds, browserExecutable, serveUrlOrWebpackUrl, indent, inputProps, logLevel, server, }) => {
6
6
  const returnValue = await (0, get_composition_id_1.getCompositionId)({
7
7
  args,
8
8
  compositionIdFromUi,
9
9
  indent,
10
10
  serveUrlOrWebpackUrl,
11
- verbose,
11
+ logLevel,
12
12
  browserExecutable,
13
13
  chromiumOptions,
14
14
  envVariables,
package/dist/index.d.ts CHANGED
@@ -62,20 +62,19 @@ export declare const CliInternals: {
62
62
  verbose: (message?: any, ...optionalParams: any[]) => void;
63
63
  verboseAdvanced: (options: {
64
64
  indent: boolean;
65
- logLevel: "verbose" | "info" | "warn" | "error";
65
+ logLevel: "error" | "verbose" | "info" | "warn";
66
66
  } & {
67
67
  tag?: string | undefined;
68
- secondTag?: string | undefined;
69
68
  }, message?: any, ...optionalParams: any[]) => void;
70
69
  info: (message?: any, ...optionalParams: any[]) => void;
71
70
  infoAdvanced: (options: {
72
71
  indent: boolean;
73
- logLevel: "verbose" | "info" | "warn" | "error";
72
+ logLevel: "error" | "verbose" | "info" | "warn";
74
73
  }, message?: any, ...optionalParams: any[]) => void;
75
74
  warn: (message?: any, ...optionalParams: any[]) => void;
76
75
  warnAdvanced: (options: {
77
76
  indent: boolean;
78
- logLevel: "verbose" | "info" | "warn" | "error";
77
+ logLevel: "error" | "verbose" | "info" | "warn";
79
78
  }, message?: any, ...optionalParams: any[]) => void;
80
79
  error: (message?: any, ...optionalParams: any[]) => void;
81
80
  };
@@ -99,7 +98,7 @@ export declare const CliInternals: {
99
98
  numberOfGifLoops: import("./config/number-of-gif-loops").Loop;
100
99
  stillFrame: number;
101
100
  browserExecutable: import("@remotion/renderer").BrowserExecutable;
102
- logLevel: "verbose" | "info" | "warn" | "error";
101
+ logLevel: "error" | "verbose" | "info" | "warn";
103
102
  scale: number;
104
103
  chromiumOptions: import("@remotion/renderer").ChromiumOptions;
105
104
  overwrite: boolean;
@@ -112,7 +111,7 @@ export declare const CliInternals: {
112
111
  videoBitrate: string | null;
113
112
  height: number | null;
114
113
  width: number | null;
115
- configFileImageFormat: "png" | "jpeg" | "none" | undefined;
114
+ configFileImageFormat: "none" | "png" | "jpeg" | undefined;
116
115
  }>;
117
116
  loadConfig: (remotionRoot: string) => Promise<string | null>;
118
117
  initializeCli: (remotionRoot: string) => Promise<void>;
@@ -121,7 +120,7 @@ export declare const CliInternals: {
121
120
  parsedCli: {
122
121
  "browser-executable": import("@remotion/renderer").BrowserExecutable;
123
122
  "pixel-format": "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
124
- "image-format": "png" | "jpeg" | "pdf" | "webp" | "none";
123
+ "image-format": "none" | "png" | "jpeg" | "pdf" | "webp";
125
124
  "prores-profile": "4444-xq" | "4444" | "hq" | "standard" | "light" | "proxy";
126
125
  "bundle-cache": string;
127
126
  "env-file": string;
@@ -173,7 +172,7 @@ export declare const CliInternals: {
173
172
  } & {
174
173
  _: string[];
175
174
  };
176
- handleCommonError: (err: Error, logLevel: "verbose" | "info" | "warn" | "error") => Promise<void>;
175
+ handleCommonError: (err: Error, logLevel: "error" | "verbose" | "info" | "warn") => Promise<void>;
177
176
  formatBytes: (number: number, options?: Intl.NumberFormatOptions & {
178
177
  locale: string;
179
178
  bits?: boolean | undefined;
@@ -185,7 +184,7 @@ export declare const CliInternals: {
185
184
  downloadName: string | null;
186
185
  outName: string | null;
187
186
  configImageFormat: "png" | "jpeg" | "pdf" | "webp" | null;
188
- cliFlag: "png" | "jpeg" | "pdf" | "webp" | "none" | null;
187
+ cliFlag: "none" | "png" | "jpeg" | "pdf" | "webp" | null;
189
188
  isLambda: boolean;
190
189
  fromUi: "png" | "jpeg" | "pdf" | "webp" | null;
191
190
  }) => {
@@ -200,8 +199,8 @@ export declare const CliInternals: {
200
199
  };
201
200
  getVideoImageFormat: ({ codec, uiImageFormat, }: {
202
201
  codec: import("@remotion/renderer").CodecOrUndefined;
203
- uiImageFormat: "png" | "jpeg" | "none" | null;
204
- }) => "png" | "jpeg" | "none";
202
+ uiImageFormat: "none" | "png" | "jpeg" | null;
203
+ }) => "none" | "png" | "jpeg";
205
204
  printCompositions: (compositions: import("remotion").AnyCompMetadata[]) => void;
206
205
  getFinalOutputCodec: ({ cliFlag, configFile, downloadName, outName, uiCodec, }: {
207
206
  cliFlag: import("@remotion/renderer").CodecOrUndefined;
@@ -215,9 +214,9 @@ export declare const CliInternals: {
215
214
  };
216
215
  listOfRemotionPackages: string[];
217
216
  shouldUseNonOverlayingLogger: ({ logLevel, }: {
218
- logLevel: "verbose" | "info" | "warn" | "error";
217
+ logLevel: "error" | "verbose" | "info" | "warn";
219
218
  }) => boolean;
220
- getCompositionWithDimensionOverride: ({ height, width, args, compositionIdFromUi, chromiumOptions, envVariables, port, puppeteerInstance, timeoutInMilliseconds, browserExecutable, serveUrlOrWebpackUrl, indent, inputProps, verbose, server, }: {
219
+ getCompositionWithDimensionOverride: ({ height, width, args, compositionIdFromUi, chromiumOptions, envVariables, port, puppeteerInstance, timeoutInMilliseconds, browserExecutable, serveUrlOrWebpackUrl, indent, inputProps, logLevel, server, }: {
221
220
  height: number | null;
222
221
  width: number | null;
223
222
  args: string[];
@@ -230,7 +229,7 @@ export declare const CliInternals: {
230
229
  browserExecutable: import("@remotion/renderer").BrowserExecutable;
231
230
  serveUrlOrWebpackUrl: string;
232
231
  indent: boolean;
233
- verbose: boolean;
232
+ logLevel: "error" | "verbose" | "info" | "warn";
234
233
  inputProps: Record<string, unknown>;
235
234
  server: import("@remotion/renderer").RemotionServer;
236
235
  }) => Promise<{
package/dist/log.d.ts CHANGED
@@ -2,20 +2,19 @@ export declare const Log: {
2
2
  verbose: (message?: any, ...optionalParams: any[]) => void;
3
3
  verboseAdvanced: (options: {
4
4
  indent: boolean;
5
- logLevel: "verbose" | "info" | "warn" | "error";
5
+ logLevel: "error" | "verbose" | "info" | "warn";
6
6
  } & {
7
7
  tag?: string | undefined;
8
- secondTag?: string | undefined;
9
8
  }, message?: any, ...optionalParams: any[]) => void;
10
9
  info: (message?: any, ...optionalParams: any[]) => void;
11
10
  infoAdvanced: (options: {
12
11
  indent: boolean;
13
- logLevel: "verbose" | "info" | "warn" | "error";
12
+ logLevel: "error" | "verbose" | "info" | "warn";
14
13
  }, message?: any, ...optionalParams: any[]) => void;
15
14
  warn: (message?: any, ...optionalParams: any[]) => void;
16
15
  warnAdvanced: (options: {
17
16
  indent: boolean;
18
- logLevel: "verbose" | "info" | "warn" | "error";
17
+ logLevel: "error" | "verbose" | "info" | "warn";
19
18
  }, message?: any, ...optionalParams: any[]) => void;
20
19
  error: (message?: any, ...optionalParams: any[]) => void;
21
20
  };
@@ -24,7 +24,7 @@ const createOverwriteableCliOutput = (options) => {
24
24
  .map((l) => {
25
25
  return `${renderer_1.RenderInternals.INDENT_TOKEN} ${l}`;
26
26
  })
27
- .join('\n'));
27
+ .join('\n') + '\n');
28
28
  }
29
29
  else {
30
30
  process.stdout.write(up + '\n');
@@ -171,16 +171,13 @@ const getGuiProgressSubtitle = (progress) => {
171
171
  return `Bundling ${Math.round(progress.bundling.progress * 100)}%`;
172
172
  }
173
173
  if (progress.copyingState.doneIn === null) {
174
- if (progress.copyingState.bytes < 100000000) {
175
- return 'Bundling 100%';
176
- }
177
174
  const bytes = new Intl.NumberFormat('en', {
178
175
  notation: 'compact',
179
176
  style: 'unit',
180
177
  unit: 'byte',
181
178
  unitDisplay: 'narrow',
182
179
  });
183
- return `Copying ${bytes.format(progress.copyingState.bytes)}`;
180
+ return `Copying public dir ${bytes.format(progress.copyingState.bytes)}`;
184
181
  }
185
182
  if (!progress.rendering) {
186
183
  return `Getting compositions`;
@@ -48,15 +48,17 @@ const user_passed_output_location_1 = require("../user-passed-output-location");
48
48
  const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel, browserExecutable, browser, chromiumOptions, scale, shouldOutputImageSequence, publicDir, inputProps, envVariables, puppeteerTimeout, port, height, width, remainingArgs, compositionIdFromUi, entryPointReason, overwrite, quiet, concurrency, frameRange, everyNthFrame, outputLocationFromUI, jpegQuality, onProgress, addCleanupCallback, cancelSignal, crf, uiCodec, uiImageFormat, ffmpegOverride, audioBitrate, muted, enforceAudioTrack, proResProfile, pixelFormat, videoBitrate, numberOfGifLoops, audioCodec, disallowParallelEncoding, }) => {
49
49
  var _a;
50
50
  const downloads = [];
51
- log_1.Log.verboseAdvanced({ indent, logLevel }, 'Browser executable: ', browserExecutable);
51
+ if (browserExecutable) {
52
+ log_1.Log.verboseAdvanced({ indent, logLevel }, 'Browser executable: ', browserExecutable);
53
+ }
52
54
  const browserInstance = renderer_1.RenderInternals.internalOpenBrowser({
53
55
  browser,
54
56
  browserExecutable,
55
- shouldDumpIo: renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'verbose'),
56
57
  chromiumOptions,
57
58
  forceDeviceScaleFactor: scale,
58
59
  indent,
59
60
  viewport: null,
61
+ logLevel,
60
62
  });
61
63
  const updatesDontOverwrite = (0, should_use_non_overlaying_logger_1.shouldUseNonOverlayingLogger)({ logLevel });
62
64
  const renderProgress = (0, progress_bar_1.createOverwriteableCliOutput)({
@@ -134,14 +136,14 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
134
136
  };
135
137
  };
136
138
  const puppeteerInstance = await browserInstance;
137
- addCleanupCallback(() => puppeteerInstance.close(false));
139
+ addCleanupCallback(() => puppeteerInstance.close(false, logLevel, indent));
138
140
  const actualConcurrency = renderer_1.RenderInternals.getActualConcurrency(concurrency);
139
141
  const server = renderer_1.RenderInternals.prepareServer({
140
142
  concurrency: actualConcurrency,
141
143
  indent,
142
144
  port,
143
145
  remotionRoot,
144
- verbose: renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'verbose'),
146
+ logLevel,
145
147
  webpackConfigOrServeUrl: urlOrBundle,
146
148
  });
147
149
  addCleanupCallback(() => server.then((s) => s.closeServer(false)));
@@ -159,7 +161,7 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
159
161
  puppeteerInstance,
160
162
  serveUrlOrWebpackUrl: urlOrBundle,
161
163
  timeoutInMilliseconds: puppeteerTimeout,
162
- verbose: renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'verbose'),
164
+ logLevel,
163
165
  server: await server,
164
166
  });
165
167
  const { codec, reason: codecReason } = (0, get_final_output_codec_1.getFinalOutputCodec)({
@@ -212,7 +214,6 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
212
214
  ? absoluteOutputFile
213
215
  : await node_fs_1.default.promises.mkdtemp(node_path_1.default.join(node_os_1.default.tmpdir(), 'react-motion-render'));
214
216
  log_1.Log.verboseAdvanced({ indent, logLevel }, 'Output dir', outputDir);
215
- const verbose = renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'verbose');
216
217
  await renderer_1.RenderInternals.internalRenderFrames({
217
218
  imageFormat,
218
219
  inputProps,
@@ -225,7 +226,6 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
225
226
  cancelSignal: cancelSignal !== null && cancelSignal !== void 0 ? cancelSignal : undefined,
226
227
  outputDir,
227
228
  webpackBundleOrServeUrl: urlOrBundle,
228
- dumpBrowserLogs: verbose,
229
229
  everyNthFrame,
230
230
  envVariables,
231
231
  frameRange,
@@ -243,7 +243,7 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
243
243
  muted,
244
244
  onBrowserLog: null,
245
245
  onFrameBuffer: null,
246
- verbose,
246
+ logLevel,
247
247
  });
248
248
  updateRenderProgress(true);
249
249
  log_1.Log.infoAdvanced({ indent, logLevel }, chalk_1.chalk.blue(`▶ ${absoluteOutputFile}`));
@@ -271,14 +271,13 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
271
271
  pixelFormat,
272
272
  proResProfile,
273
273
  jpegQuality: jpegQuality !== null && jpegQuality !== void 0 ? jpegQuality : renderer_1.RenderInternals.DEFAULT_JPEG_QUALITY,
274
- dumpBrowserLogs: renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'verbose'),
275
274
  chromiumOptions,
276
275
  timeoutInMilliseconds: config_1.ConfigInternals.getCurrentPuppeteerTimeout(),
277
276
  scale,
278
277
  port,
279
278
  numberOfGifLoops,
280
279
  everyNthFrame,
281
- verbose: renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'verbose'),
280
+ logLevel,
282
281
  muted,
283
282
  enforceAudioTrack,
284
283
  browserExecutable,
@@ -313,13 +312,12 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
313
312
  onBrowserLog: null,
314
313
  onStart: () => undefined,
315
314
  });
316
- log_1.Log.verboseAdvanced({ indent, logLevel });
315
+ updateRenderProgress(true);
316
+ log_1.Log.infoAdvanced({ indent, logLevel }, chalk_1.chalk.blue(`${exists ? '○' : '+'} ${absoluteOutputFile}`));
317
317
  log_1.Log.verboseAdvanced({ indent, logLevel }, `Slowest frames:`);
318
318
  slowestFrames.forEach(({ frame, time }) => {
319
- log_1.Log.verboseAdvanced({ indent, logLevel }, `Frame ${frame} (${time.toFixed(3)}ms)`);
319
+ log_1.Log.verboseAdvanced({ indent, logLevel }, ` Frame ${frame} (${time.toFixed(3)}ms)`);
320
320
  });
321
- updateRenderProgress(true);
322
- log_1.Log.infoAdvanced({ indent, logLevel }, chalk_1.chalk.blue(`${exists ? '○' : '+'} ${absoluteOutputFile}`));
323
321
  for (const line of renderer_1.RenderInternals.perf.getPerf()) {
324
322
  log_1.Log.verboseAdvanced({ indent, logLevel }, line);
325
323
  }
@@ -43,16 +43,17 @@ const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason,
43
43
  }
44
44
  onProgress({ message, value: progress, ...aggregate });
45
45
  };
46
- log_1.Log.verboseAdvanced({ indent: indentOutput, logLevel }, 'Browser executable: ', browserExecutable);
47
- const verbose = renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'verbose');
46
+ if (browserExecutable) {
47
+ log_1.Log.verboseAdvanced({ indent: indentOutput, logLevel }, 'Browser executable: ', browserExecutable);
48
+ }
48
49
  const browserInstance = renderer_1.RenderInternals.internalOpenBrowser({
49
50
  browser,
50
51
  browserExecutable,
51
52
  chromiumOptions,
52
- shouldDumpIo: verbose,
53
53
  forceDeviceScaleFactor: scale,
54
54
  indent: indentOutput,
55
55
  viewport: null,
56
+ logLevel,
56
57
  });
57
58
  const { cleanup: cleanupBundle, urlOrBundle } = await (0, setup_cache_1.bundleOnCliOrTakeServeUrl)({
58
59
  fullPath: fullEntryPoint,
@@ -79,13 +80,13 @@ const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason,
79
80
  indent: indentOutput,
80
81
  port,
81
82
  remotionRoot,
82
- verbose: renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'verbose'),
83
+ logLevel,
83
84
  webpackConfigOrServeUrl: urlOrBundle,
84
85
  });
85
86
  addCleanupCallback(() => server.then((s) => s.closeServer(false)));
86
87
  addCleanupCallback(() => cleanupBundle());
87
88
  const puppeteerInstance = await browserInstance;
88
- addCleanupCallback(() => puppeteerInstance.close(false));
89
+ addCleanupCallback(() => puppeteerInstance.close(false, logLevel, indentOutput));
89
90
  const { compositionId, config, reason, argsAfterComposition } = await (0, get_composition_with_dimension_override_1.getCompositionWithDimensionOverride)({
90
91
  height,
91
92
  width,
@@ -100,7 +101,7 @@ const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason,
100
101
  puppeteerInstance,
101
102
  serveUrlOrWebpackUrl: urlOrBundle,
102
103
  timeoutInMilliseconds: puppeteerTimeout,
103
- verbose: renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'verbose'),
104
+ logLevel,
104
105
  server: await server,
105
106
  });
106
107
  const { format: imageFormat, source } = (0, determine_image_format_1.determineFinalStillImageFormat)({
@@ -162,7 +163,6 @@ const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason,
162
163
  output: absoluteOutputLocation,
163
164
  serveUrl: urlOrBundle,
164
165
  jpegQuality,
165
- dumpBrowserLogs: verbose,
166
166
  envVariables,
167
167
  imageFormat,
168
168
  inputProps,
@@ -178,7 +178,7 @@ const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason,
178
178
  cancelSignal,
179
179
  indent: indentOutput,
180
180
  onBrowserLog: null,
181
- verbose,
181
+ logLevel,
182
182
  });
183
183
  aggregate.rendering = {
184
184
  frames: 1,
@@ -139,7 +139,7 @@ const bundleOnCli = async ({ fullPath, remotionRoot, publicDir, onProgressCallba
139
139
  };
140
140
  copyingState = {
141
141
  ...copyingState,
142
- doneIn: copyStart ? Date.now() - copyStart : null,
142
+ doneIn: copyStart ? Date.now() - copyStart : 0,
143
143
  };
144
144
  updateProgress(true);
145
145
  log_1.Log.verboseAdvanced({ indent, logLevel }, 'Bundled under', bundled);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remotion/cli",
3
- "version": "4.1.0-alpha2",
3
+ "version": "4.1.0-alpha4",
4
4
  "description": "CLI for Remotion",
5
5
  "main": "dist/index.js",
6
6
  "sideEffects": false,
@@ -35,11 +35,11 @@
35
35
  "prompts": "2.4.1",
36
36
  "semver": "7.3.5",
37
37
  "source-map": "0.6.1",
38
- "@remotion/bundler": "4.1.0-alpha2",
39
- "remotion": "4.1.0-alpha2",
40
- "@remotion/player": "4.1.0-alpha2",
41
- "@remotion/media-utils": "4.1.0-alpha2",
42
- "@remotion/renderer": "4.1.0-alpha2"
38
+ "@remotion/bundler": "4.1.0-alpha4",
39
+ "@remotion/media-utils": "4.1.0-alpha4",
40
+ "@remotion/player": "4.1.0-alpha4",
41
+ "@remotion/renderer": "4.1.0-alpha4",
42
+ "remotion": "4.1.0-alpha4"
43
43
  },
44
44
  "peerDependencies": {
45
45
  "react": ">=16.8.0",
@@ -65,8 +65,8 @@
65
65
  "typescript": "4.9.5",
66
66
  "vitest": "0.31.1",
67
67
  "zod": "^3.21.4",
68
- "@remotion/tailwind": "4.1.0-alpha2",
69
- "@remotion/zod-types": "4.1.0-alpha2"
68
+ "@remotion/zod-types": "4.1.0-alpha4",
69
+ "@remotion/tailwind": "4.1.0-alpha4"
70
70
  },
71
71
  "keywords": [
72
72
  "remotion",