@remotion/cli 3.1.6 → 3.1.7

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.
Files changed (126) hide show
  1. package/dist/code-frame.js +3 -3
  2. package/dist/compositions.d.ts +1 -1
  3. package/dist/compositions.js +9 -3
  4. package/dist/config/browser-executable.d.ts +3 -0
  5. package/dist/config/browser-executable.js +12 -0
  6. package/dist/config/browser.d.ts +3 -0
  7. package/dist/config/browser.js +18 -0
  8. package/dist/config/chromium-flags.d.ts +9 -0
  9. package/dist/config/chromium-flags.js +33 -0
  10. package/dist/config/codec.d.ts +7 -0
  11. package/dist/config/codec.js +40 -0
  12. package/dist/config/concurrency.d.ts +3 -0
  13. package/dist/config/concurrency.js +12 -0
  14. package/dist/config/crf.d.ts +4 -0
  15. package/dist/config/crf.js +23 -0
  16. package/dist/config/env-file.d.ts +2 -0
  17. package/dist/config/env-file.js +10 -0
  18. package/dist/config/every-nth-frame.d.ts +3 -0
  19. package/dist/config/every-nth-frame.js +20 -0
  20. package/dist/config/ffmpeg-executable.d.ts +5 -0
  21. package/dist/config/ffmpeg-executable.js +21 -0
  22. package/dist/config/frame-range.d.ts +4 -0
  23. package/dist/config/frame-range.js +35 -0
  24. package/dist/config/image-format.d.ts +3 -0
  25. package/dist/config/image-format.js +20 -0
  26. package/dist/config/image-sequence.d.ts +3 -0
  27. package/dist/config/image-sequence.js +15 -0
  28. package/dist/config/index.d.ts +43 -0
  29. package/dist/config/index.js +162 -0
  30. package/dist/config/log.d.ts +3 -0
  31. package/dist/config/log.js +12 -0
  32. package/dist/config/max-timeline-tracks.d.ts +2 -0
  33. package/dist/config/max-timeline-tracks.js +24 -0
  34. package/dist/config/number-of-gif-loops.d.ts +4 -0
  35. package/dist/config/number-of-gif-loops.js +21 -0
  36. package/dist/config/output-location.d.ts +2 -0
  37. package/dist/config/output-location.js +16 -0
  38. package/dist/config/override-webpack.d.ts +5 -0
  39. package/dist/config/override-webpack.js +14 -0
  40. package/dist/config/overwrite.d.ts +2 -0
  41. package/dist/config/overwrite.js +14 -0
  42. package/dist/config/pixel-format.d.ts +3 -0
  43. package/dist/config/pixel-format.js +16 -0
  44. package/dist/config/preview-server.d.ts +2 -0
  45. package/dist/config/preview-server.js +20 -0
  46. package/dist/config/prores-profile.d.ts +3 -0
  47. package/dist/config/prores-profile.js +12 -0
  48. package/dist/config/quality.d.ts +2 -0
  49. package/dist/config/quality.js +17 -0
  50. package/dist/config/scale.d.ts +3 -0
  51. package/dist/config/scale.js +15 -0
  52. package/dist/config/still-frame.d.ts +2 -0
  53. package/dist/config/still-frame.js +12 -0
  54. package/dist/config/timeout.d.ts +2 -0
  55. package/dist/config/timeout.js +17 -0
  56. package/dist/config/webpack-caching.d.ts +3 -0
  57. package/dist/config/webpack-caching.js +16 -0
  58. package/dist/editor/components/CompositionSelectorItem.d.ts +1 -1
  59. package/dist/editor/components/CompositionSelectorItem.js +2 -1
  60. package/dist/editor/components/Editor.js +2 -1
  61. package/dist/editor/components/InitialCompositionLoader.d.ts +1 -1
  62. package/dist/editor/components/InitialCompositionLoader.js +17 -4
  63. package/dist/editor/components/PlayPause.js +4 -0
  64. package/dist/editor/components/Timeline/TimelineDragHandler.js +3 -2
  65. package/dist/editor/components/Timeline/TimelineInOutPointer.js +2 -1
  66. package/dist/editor/components/Timeline/TimelineListItem.js +1 -0
  67. package/dist/editor/components/TimelineInOutToggle.js +3 -2
  68. package/dist/editor/state/in-out.d.ts +12 -0
  69. package/dist/editor/state/in-out.js +23 -0
  70. package/dist/find-closest-package-json.d.ts +2 -0
  71. package/dist/find-closest-package-json.js +35 -0
  72. package/dist/get-cli-options.d.ts +4 -5
  73. package/dist/get-cli-options.js +35 -32
  74. package/dist/get-config-file-name.d.ts +1 -1
  75. package/dist/get-config-file-name.js +9 -6
  76. package/dist/get-env.js +6 -4
  77. package/dist/get-filename.d.ts +1 -1
  78. package/dist/get-final-output-codec.d.ts +6 -0
  79. package/dist/get-final-output-codec.js +63 -0
  80. package/dist/image-formats.d.ts +3 -3
  81. package/dist/image-formats.js +4 -3
  82. package/dist/index.d.ts +10 -8
  83. package/dist/index.js +17 -9
  84. package/dist/initialize-render-cli.d.ts +1 -1
  85. package/dist/initialize-render-cli.js +8 -3
  86. package/dist/lambda-command.d.ts +1 -1
  87. package/dist/lambda-command.js +4 -4
  88. package/dist/load-config.d.ts +1 -1
  89. package/dist/load-config.js +16 -5
  90. package/dist/log.js +7 -6
  91. package/dist/parse-command-line.d.ts +1 -1
  92. package/dist/parse-command-line.js +31 -30
  93. package/dist/preview-server/error-overlay/react-overlay/effects/map-error-to-react-stack.js +2 -2
  94. package/dist/preview-server/error-overlay/react-overlay/utils/get-file-source.d.ts +1 -1
  95. package/dist/preview-server/error-overlay/react-overlay/utils/get-file-source.js +3 -3
  96. package/dist/preview-server/get-package-manager.d.ts +1 -1
  97. package/dist/preview-server/get-package-manager.js +2 -2
  98. package/dist/preview-server/project-info.d.ts +1 -1
  99. package/dist/preview-server/project-info.js +3 -3
  100. package/dist/preview-server/routes.d.ts +2 -1
  101. package/dist/preview-server/routes.js +28 -17
  102. package/dist/preview-server/start-server.d.ts +1 -0
  103. package/dist/preview-server/start-server.js +4 -2
  104. package/dist/preview-server/update-available.d.ts +1 -1
  105. package/dist/preview-server/update-available.js +8 -5
  106. package/dist/preview.d.ts +1 -1
  107. package/dist/preview.js +5 -4
  108. package/dist/previewEntry.js +1 -0
  109. package/dist/progress-bar.d.ts +1 -2
  110. package/dist/progress-bar.js +5 -4
  111. package/dist/render.d.ts +1 -1
  112. package/dist/render.js +17 -10
  113. package/dist/setup-cache.d.ts +2 -1
  114. package/dist/setup-cache.js +16 -9
  115. package/dist/still.d.ts +1 -1
  116. package/dist/still.js +15 -10
  117. package/dist/truthy.d.ts +3 -0
  118. package/dist/truthy.js +7 -0
  119. package/dist/upgrade.d.ts +1 -1
  120. package/dist/upgrade.js +5 -10
  121. package/dist/user-passed-output-location.js +2 -2
  122. package/dist/versions.d.ts +2 -2
  123. package/dist/versions.js +13 -12
  124. package/dist/webpack-cache.d.ts +2 -2
  125. package/dist/webpack-cache.js +10 -10
  126. package/package.json +7 -7
@@ -4,9 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.quietFlagProvided = exports.parseCommandLine = exports.parsedCli = exports.BooleanFlags = void 0;
7
+ const renderer_1 = require("@remotion/renderer");
7
8
  const minimist_1 = __importDefault(require("minimist"));
8
9
  const path_1 = require("path");
9
- const remotion_1 = require("remotion");
10
+ const config_1 = require("./config");
10
11
  const log_1 = require("./log");
11
12
  exports.BooleanFlags = [
12
13
  'force',
@@ -31,99 +32,99 @@ exports.parsedCli = (0, minimist_1.default)(process.argv.slice(2), {
31
32
  });
32
33
  const parseCommandLine = (type) => {
33
34
  if (exports.parsedCli['pixel-format']) {
34
- remotion_1.Config.Output.setPixelFormat(exports.parsedCli['pixel-format']);
35
+ config_1.Config.Output.setPixelFormat(exports.parsedCli['pixel-format']);
35
36
  }
36
37
  if (exports.parsedCli['image-format']) {
37
- remotion_1.Config.Rendering.setImageFormat(exports.parsedCli['image-format']);
38
+ config_1.Config.Rendering.setImageFormat(exports.parsedCli['image-format']);
38
39
  }
39
40
  if (exports.parsedCli['browser-executable']) {
40
- remotion_1.Config.Puppeteer.setBrowserExecutable(exports.parsedCli['browser-executable']);
41
+ config_1.Config.Puppeteer.setBrowserExecutable(exports.parsedCli['browser-executable']);
41
42
  }
42
43
  if (exports.parsedCli['ffmpeg-executable']) {
43
- remotion_1.Config.Rendering.setFfmpegExecutable((0, path_1.resolve)(exports.parsedCli['ffmpeg-executable']));
44
+ config_1.Config.Rendering.setFfmpegExecutable((0, path_1.resolve)(exports.parsedCli['ffmpeg-executable']));
44
45
  }
45
46
  if (exports.parsedCli['number-of-gif-loops']) {
46
- remotion_1.Config.Rendering.setNumberOfGifLoops(exports.parsedCli['number-of-gif-loops']);
47
+ config_1.Config.Rendering.setNumberOfGifLoops(exports.parsedCli['number-of-gif-loops']);
47
48
  }
48
49
  if (exports.parsedCli['ffprobe-executable']) {
49
- remotion_1.Config.Rendering.setFfprobeExecutable((0, path_1.resolve)(exports.parsedCli['ffprobe-executable']));
50
+ config_1.Config.Rendering.setFfprobeExecutable((0, path_1.resolve)(exports.parsedCli['ffprobe-executable']));
50
51
  }
51
52
  if (typeof exports.parsedCli['bundle-cache'] !== 'undefined') {
52
- remotion_1.Config.Bundling.setCachingEnabled(exports.parsedCli['bundle-cache'] !== 'false');
53
+ config_1.Config.Bundling.setCachingEnabled(exports.parsedCli['bundle-cache'] !== 'false');
53
54
  }
54
55
  if (exports.parsedCli['disable-web-security']) {
55
- remotion_1.Config.Puppeteer.setChromiumDisableWebSecurity(true);
56
+ config_1.Config.Puppeteer.setChromiumDisableWebSecurity(true);
56
57
  }
57
58
  if (exports.parsedCli['ignore-certificate-errors']) {
58
- remotion_1.Config.Puppeteer.setChromiumIgnoreCertificateErrors(true);
59
+ config_1.Config.Puppeteer.setChromiumIgnoreCertificateErrors(true);
59
60
  }
60
61
  if (exports.parsedCli['disable-headless']) {
61
- remotion_1.Config.Puppeteer.setChromiumHeadlessMode(false);
62
+ config_1.Config.Puppeteer.setChromiumHeadlessMode(false);
62
63
  }
63
64
  if (exports.parsedCli.log) {
64
- if (!remotion_1.Internals.Logging.isValidLogLevel(exports.parsedCli.log)) {
65
+ if (!renderer_1.RenderInternals.isValidLogLevel(exports.parsedCli.log)) {
65
66
  log_1.Log.error('Invalid `--log` value passed.');
66
- log_1.Log.error(`Accepted values: ${remotion_1.Internals.Logging.logLevels
67
+ log_1.Log.error(`Accepted values: ${renderer_1.RenderInternals.logLevels
67
68
  .map((l) => `'${l}'`)
68
69
  .join(', ')}.`);
69
70
  process.exit(1);
70
71
  }
71
- remotion_1.Internals.Logging.setLogLevel(exports.parsedCli.log);
72
+ config_1.ConfigInternals.Logging.setLogLevel(exports.parsedCli.log);
72
73
  }
73
74
  if (exports.parsedCli.concurrency) {
74
- remotion_1.Config.Rendering.setConcurrency(exports.parsedCli.concurrency);
75
+ config_1.Config.Rendering.setConcurrency(exports.parsedCli.concurrency);
75
76
  }
76
77
  if (exports.parsedCli.timeout) {
77
- remotion_1.Config.Puppeteer.setTimeoutInMilliseconds(exports.parsedCli.timeout);
78
+ config_1.Config.Puppeteer.setTimeoutInMilliseconds(exports.parsedCli.timeout);
78
79
  }
79
80
  if (exports.parsedCli.frames) {
80
81
  if (type === 'still') {
81
82
  log_1.Log.error('--frames flag was passed to the `still` command. This flag only works with the `render` command. Did you mean `--frame`? See reference: https://www.remotion.dev/docs/cli/');
82
83
  process.exit(1);
83
84
  }
84
- remotion_1.Internals.setFrameRangeFromCli(exports.parsedCli.frames);
85
+ config_1.ConfigInternals.setFrameRangeFromCli(exports.parsedCli.frames);
85
86
  }
86
87
  if (exports.parsedCli.frame) {
87
88
  if (type === 'sequence') {
88
89
  log_1.Log.error('--frame flag was passed to the `render` command. This flag only works with the `still` command. Did you mean `--frames`? See reference: https://www.remotion.dev/docs/cli/');
89
90
  process.exit(1);
90
91
  }
91
- remotion_1.Internals.setStillFrame(Number(exports.parsedCli.frame));
92
+ config_1.ConfigInternals.setStillFrame(Number(exports.parsedCli.frame));
92
93
  }
93
94
  if (exports.parsedCli.png) {
94
95
  log_1.Log.warn('The --png flag has been deprecrated. Use --sequence --image-format=png from now on.');
95
- remotion_1.Config.Output.setImageSequence(true);
96
- remotion_1.Config.Rendering.setImageFormat('png');
96
+ config_1.Config.Output.setImageSequence(true);
97
+ config_1.Config.Rendering.setImageFormat('png');
97
98
  }
98
99
  if (exports.parsedCli.sequence) {
99
- remotion_1.Config.Output.setImageSequence(true);
100
+ config_1.Config.Output.setImageSequence(true);
100
101
  }
101
102
  if (typeof exports.parsedCli.crf !== 'undefined') {
102
- remotion_1.Config.Output.setCrf(exports.parsedCli.crf);
103
+ config_1.Config.Output.setCrf(exports.parsedCli.crf);
103
104
  }
104
105
  if (exports.parsedCli.codec) {
105
- remotion_1.Config.Output.setCodec(exports.parsedCli.codec);
106
+ config_1.Config.Output.setCodec(exports.parsedCli.codec);
106
107
  }
107
108
  if (exports.parsedCli['every-nth-frame']) {
108
- remotion_1.Config.Rendering.setEveryNthFrame(exports.parsedCli['every-nth-frame']);
109
+ config_1.Config.Rendering.setEveryNthFrame(exports.parsedCli['every-nth-frame']);
109
110
  }
110
111
  if (exports.parsedCli.gl) {
111
- remotion_1.Config.Puppeteer.setChromiumOpenGlRenderer(exports.parsedCli.gl);
112
+ config_1.Config.Puppeteer.setChromiumOpenGlRenderer(exports.parsedCli.gl);
112
113
  }
113
114
  if (exports.parsedCli['prores-profile']) {
114
- remotion_1.Config.Output.setProResProfile(String(exports.parsedCli['prores-profile']));
115
+ config_1.Config.Output.setProResProfile(String(exports.parsedCli['prores-profile']));
115
116
  }
116
117
  if (exports.parsedCli.overwrite) {
117
- remotion_1.Config.Output.setOverwriteOutput(exports.parsedCli.overwrite);
118
+ config_1.Config.Output.setOverwriteOutput(exports.parsedCli.overwrite);
118
119
  }
119
120
  if (typeof exports.parsedCli.quality !== 'undefined') {
120
- remotion_1.Config.Rendering.setQuality(exports.parsedCli.quality);
121
+ config_1.Config.Rendering.setQuality(exports.parsedCli.quality);
121
122
  }
122
123
  if (typeof exports.parsedCli.scale !== 'undefined') {
123
- remotion_1.Config.Rendering.setScale(exports.parsedCli.scale);
124
+ config_1.Config.Rendering.setScale(exports.parsedCli.scale);
124
125
  }
125
126
  if (typeof exports.parsedCli.port !== 'undefined') {
126
- remotion_1.Config.Bundling.setPort(exports.parsedCli.port);
127
+ config_1.Config.Bundling.setPort(exports.parsedCli.port);
127
128
  }
128
129
  };
129
130
  exports.parseCommandLine = parseCommandLine;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getLocationFromBuildError = void 0;
4
- const remotion_1 = require("remotion");
4
+ const truthy_1 = require("../../../../truthy");
5
5
  const getLocationFromBuildError = (err) => {
6
6
  var _a;
7
7
  if (!err.stack) {
@@ -41,6 +41,6 @@ const getLocationFromBuildError = (err) => {
41
41
  fileName: filename.trim(),
42
42
  };
43
43
  })
44
- .filter(remotion_1.Internals.truthy)[0]) !== null && _a !== void 0 ? _a : null);
44
+ .filter(truthy_1.truthy)[0]) !== null && _a !== void 0 ? _a : null);
45
45
  };
46
46
  exports.getLocationFromBuildError = getLocationFromBuildError;
@@ -1 +1 @@
1
- export declare const getFileSource: (p: string) => Promise<string>;
1
+ export declare const getFileSource: (remotionRoot: string, p: string) => Promise<string>;
@@ -7,12 +7,12 @@ exports.getFileSource = void 0;
7
7
  const fs_1 = __importDefault(require("fs"));
8
8
  const path_1 = __importDefault(require("path"));
9
9
  const allowedFileExtensions = ['js', 'ts', 'tsx', 'jsx', 'map', 'mjs'];
10
- const getFileSource = (p) => {
10
+ const getFileSource = (remotionRoot, p) => {
11
11
  if (!allowedFileExtensions.find((extension) => p.endsWith(extension))) {
12
12
  throw new Error(`Not allowed to open ${p}`);
13
13
  }
14
- const resolved = path_1.default.resolve(process.cwd(), p);
15
- const relativeToProcessCwd = path_1.default.relative(process.cwd(), resolved);
14
+ const resolved = path_1.default.resolve(remotionRoot, p);
15
+ const relativeToProcessCwd = path_1.default.relative(remotionRoot, resolved);
16
16
  if (relativeToProcessCwd.startsWith('..')) {
17
17
  throw new Error(`Not allowed to open ${relativeToProcessCwd}`);
18
18
  }
@@ -5,5 +5,5 @@ declare type LockfilePath = {
5
5
  installCommand: string;
6
6
  };
7
7
  export declare const lockFilePaths: LockfilePath[];
8
- export declare const getPackageManager: () => LockfilePath | 'unknown';
8
+ export declare const getPackageManager: (remotionRoot: string) => LockfilePath | 'unknown';
9
9
  export {};
@@ -19,8 +19,8 @@ exports.lockFilePaths = [
19
19
  installCommand: 'pnpm i',
20
20
  },
21
21
  ];
22
- const getPackageManager = () => {
23
- const existingPkgManagers = exports.lockFilePaths.filter((p) => fs_1.default.existsSync(path_1.default.join(process.cwd(), p.path)));
22
+ const getPackageManager = (remotionRoot) => {
23
+ const existingPkgManagers = exports.lockFilePaths.filter((p) => fs_1.default.existsSync(path_1.default.join(remotionRoot, p.path)));
24
24
  if (existingPkgManagers.length === 0) {
25
25
  return 'unknown';
26
26
  }
@@ -2,4 +2,4 @@ export declare type ProjectInfo = {
2
2
  videoFile: string | null;
3
3
  relativeVideoFile: string | null;
4
4
  };
5
- export declare const getProjectInfo: () => Promise<ProjectInfo>;
5
+ export declare const getProjectInfo: (remotionRoot: string) => Promise<ProjectInfo>;
@@ -6,16 +6,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getProjectInfo = void 0;
7
7
  const fs_1 = require("fs");
8
8
  const path_1 = __importDefault(require("path"));
9
- const getProjectInfo = () => {
9
+ const getProjectInfo = (remotionRoot) => {
10
10
  var _a;
11
11
  const pathsToLookFor = ['src/Video.tsx', 'src/Video.jsx'].map((p) => {
12
- return path_1.default.join(process.cwd(), p);
12
+ return path_1.default.join(remotionRoot, p);
13
13
  });
14
14
  const videoFile = (_a = pathsToLookFor.find((p) => (0, fs_1.existsSync)(p))) !== null && _a !== void 0 ? _a : null;
15
15
  return Promise.resolve({
16
16
  videoFile,
17
17
  relativeVideoFile: videoFile
18
- ? path_1.default.relative(process.cwd(), videoFile)
18
+ ? path_1.default.relative(remotionRoot, videoFile)
19
19
  : null,
20
20
  });
21
21
  };
@@ -1,10 +1,11 @@
1
1
  import type { IncomingMessage, ServerResponse } from 'http';
2
2
  import type { LiveEventsServer } from './live-events';
3
- export declare const handleRoutes: ({ hash, hashPrefix, request, response, liveEventsServer, getCurrentInputProps, }: {
3
+ export declare const handleRoutes: ({ hash, hashPrefix, request, response, liveEventsServer, getCurrentInputProps, remotionRoot, }: {
4
4
  hash: string;
5
5
  hashPrefix: string;
6
6
  request: IncomingMessage;
7
7
  response: ServerResponse;
8
8
  liveEventsServer: LiveEventsServer;
9
9
  getCurrentInputProps: () => object;
10
+ remotionRoot: string;
10
11
  }) => void | Promise<void>;
@@ -13,8 +13,8 @@ const open_in_editor_1 = require("./error-overlay/react-overlay/utils/open-in-ed
13
13
  const project_info_1 = require("./project-info");
14
14
  const serve_static_1 = require("./serve-static");
15
15
  const update_available_1 = require("./update-available");
16
- const handleUpdate = async (_, response) => {
17
- const data = await (0, update_available_1.isUpdateAvailableWithTimeout)();
16
+ const handleUpdate = async (remotionRoot, _, response) => {
17
+ const data = await (0, update_available_1.isUpdateAvailableWithTimeout)(remotionRoot);
18
18
  response.setHeader('content-type', 'application/json');
19
19
  response.writeHead(200);
20
20
  response.end(JSON.stringify(data));
@@ -24,20 +24,26 @@ const static404 = (response) => {
24
24
  response.writeHead(404);
25
25
  response.end('The static/ prefix has been changed, this URL is no longer valid.');
26
26
  };
27
- const handleFallback = async (hash, _, response, getCurrentInputProps) => {
27
+ const handleFallback = async ({ remotionRoot, hash, response, getCurrentInputProps, }) => {
28
28
  const [edit] = await editorGuess;
29
29
  const displayName = (0, open_in_editor_1.getDisplayNameForEditor)(edit ? edit.command : null);
30
30
  response.setHeader('content-type', 'text/html');
31
31
  response.writeHead(200);
32
- response.end(bundler_1.BundlerInternals.indexHtml(hash, '/', displayName, getCurrentInputProps()));
32
+ response.end(bundler_1.BundlerInternals.indexHtml({
33
+ staticHash: hash,
34
+ baseDir: '/',
35
+ editorName: displayName,
36
+ inputProps: getCurrentInputProps(),
37
+ remotionRoot,
38
+ }));
33
39
  };
34
- const handleProjectInfo = async (_, response) => {
35
- const data = await (0, project_info_1.getProjectInfo)();
40
+ const handleProjectInfo = async (remotionRoot, _, response) => {
41
+ const data = await (0, project_info_1.getProjectInfo)(remotionRoot);
36
42
  response.setHeader('content-type', 'application/json');
37
43
  response.writeHead(200);
38
44
  response.end(JSON.stringify(data));
39
45
  };
40
- const handleFileSource = async (search, _, response) => {
46
+ const handleFileSource = async (remotionRoot, search, _, response) => {
41
47
  if (!search.startsWith('?')) {
42
48
  throw new Error('query must start with ?');
43
49
  }
@@ -46,12 +52,12 @@ const handleFileSource = async (search, _, response) => {
46
52
  if (typeof f !== 'string') {
47
53
  throw new Error('must pass `f` parameter');
48
54
  }
49
- const data = await (0, get_file_source_1.getFileSource)(decodeURIComponent(f));
55
+ const data = await (0, get_file_source_1.getFileSource)(remotionRoot, decodeURIComponent(f));
50
56
  response.writeHead(200);
51
57
  response.write(data);
52
58
  return response.end();
53
59
  };
54
- const handleOpenInEditor = async (req, res) => {
60
+ const handleOpenInEditor = async (remotionRoot, req, res) => {
55
61
  try {
56
62
  const b = await new Promise((_resolve) => {
57
63
  let data = '';
@@ -71,7 +77,7 @@ const handleOpenInEditor = async (req, res) => {
71
77
  const didOpen = await (0, open_in_editor_1.launchEditor)({
72
78
  colNumber: stack.originalColumnNumber,
73
79
  editor: guess[0],
74
- fileName: path_1.default.resolve(process.cwd(), stack.originalFileName),
80
+ fileName: path_1.default.resolve(remotionRoot, stack.originalFileName),
75
81
  lineNumber: stack.originalLineNumber,
76
82
  vsCodeNewWindow: false,
77
83
  });
@@ -99,19 +105,19 @@ const handleFavicon = (_, response) => {
99
105
  const readStream = (0, fs_1.createReadStream)(filePath);
100
106
  readStream.pipe(response);
101
107
  };
102
- const handleRoutes = ({ hash, hashPrefix, request, response, liveEventsServer, getCurrentInputProps, }) => {
108
+ const handleRoutes = ({ hash, hashPrefix, request, response, liveEventsServer, getCurrentInputProps, remotionRoot, }) => {
103
109
  const url = new URL(request.url, 'http://localhost');
104
110
  if (url.pathname === '/api/update') {
105
- return handleUpdate(request, response);
111
+ return handleUpdate(remotionRoot, request, response);
106
112
  }
107
113
  if (url.pathname === '/api/project-info') {
108
- return handleProjectInfo(request, response);
114
+ return handleProjectInfo(remotionRoot, request, response);
109
115
  }
110
116
  if (url.pathname === '/api/file-source') {
111
- return handleFileSource(url.search, request, response);
117
+ return handleFileSource(remotionRoot, url.search, request, response);
112
118
  }
113
119
  if (url.pathname === '/api/open-in-editor') {
114
- return handleOpenInEditor(request, response);
120
+ return handleOpenInEditor(remotionRoot, request, response);
115
121
  }
116
122
  if (url.pathname === '/remotion.png') {
117
123
  return handleFavicon(request, response);
@@ -120,12 +126,17 @@ const handleRoutes = ({ hash, hashPrefix, request, response, liveEventsServer, g
120
126
  return liveEventsServer.router(request, response);
121
127
  }
122
128
  if (url.pathname.startsWith(hash)) {
123
- const root = path_1.default.join(process.cwd(), 'public');
129
+ const root = path_1.default.join(remotionRoot, 'public');
124
130
  return (0, serve_static_1.serveStatic)(root, hash, request, response);
125
131
  }
126
132
  if (url.pathname.startsWith(hashPrefix)) {
127
133
  return static404(response);
128
134
  }
129
- return handleFallback(hash, request, response, getCurrentInputProps);
135
+ return handleFallback({
136
+ remotionRoot,
137
+ hash,
138
+ response,
139
+ getCurrentInputProps,
140
+ });
130
141
  };
131
142
  exports.handleRoutes = handleRoutes;
@@ -6,6 +6,7 @@ export declare const startServer: (entry: string, userDefinedComponent: string,
6
6
  envVariables?: Record<string, string>;
7
7
  port: number | null;
8
8
  maxTimelineTracks?: number;
9
+ remotionRoot: string;
9
10
  }) => Promise<{
10
11
  port: number;
11
12
  liveEventsServer: LiveEventsServer;
@@ -11,7 +11,7 @@ const fs_1 = __importDefault(require("fs"));
11
11
  const http_1 = __importDefault(require("http"));
12
12
  const os_1 = __importDefault(require("os"));
13
13
  const path_1 = __importDefault(require("path"));
14
- const remotion_1 = require("remotion");
14
+ const config_1 = require("../config");
15
15
  const dev_middleware_1 = require("./dev-middleware");
16
16
  const hot_middleware_1 = require("./hot-middleware");
17
17
  const live_events_1 = require("./live-events");
@@ -24,13 +24,14 @@ const startServer = async (entry, userDefinedComponent, options) => {
24
24
  userDefinedComponent,
25
25
  outDir: tmpDir,
26
26
  environment: 'development',
27
- webpackOverride: (_a = options === null || options === void 0 ? void 0 : options.webpackOverride) !== null && _a !== void 0 ? _a : remotion_1.Internals.getWebpackOverrideFn(),
27
+ webpackOverride: (_a = options === null || options === void 0 ? void 0 : options.webpackOverride) !== null && _a !== void 0 ? _a : config_1.ConfigInternals.getWebpackOverrideFn(),
28
28
  envVariables: (_b = options === null || options === void 0 ? void 0 : options.envVariables) !== null && _b !== void 0 ? _b : {},
29
29
  maxTimelineTracks: (_c = options === null || options === void 0 ? void 0 : options.maxTimelineTracks) !== null && _c !== void 0 ? _c : 15,
30
30
  entryPoints: [
31
31
  require.resolve('./hot-middleware/client'),
32
32
  require.resolve('./error-overlay/entry-basic.js'),
33
33
  ],
34
+ remotionRoot: options.remotionRoot,
34
35
  });
35
36
  const compiler = (0, bundler_1.webpack)(config);
36
37
  const hashPrefix = '/static-';
@@ -59,6 +60,7 @@ const startServer = async (entry, userDefinedComponent, options) => {
59
60
  response,
60
61
  liveEventsServer,
61
62
  getCurrentInputProps: options.getCurrentInputProps,
63
+ remotionRoot: options.remotionRoot,
62
64
  });
63
65
  })
64
66
  .catch((err) => {
@@ -7,5 +7,5 @@ declare type Info = {
7
7
  packageManager: PackageManager | 'unknown';
8
8
  };
9
9
  export declare const getRemotionVersion: () => any;
10
- export declare const isUpdateAvailableWithTimeout: () => Promise<Info>;
10
+ export declare const isUpdateAvailableWithTimeout: (remotionRoot: string) => Promise<Info>;
11
11
  export {};
@@ -7,9 +7,9 @@ exports.isUpdateAvailableWithTimeout = exports.getRemotionVersion = void 0;
7
7
  const semver_1 = __importDefault(require("semver"));
8
8
  const get_latest_remotion_version_1 = require("../get-latest-remotion-version");
9
9
  const get_package_manager_1 = require("./get-package-manager");
10
- const isUpdateAvailable = async (currentVersion) => {
10
+ const isUpdateAvailable = async ({ remotionRoot, currentVersion, }) => {
11
11
  const latest = await (0, get_latest_remotion_version_1.getLatestRemotionVersion)();
12
- const pkgManager = (0, get_package_manager_1.getPackageManager)();
12
+ const pkgManager = (0, get_package_manager_1.getPackageManager)(remotionRoot);
13
13
  return {
14
14
  updateAvailable: semver_1.default.lt(currentVersion, latest),
15
15
  currentVersion,
@@ -25,10 +25,10 @@ const getRemotionVersion = () => {
25
25
  return version;
26
26
  };
27
27
  exports.getRemotionVersion = getRemotionVersion;
28
- const isUpdateAvailableWithTimeout = () => {
28
+ const isUpdateAvailableWithTimeout = (remotionRoot) => {
29
29
  const version = (0, exports.getRemotionVersion)();
30
30
  const threeSecTimeout = new Promise((resolve) => {
31
- const pkgManager = (0, get_package_manager_1.getPackageManager)();
31
+ const pkgManager = (0, get_package_manager_1.getPackageManager)(remotionRoot);
32
32
  setTimeout(() => {
33
33
  resolve({
34
34
  currentVersion: version,
@@ -39,6 +39,9 @@ const isUpdateAvailableWithTimeout = () => {
39
39
  });
40
40
  }, 3000);
41
41
  });
42
- return Promise.race([threeSecTimeout, isUpdateAvailable(version)]);
42
+ return Promise.race([
43
+ threeSecTimeout,
44
+ isUpdateAvailable({ remotionRoot, currentVersion: version }),
45
+ ]);
43
46
  };
44
47
  exports.isUpdateAvailableWithTimeout = isUpdateAvailableWithTimeout;
package/dist/preview.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const previewCommand: () => Promise<void>;
1
+ export declare const previewCommand: (remotionRoot: string) => Promise<void>;
package/dist/preview.js CHANGED
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.previewCommand = void 0;
7
7
  const better_opn_1 = __importDefault(require("better-opn"));
8
8
  const path_1 = __importDefault(require("path"));
9
- const remotion_1 = require("remotion");
9
+ const config_1 = require("./config");
10
10
  const get_env_1 = require("./get-env");
11
11
  const get_input_props_1 = require("./get-input-props");
12
12
  const initialize_render_cli_1 = require("./initialize-render-cli");
@@ -30,7 +30,7 @@ const waitForLiveEventsListener = () => {
30
30
  });
31
31
  });
32
32
  };
33
- const previewCommand = async () => {
33
+ const previewCommand = async (remotionRoot) => {
34
34
  const file = parse_command_line_1.parsedCli._[1];
35
35
  if (!file) {
36
36
  log_1.Log.error('The preview command requires you to specify a root file. For example');
@@ -40,7 +40,7 @@ const previewCommand = async () => {
40
40
  }
41
41
  const { port: desiredPort } = parse_command_line_1.parsedCli;
42
42
  const fullPath = path_1.default.join(process.cwd(), file);
43
- await (0, initialize_render_cli_1.initializeRenderCli)('preview');
43
+ await (0, initialize_render_cli_1.initializeRenderCli)(remotionRoot, 'preview');
44
44
  let inputProps = (0, get_input_props_1.getInputProps)((newProps) => {
45
45
  waitForLiveEventsListener().then((listener) => {
46
46
  inputProps = newProps;
@@ -55,7 +55,8 @@ const previewCommand = async () => {
55
55
  getCurrentInputProps: () => inputProps,
56
56
  envVariables,
57
57
  port: desiredPort,
58
- maxTimelineTracks: remotion_1.Internals.getMaxTimelineTracks(),
58
+ maxTimelineTracks: config_1.ConfigInternals.getMaxTimelineTracks(),
59
+ remotionRoot,
59
60
  });
60
61
  setLiveEventsListener(liveEventsServer);
61
62
  (0, better_opn_1.default)(`http://localhost:${port}`);
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const jsx_runtime_1 = require("react/jsx-runtime");
7
7
  const client_1 = __importDefault(require("react-dom/client"));
8
+ // eslint-disable-next-line no-restricted-imports
8
9
  const remotion_1 = require("remotion");
9
10
  require("../styles/styles.css");
10
11
  const Editor_1 = require("./editor/components/Editor");
@@ -1,5 +1,4 @@
1
- import type { StitchingState } from '@remotion/renderer';
2
- import type { Codec } from 'remotion';
1
+ import type { Codec, StitchingState } from '@remotion/renderer';
3
2
  import type { RenderStep } from './step';
4
3
  export declare const createProgressBar: (quiet: boolean) => {
5
4
  update: (str: string) => boolean;
@@ -2,13 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeRenderingAndStitchingProgress = exports.makeStitchingProgress = exports.makeRenderingProgress = exports.makeBundlingProgress = exports.createOverwriteableCliOutput = exports.createProgressBar = void 0;
4
4
  const renderer_1 = require("@remotion/renderer");
5
- const remotion_1 = require("remotion");
6
5
  const ansi_diff_1 = require("./ansi/ansi-diff");
7
6
  const chalk_1 = require("./chalk");
7
+ const config_1 = require("./config");
8
8
  const download_progress_1 = require("./download-progress");
9
9
  const make_progress_bar_1 = require("./make-progress-bar");
10
+ const truthy_1 = require("./truthy");
10
11
  const createProgressBar = (quiet) => {
11
- if (!remotion_1.Internals.Logging.isEqualOrBelowLogLevel(remotion_1.Internals.Logging.getLogLevel(), 'info')) {
12
+ if (!renderer_1.RenderInternals.isEqualOrBelowLogLevel(config_1.ConfigInternals.Logging.getLogLevel(), 'info')) {
12
13
  return { update: () => false };
13
14
  }
14
15
  return (0, exports.createOverwriteableCliOutput)(quiet);
@@ -41,7 +42,7 @@ const makeRenderingProgress = ({ frames, totalFrames, steps, concurrency, doneIn
41
42
  `(${steps.indexOf('rendering') + 1}/${steps.length})`,
42
43
  (0, make_progress_bar_1.makeProgressBar)(progress),
43
44
  [doneIn ? 'Rendered' : 'Rendering', `frames (${concurrency}x)`]
44
- .filter(remotion_1.Internals.truthy)
45
+ .filter(truthy_1.truthy)
45
46
  .join(' '),
46
47
  doneIn === null ? `${frames}/${totalFrames}` : chalk_1.chalk.gray(`${doneIn}ms`),
47
48
  ].join(' ');
@@ -65,7 +66,7 @@ const makeRenderingAndStitchingProgress = ({ rendering, stitching, downloads, })
65
66
  (0, download_progress_1.makeMultiDownloadProgress)(downloads),
66
67
  stitching === null ? null : (0, exports.makeStitchingProgress)(stitching),
67
68
  ]
68
- .filter(remotion_1.Internals.truthy)
69
+ .filter(truthy_1.truthy)
69
70
  .join('\n');
70
71
  };
71
72
  exports.makeRenderingAndStitchingProgress = makeRenderingAndStitchingProgress;
package/dist/render.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const render: () => Promise<void>;
1
+ export declare const render: (remotionRoot: string) => Promise<void>;
package/dist/render.js CHANGED
@@ -8,8 +8,10 @@ const renderer_1 = require("@remotion/renderer");
8
8
  const fs_1 = __importDefault(require("fs"));
9
9
  const os_1 = __importDefault(require("os"));
10
10
  const path_1 = __importDefault(require("path"));
11
+ // eslint-disable-next-line no-restricted-imports
11
12
  const remotion_1 = require("remotion");
12
13
  const chalk_1 = require("./chalk");
14
+ const config_1 = require("./config");
13
15
  const get_cli_options_1 = require("./get-cli-options");
14
16
  const get_composition_id_1 = require("./get-composition-id");
15
17
  const get_filename_1 = require("./get-filename");
@@ -19,7 +21,7 @@ const parse_command_line_1 = require("./parse-command-line");
19
21
  const progress_bar_1 = require("./progress-bar");
20
22
  const setup_cache_1 = require("./setup-cache");
21
23
  const validate_ffmpeg_version_1 = require("./validate-ffmpeg-version");
22
- const render = async () => {
24
+ const render = async (remotionRoot) => {
23
25
  const startTime = Date.now();
24
26
  const file = parse_command_line_1.parsedCli._[1];
25
27
  if (!file) {
@@ -31,7 +33,8 @@ const render = async () => {
31
33
  const fullPath = renderer_1.RenderInternals.isServeUrl(file)
32
34
  ? file
33
35
  : path_1.default.join(process.cwd(), file);
34
- await (0, initialize_render_cli_1.initializeRenderCli)('sequence');
36
+ const downloadMap = renderer_1.RenderInternals.makeDownloadMap();
37
+ await (0, initialize_render_cli_1.initializeRenderCli)(remotionRoot, 'sequence');
35
38
  const { codec, proResProfile, parallelism, frameRange, shouldOutputImageSequence, overwrite, inputProps, envVariables, quality, browser, crf, pixelFormat, imageFormat, browserExecutable, ffmpegExecutable, ffprobeExecutable, scale, chromiumOptions, port, numberOfGifLoops, everyNthFrame, puppeteerTimeout, } = await (0, get_cli_options_1.getCliOptions)({
36
39
  isLambda: false,
37
40
  type: 'series',
@@ -51,7 +54,7 @@ const render = async () => {
51
54
  });
52
55
  const browserInstance = (0, renderer_1.openBrowser)(browser, {
53
56
  browserExecutable,
54
- shouldDumpIo: remotion_1.Internals.Logging.isEqualOrBelowLogLevel(remotion_1.Internals.Logging.getLogLevel(), 'verbose'),
57
+ shouldDumpIo: renderer_1.RenderInternals.isEqualOrBelowLogLevel(config_1.ConfigInternals.Logging.getLogLevel(), 'verbose'),
55
58
  chromiumOptions,
56
59
  forceDeviceScaleFactor: scale,
57
60
  });
@@ -62,7 +65,7 @@ const render = async () => {
62
65
  ].filter(remotion_1.Internals.truthy);
63
66
  const urlOrBundle = renderer_1.RenderInternals.isServeUrl(fullPath)
64
67
  ? fullPath
65
- : await (0, setup_cache_1.bundleOnCli)({ fullPath, steps });
68
+ : await (0, setup_cache_1.bundleOnCli)({ fullPath, remotionRoot, steps });
66
69
  const onDownload = (src) => {
67
70
  const id = Math.random();
68
71
  const download = {
@@ -86,9 +89,10 @@ const render = async () => {
86
89
  inputProps,
87
90
  puppeteerInstance,
88
91
  envVariables,
89
- timeoutInMilliseconds: remotion_1.Internals.getCurrentPuppeteerTimeout(),
92
+ timeoutInMilliseconds: config_1.ConfigInternals.getCurrentPuppeteerTimeout(),
90
93
  chromiumOptions,
91
94
  browserExecutable,
95
+ downloadMap,
92
96
  });
93
97
  const config = comps.find((c) => c.id === compositionId);
94
98
  if (!config) {
@@ -166,7 +170,7 @@ const render = async () => {
166
170
  },
167
171
  outputDir,
168
172
  serveUrl: urlOrBundle,
169
- dumpBrowserLogs: remotion_1.Internals.Logging.isEqualOrBelowLogLevel(remotion_1.Internals.Logging.getLogLevel(), 'verbose'),
173
+ dumpBrowserLogs: renderer_1.RenderInternals.isEqualOrBelowLogLevel(config_1.ConfigInternals.Logging.getLogLevel(), 'verbose'),
170
174
  everyNthFrame,
171
175
  envVariables,
172
176
  frameRange,
@@ -180,6 +184,7 @@ const render = async () => {
180
184
  ffprobeExecutable,
181
185
  browserExecutable,
182
186
  port,
187
+ downloadMap,
183
188
  });
184
189
  renderedDoneIn = Date.now() - startTime;
185
190
  updateRenderProgress();
@@ -215,13 +220,15 @@ const render = async () => {
215
220
  quality,
216
221
  serveUrl: urlOrBundle,
217
222
  onDownload,
218
- dumpBrowserLogs: remotion_1.Internals.Logging.isEqualOrBelowLogLevel(remotion_1.Internals.Logging.getLogLevel(), 'verbose'),
223
+ dumpBrowserLogs: renderer_1.RenderInternals.isEqualOrBelowLogLevel(config_1.ConfigInternals.Logging.getLogLevel(), 'verbose'),
219
224
  chromiumOptions,
220
- timeoutInMilliseconds: remotion_1.Internals.getCurrentPuppeteerTimeout(),
225
+ timeoutInMilliseconds: config_1.ConfigInternals.getCurrentPuppeteerTimeout(),
221
226
  scale,
222
227
  port,
223
228
  numberOfGifLoops,
224
229
  everyNthFrame,
230
+ verbose: renderer_1.RenderInternals.isEqualOrBelowLogLevel(config_1.ConfigInternals.Logging.getLogLevel(), 'verbose'),
231
+ downloadMap,
225
232
  });
226
233
  log_1.Log.info();
227
234
  log_1.Log.info();
@@ -243,8 +250,8 @@ const render = async () => {
243
250
  log_1.Log.warn('Do you have minimum required Node.js version?');
244
251
  }
245
252
  log_1.Log.info(chalk_1.chalk.green(`\nYour ${codec === 'gif' ? 'GIF' : 'video'} is ready!`));
246
- if (remotion_1.Internals.Logging.isEqualOrBelowLogLevel(remotion_1.Internals.Logging.getLogLevel(), 'verbose')) {
247
- remotion_1.Internals.perf.logPerf();
253
+ if (renderer_1.RenderInternals.isEqualOrBelowLogLevel(config_1.ConfigInternals.Logging.getLogLevel(), 'verbose')) {
254
+ renderer_1.RenderInternals.perf.logPerf();
248
255
  }
249
256
  };
250
257
  exports.render = render;