@remotion/cli 3.2.28 → 3.2.29

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.
File without changes
package/dist/benchmark.js CHANGED
File without changes
@@ -0,0 +1 @@
1
+ export declare const bundleCommand: (remotionRoot: string) => Promise<void>;
package/dist/bundle.js ADDED
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bundleCommand = void 0;
4
+ const get_cli_options_1 = require("./get-cli-options");
5
+ const initialize_render_cli_1 = require("./initialize-render-cli");
6
+ const log_1 = require("./log");
7
+ const parse_command_line_1 = require("./parse-command-line");
8
+ const prepare_entry_point_1 = require("./prepare-entry-point");
9
+ const bundleCommand = async (remotionRoot) => {
10
+ const file = parse_command_line_1.parsedCli._[1];
11
+ if (!file) {
12
+ log_1.Log.error('No entry point specified. Pass more arguments:');
13
+ log_1.Log.error(' npx remotion bundle [entry-point]');
14
+ log_1.Log.error('Documentation: https://www.remotion.dev/docs/cli/bundle');
15
+ process.exit(1);
16
+ }
17
+ await (0, initialize_render_cli_1.initializeRenderCli)(remotionRoot, 'bundle');
18
+ const { publicPath, bundleOutDir } = await (0, get_cli_options_1.getCliOptions)({
19
+ isLambda: false,
20
+ type: 'get-compositions-or-bundle',
21
+ });
22
+ const { urlOrBundle } = await (0, prepare_entry_point_1.prepareEntryPoint)({
23
+ file,
24
+ otherSteps: [],
25
+ outDir: bundleOutDir,
26
+ publicPath,
27
+ remotionRoot,
28
+ });
29
+ log_1.Log.info();
30
+ log_1.Log.info(urlOrBundle);
31
+ };
32
+ exports.bundleCommand = bundleCommand;
@@ -0,0 +1,2 @@
1
+ export declare const getBundleOutDir: () => string | null;
2
+ export declare const setBundleDir: (path: string) => void;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setBundleDir = exports.getBundleOutDir = void 0;
4
+ let bundleOutDir = null;
5
+ const getBundleOutDir = () => {
6
+ return bundleOutDir;
7
+ };
8
+ exports.getBundleOutDir = getBundleOutDir;
9
+ const setBundleDir = (path) => {
10
+ bundleOutDir = path;
11
+ };
12
+ exports.setBundleDir = setBundleDir;
@@ -0,0 +1,2 @@
1
+ export declare const getPublicPath: () => string | null;
2
+ export declare const setPublicPath: (path: string) => void;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setPublicPath = exports.getPublicPath = void 0;
4
+ let publicPath = null;
5
+ const getPublicPath = () => {
6
+ return publicPath;
7
+ };
8
+ exports.getPublicPath = getPublicPath;
9
+ const setPublicPath = (path) => {
10
+ publicPath = path;
11
+ };
12
+ exports.setPublicPath = setPublicPath;
@@ -1,3 +1,3 @@
1
1
  import type { LogLevel } from '@remotion/renderer';
2
- export declare const getLogLevel: () => "error" | "verbose" | "info" | "warn";
2
+ export declare const getLogLevel: () => "verbose" | "error" | "info" | "warn";
3
3
  export declare const setLogLevel: (newLogLevel: LogLevel) => void;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ export declare const Button: React.FC<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement> & {
3
+ children: React.ReactNode;
4
+ }>;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Button = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const colors_1 = require("../helpers/colors");
6
+ const layout_1 = require("./layout");
7
+ const container = {
8
+ padding: 10,
9
+ cursor: 'pointer',
10
+ fontSize: 14,
11
+ };
12
+ const button = {
13
+ border: `1px solid ${colors_1.INPUT_BORDER_COLOR_UNHOVERED}`,
14
+ borderRadius: 4,
15
+ backgroundColor: colors_1.INPUT_BACKGROUND,
16
+ appearance: 'none',
17
+ fontFamily: 'inherit',
18
+ fontSize: 14,
19
+ color: 'white',
20
+ };
21
+ const Button = ({ children, ...props }) => {
22
+ return ((0, jsx_runtime_1.jsx)("button", { ...props, style: button, type: "button", children: (0, jsx_runtime_1.jsx)(layout_1.Row, { style: container, children: children }) }));
23
+ };
24
+ exports.Button = Button;
@@ -1,5 +0,0 @@
1
- import React from 'react';
2
- export declare const PlayPause: React.FC<{
3
- playbackRate: number;
4
- loop: boolean;
5
- }>;
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare const PreviewZoomControls: React.FC;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PreviewZoomControls = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const minus_1 = require("../icons/minus");
7
+ const plus_1 = require("../icons/plus");
8
+ const preview_size_1 = require("../state/preview-size");
9
+ const ControlButton_1 = require("./ControlButton");
10
+ const layout_1 = require("./layout");
11
+ const container = {
12
+ color: 'black',
13
+ flexDirection: 'row',
14
+ display: 'flex',
15
+ };
16
+ const buttonStyle = {
17
+ fontSize: 24,
18
+ };
19
+ const iconStyle = {
20
+ color: 'white',
21
+ width: 14,
22
+ };
23
+ const PreviewZoomControls = () => {
24
+ const { size, setSize } = (0, react_1.useContext)(preview_size_1.PreviewSizeContext);
25
+ const onZoomOutClicked = (0, react_1.useCallback)(() => {
26
+ setSize((z) => {
27
+ // TODO: Don't assume 1
28
+ const newSize = Number((z.size === 'auto' ? 1 : z.size - preview_size_1.ZOOM_BUTTON_STEP).toFixed(2));
29
+ return { ...z, size: Math.max(preview_size_1.PREVIEW_MIN_ZOOM, newSize) };
30
+ });
31
+ }, [setSize]);
32
+ const onZoomInClicked = (0, react_1.useCallback)(() => {
33
+ setSize((z) => {
34
+ // TODO: Don't assume 1
35
+ if (z.size === 'auto')
36
+ return {
37
+ size: 1 + preview_size_1.ZOOM_BUTTON_STEP,
38
+ translation: {
39
+ x: 0,
40
+ y: 0,
41
+ },
42
+ };
43
+ const newSize = Number((Number(z) + preview_size_1.ZOOM_BUTTON_STEP).toFixed(2));
44
+ return { ...z, size: Math.min(preview_size_1.PREVIEW_MAX_ZOOM, newSize) };
45
+ });
46
+ }, [setSize]);
47
+ return ((0, jsx_runtime_1.jsxs)("div", { style: container, children: [(0, jsx_runtime_1.jsx)(ControlButton_1.ControlButton, { onClick: onZoomOutClicked, style: buttonStyle, title: "Zoom out preview", role: 'ControlButton', type: "button", disabled: size.size !== 'auto' && preview_size_1.PREVIEW_MIN_ZOOM === size.size, children: (0, jsx_runtime_1.jsx)(minus_1.Minus, { style: iconStyle }) }), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { x: 0.5 }), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { x: 0.5 }), (0, jsx_runtime_1.jsx)(ControlButton_1.ControlButton, { onClick: onZoomInClicked, style: buttonStyle, title: "Zoom in preview", role: 'button', type: "button", disabled: size.size !== 'auto' && preview_size_1.PREVIEW_MAX_ZOOM === size.size, children: (0, jsx_runtime_1.jsx)(plus_1.Plus, { style: iconStyle }) })] }));
48
+ };
49
+ exports.PreviewZoomControls = PreviewZoomControls;
@@ -0,0 +1,5 @@
1
+ export declare function normalizeWheel(event: WheelEvent): {
2
+ deltaX: number;
3
+ deltaY: number;
4
+ deltaZ: number;
5
+ };
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeWheel = void 0;
4
+ // Taken from https://github.com/tldraw/tldraw/blob/254dfdfd77c4abde53240f7d8ca3558e08688493/packages/core/src/hooks/useZoomEvents.ts which is adapted from https://stackoverflow.com/a/13650579
5
+ const MAX_ZOOM_STEP = 10;
6
+ function normalizeWheel(event) {
7
+ const { deltaY, deltaX } = event;
8
+ let deltaZ = 0;
9
+ if (event.ctrlKey || event.metaKey) {
10
+ const signY = Math.sign(event.deltaY);
11
+ const absDeltaY = Math.abs(event.deltaY);
12
+ let dy = deltaY;
13
+ if (absDeltaY > MAX_ZOOM_STEP) {
14
+ dy = MAX_ZOOM_STEP * signY;
15
+ }
16
+ deltaZ = dy;
17
+ }
18
+ return { deltaX, deltaY, deltaZ };
19
+ }
20
+ exports.normalizeWheel = normalizeWheel;
@@ -31,7 +31,7 @@ export declare const getCliOptions: (options: {
31
31
  browserExecutable: BrowserExecutable;
32
32
  ffmpegExecutable: import("@remotion/renderer").FfmpegExecutable;
33
33
  ffprobeExecutable: import("@remotion/renderer").FfmpegExecutable;
34
- logLevel: "error" | "verbose" | "info" | "warn";
34
+ logLevel: "verbose" | "error" | "info" | "warn";
35
35
  scale: number;
36
36
  chromiumOptions: ChromiumOptions;
37
37
  overwrite: boolean;
File without changes
File without changes
package/dist/index.d.ts CHANGED
@@ -90,7 +90,7 @@ export declare const CliInternals: {
90
90
  browserExecutable: import("@remotion/renderer").BrowserExecutable;
91
91
  ffmpegExecutable: import("@remotion/renderer").FfmpegExecutable;
92
92
  ffprobeExecutable: import("@remotion/renderer").FfmpegExecutable;
93
- logLevel: "error" | "verbose" | "info" | "warn";
93
+ logLevel: "verbose" | "error" | "info" | "warn";
94
94
  scale: number;
95
95
  chromiumOptions: import("@remotion/renderer").ChromiumOptions;
96
96
  overwrite: boolean;
@@ -0,0 +1,12 @@
1
+ import type { RenderStep } from './step';
2
+ export declare const prepareEntryPoint: ({ file, otherSteps, publicPath, outDir, remotionRoot, }: {
3
+ file: string;
4
+ otherSteps: RenderStep[];
5
+ outDir: string | null;
6
+ publicPath: string | null;
7
+ remotionRoot: string;
8
+ }) => Promise<{
9
+ urlOrBundle: string;
10
+ steps: RenderStep[];
11
+ shouldDelete: boolean;
12
+ }>;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.prepareEntryPoint = void 0;
7
+ const renderer_1 = require("@remotion/renderer");
8
+ const promises_1 = require("fs/promises");
9
+ const path_1 = __importDefault(require("path"));
10
+ const process_1 = require("process");
11
+ const log_1 = require("./log");
12
+ const setup_cache_1 = require("./setup-cache");
13
+ const prepareEntryPoint = async ({ file, otherSteps, publicPath, outDir, remotionRoot, }) => {
14
+ if (renderer_1.RenderInternals.isServeUrl(file)) {
15
+ return { urlOrBundle: file, steps: otherSteps, shouldDelete: false };
16
+ }
17
+ const joined = path_1.default.resolve(process.cwd(), file);
18
+ try {
19
+ const stats = await (0, promises_1.stat)(joined);
20
+ if (stats.isDirectory()) {
21
+ return { urlOrBundle: joined, steps: otherSteps, shouldDelete: false };
22
+ }
23
+ }
24
+ catch (err) {
25
+ log_1.Log.error(`No file or directory exists at ${joined}.`);
26
+ (0, process_1.exit)(1);
27
+ }
28
+ const urlOrBundle = await (0, setup_cache_1.bundleOnCliOrTakeServeUrl)({
29
+ fullPath: joined,
30
+ steps: ['bundling', ...otherSteps],
31
+ outDir,
32
+ publicPath,
33
+ remotionRoot,
34
+ });
35
+ return { urlOrBundle, steps: ['bundling', ...otherSteps], shouldDelete: true };
36
+ };
37
+ exports.prepareEntryPoint = prepareEntryPoint;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.validateImageFormat = void 0;
4
4
  const log_1 = require("./log");
5
5
  const validateImageFormat = (imageFormat, outName) => {
6
- if (imageFormat === 'png' && !(outName === null || outName === void 0 ? void 0 : outName.endsWith('.png'))) {
6
+ if (imageFormat === 'png' && (outName === null || outName === void 0 ? void 0 : outName.endsWith('.png'))) {
7
7
  log_1.Log.warn(`Rendering a PNG, expected a .png extension but got ${outName}`);
8
8
  }
9
9
  if (imageFormat === 'jpeg' &&
@@ -0,0 +1,12 @@
1
+ declare type Environment = 'development' | 'production';
2
+ declare global {
3
+ namespace NodeJS {
4
+ interface ProcessVersions {
5
+ pnp?: string;
6
+ }
7
+ }
8
+ }
9
+ export declare const clearCache: (environment: Environment, inputProps: object | null) => Promise<void>;
10
+ export declare const getWebpackCacheName: (environment: Environment, inputProps: object | null) => string;
11
+ export declare const cacheExists: (environment: Environment, inputProps: object | null) => boolean;
12
+ export {};
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.cacheExists = exports.getWebpackCacheName = exports.clearCache = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const remotion_1 = require("remotion");
10
+ // Inlined from https://github.com/webpack/webpack/blob/4c2ee7a4ddb8db2362ca83b6c4190523387ba7ee/lib/config/defaults.js#L265
11
+ // An algorithm to determine where Webpack will cache the depencies
12
+ const getWebpackCacheDir = () => {
13
+ const cwd = process.cwd();
14
+ let dir = cwd;
15
+ for (;;) {
16
+ try {
17
+ if (fs_1.default.statSync(path_1.default.join(dir, 'package.json')).isFile()) {
18
+ break;
19
+ }
20
+ // eslint-disable-next-line no-empty
21
+ }
22
+ catch (e) { }
23
+ const parent = path_1.default.dirname(dir);
24
+ if (dir === parent) {
25
+ dir = undefined;
26
+ break;
27
+ }
28
+ dir = parent;
29
+ }
30
+ if (!dir) {
31
+ return path_1.default.resolve(cwd, '.cache/webpack');
32
+ }
33
+ if (process.versions.pnp === '1') {
34
+ return path_1.default.resolve(dir, '.pnp/.cache/webpack');
35
+ }
36
+ if (process.versions.pnp === '3') {
37
+ return path_1.default.resolve(dir, '.yarn/.cache/webpack');
38
+ }
39
+ return path_1.default.resolve(dir, 'node_modules/.cache/webpack');
40
+ };
41
+ const remotionCacheLocation = (environment, inputProps) => {
42
+ return path_1.default.join(getWebpackCacheDir(), (0, exports.getWebpackCacheName)(environment, inputProps));
43
+ };
44
+ const clearCache = (environment, inputProps) => {
45
+ var _a;
46
+ return ((_a = fs_1.default.promises.rm) !== null && _a !== void 0 ? _a : fs_1.default.promises.rmdir)(remotionCacheLocation(environment, inputProps), {
47
+ recursive: true,
48
+ });
49
+ };
50
+ exports.clearCache = clearCache;
51
+ const getWebpackCacheName = (environment, inputProps) => {
52
+ // In development, let's reset the cache when input props
53
+ // are changing, because they are injected using Webpack and if changed,
54
+ // it will get the cached version
55
+ if (environment === 'development') {
56
+ return `remotion-v3-${environment}-${(0, remotion_1.random)(JSON.stringify(inputProps))}`;
57
+ }
58
+ // In production, the cache is independent from input props because
59
+ // they are passed over URL params. Speed is mostly important in production.
60
+ return `remotion-v3-${environment}`;
61
+ };
62
+ exports.getWebpackCacheName = getWebpackCacheName;
63
+ const cacheExists = (environment, inputProps) => {
64
+ return fs_1.default.existsSync(remotionCacheLocation(environment, inputProps));
65
+ };
66
+ exports.cacheExists = cacheExists;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remotion/cli",
3
- "version": "3.2.28",
3
+ "version": "3.2.29",
4
4
  "description": "CLI for Remotion",
5
5
  "main": "dist/index.js",
6
6
  "sideEffects": false,
@@ -23,15 +23,15 @@
23
23
  "author": "Jonny Burger <jonny@remotion.dev>",
24
24
  "license": "SEE LICENSE IN LICENSE.md",
25
25
  "dependencies": {
26
- "@remotion/bundler": "3.2.28",
27
- "@remotion/media-utils": "3.2.28",
28
- "@remotion/player": "3.2.28",
29
- "@remotion/renderer": "3.2.28",
26
+ "@remotion/bundler": "3.2.29",
27
+ "@remotion/media-utils": "3.2.29",
28
+ "@remotion/player": "3.2.29",
29
+ "@remotion/renderer": "3.2.29",
30
30
  "better-opn": "2.1.1",
31
31
  "dotenv": "9.0.2",
32
32
  "memfs": "3.4.3",
33
33
  "minimist": "1.2.6",
34
- "remotion": "3.2.28",
34
+ "remotion": "3.2.29",
35
35
  "semver": "7.3.5",
36
36
  "source-map": "0.6.1"
37
37
  },
@@ -71,5 +71,5 @@
71
71
  "publishConfig": {
72
72
  "access": "public"
73
73
  },
74
- "gitHead": "49bb70afa503bfb0c89ee51d8bf3386ad1b91ac4"
74
+ "gitHead": "9a2ff4d68324af8d1fe55ebdf94bdadccf446a10"
75
75
  }