@remotion/studio-server 4.0.427 → 4.0.428
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/helpers/open-in-editor-url-scheme.d.ts +6 -0
- package/dist/helpers/open-in-editor-url-scheme.js +50 -0
- package/dist/helpers/open-in-editor.js +15 -0
- package/dist/index.d.ts +2 -1
- package/dist/preview-server/start-server.d.ts +1 -0
- package/dist/preview-server/start-server.js +1 -0
- package/dist/start-studio.d.ts +2 -1
- package/dist/start-studio.js +2 -1
- package/package.json +6 -6
- package/dist/preview-server/__tests__/multiple-lockfiles.test.d.ts +0 -1
- package/dist/preview-server/__tests__/multiple-lockfiles.test.js +0 -37
|
@@ -0,0 +1,50 @@
|
|
|
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.openInEditorViaUrlScheme = void 0;
|
|
7
|
+
const node_child_process_1 = __importDefault(require("node:child_process"));
|
|
8
|
+
const getVsCodeUrlScheme = (editor) => {
|
|
9
|
+
switch (editor) {
|
|
10
|
+
case 'code':
|
|
11
|
+
case 'Code.exe':
|
|
12
|
+
return 'vscode';
|
|
13
|
+
case 'code-insiders':
|
|
14
|
+
case 'Code - Insiders.exe':
|
|
15
|
+
return 'vscode-insiders';
|
|
16
|
+
case 'vscodium':
|
|
17
|
+
case 'VSCodium.exe':
|
|
18
|
+
return 'vscodium';
|
|
19
|
+
case 'cursor':
|
|
20
|
+
case 'Cursor.exe':
|
|
21
|
+
return 'cursor';
|
|
22
|
+
case 'windsurf':
|
|
23
|
+
case 'Windsurf.exe':
|
|
24
|
+
return 'windsurf';
|
|
25
|
+
default:
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
// On macOS, use URL protocol handler for VS Code derivatives.
|
|
30
|
+
// This is faster than spawning the CLI which boots a Node.js process.
|
|
31
|
+
const openInEditorViaUrlScheme = ({ editor, fileName, lineNumber, colNumber, }) => {
|
|
32
|
+
if (process.platform !== 'darwin') {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
const urlScheme = getVsCodeUrlScheme(editor);
|
|
36
|
+
if (!urlScheme) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
const filePath = fileName.startsWith('/') ? fileName.substring(1) : fileName;
|
|
40
|
+
const encodedPath = filePath.split('/').map(encodeURIComponent).join('/');
|
|
41
|
+
const url = `${urlScheme}://file/${encodedPath}:${lineNumber}:${colNumber}`;
|
|
42
|
+
return new Promise((resolve) => {
|
|
43
|
+
const proc = node_child_process_1.default.spawn('open', [url], {
|
|
44
|
+
stdio: 'ignore',
|
|
45
|
+
});
|
|
46
|
+
proc.on('error', () => resolve(false));
|
|
47
|
+
proc.on('close', (code) => resolve(code === 0));
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
exports.openInEditorViaUrlScheme = openInEditorViaUrlScheme;
|
|
@@ -46,6 +46,7 @@ const node_fs_1 = __importDefault(require("node:fs"));
|
|
|
46
46
|
const node_os_1 = __importDefault(require("node:os"));
|
|
47
47
|
const node_path_1 = __importDefault(require("node:path"));
|
|
48
48
|
const node_util_1 = __importDefault(require("node:util"));
|
|
49
|
+
const open_in_editor_url_scheme_1 = require("./open-in-editor-url-scheme");
|
|
49
50
|
const { Log } = renderer_1.RenderInternals;
|
|
50
51
|
const execProm = node_util_1.default.promisify(node_child_process_1.exec);
|
|
51
52
|
const isVsCodeDerivative = (editor) => {
|
|
@@ -483,6 +484,20 @@ async function launchEditor({ colNumber, editor, fileName, lineNumber, vsCodeNew
|
|
|
483
484
|
return false;
|
|
484
485
|
}
|
|
485
486
|
const shouldOpenVsCodeNewWindow = isVsCodeDerivative(editor.command) && vsCodeNewWindow;
|
|
487
|
+
if (!shouldOpenVsCodeNewWindow) {
|
|
488
|
+
const result = (0, open_in_editor_url_scheme_1.openInEditorViaUrlScheme)({
|
|
489
|
+
editor: editor.command,
|
|
490
|
+
fileName,
|
|
491
|
+
lineNumber,
|
|
492
|
+
colNumber,
|
|
493
|
+
});
|
|
494
|
+
if (result) {
|
|
495
|
+
const opened = await result;
|
|
496
|
+
if (opened) {
|
|
497
|
+
return true;
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
}
|
|
486
501
|
const args = shouldOpenVsCodeNewWindow
|
|
487
502
|
? ['--new-window', fileName]
|
|
488
503
|
: lineNumber
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export { ApiRoutes, CopyStillToClipboardRequest, getDefaultOutLocation, OpenInFi
|
|
|
2
2
|
export type { AggregateRenderProgress, BundlingState, CopyingState, DownloadProgress, HotMiddlewareOptions, JobProgressCallback, ModuleMap, PackageManager, ProjectInfo, RenderingProgressInput, RenderJob, RenderJobWithCleanup, RequiredChromiumOptions, StitchingProgressInput, UiOpenGlOptions, } from '@remotion/studio-shared';
|
|
3
3
|
import { AnsiDiff } from './ansi-diff';
|
|
4
4
|
export declare const StudioServerInternals: {
|
|
5
|
-
startStudio: ({ browserArgs, browserFlag, shouldOpenBrowser, fullEntryPath, logLevel, getCurrentInputProps, getEnvVariables, desiredPort, maxTimelineTracks, remotionRoot, keyboardShortcutsEnabled, experimentalClientSideRenderingEnabled, relativePublicDir, webpackOverride, poll, getRenderDefaults, getRenderQueue, numberOfAudioTags, queueMethods, previewEntry, gitSource, bufferStateDelayInMilliseconds, binariesDirectory, forceIPv4, audioLatencyHint, enableCrossSiteIsolation, askAIEnabled, forceNew, rspack, }: {
|
|
5
|
+
startStudio: ({ browserArgs, browserFlag, shouldOpenBrowser, fullEntryPath, logLevel, getCurrentInputProps, getEnvVariables, desiredPort, maxTimelineTracks, remotionRoot, keyboardShortcutsEnabled, experimentalClientSideRenderingEnabled, experimentalVisualModeEnabled, relativePublicDir, webpackOverride, poll, getRenderDefaults, getRenderQueue, numberOfAudioTags, queueMethods, previewEntry, gitSource, bufferStateDelayInMilliseconds, binariesDirectory, forceIPv4, audioLatencyHint, enableCrossSiteIsolation, askAIEnabled, forceNew, rspack, }: {
|
|
6
6
|
browserArgs: string;
|
|
7
7
|
browserFlag: string;
|
|
8
8
|
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
@@ -16,6 +16,7 @@ export declare const StudioServerInternals: {
|
|
|
16
16
|
remotionRoot: string;
|
|
17
17
|
keyboardShortcutsEnabled: boolean;
|
|
18
18
|
experimentalClientSideRenderingEnabled: boolean;
|
|
19
|
+
experimentalVisualModeEnabled: boolean;
|
|
19
20
|
relativePublicDir: string | null;
|
|
20
21
|
webpackOverride: import("@remotion/bundler").WebpackOverrideFn;
|
|
21
22
|
poll: number | null;
|
|
@@ -23,6 +23,7 @@ export declare const startServer: (options: {
|
|
|
23
23
|
remotionRoot: string;
|
|
24
24
|
keyboardShortcutsEnabled: boolean;
|
|
25
25
|
experimentalClientSideRenderingEnabled: boolean;
|
|
26
|
+
experimentalVisualModeEnabled: boolean;
|
|
26
27
|
publicDir: string;
|
|
27
28
|
poll: number | null;
|
|
28
29
|
staticHash: string;
|
|
@@ -36,6 +36,7 @@ const startServer = async (options) => {
|
|
|
36
36
|
remotionRoot: options.remotionRoot,
|
|
37
37
|
keyboardShortcutsEnabled: options.keyboardShortcutsEnabled,
|
|
38
38
|
experimentalClientSideRenderingEnabled: options.experimentalClientSideRenderingEnabled,
|
|
39
|
+
experimentalVisualModeEnabled: options.experimentalVisualModeEnabled,
|
|
39
40
|
poll: options.poll,
|
|
40
41
|
bufferStateDelayInMilliseconds: options.bufferStateDelayInMilliseconds,
|
|
41
42
|
askAIEnabled: options.askAIEnabled,
|
package/dist/start-studio.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export type StartStudioResult = {
|
|
|
6
6
|
} | {
|
|
7
7
|
type: 'already-running';
|
|
8
8
|
};
|
|
9
|
-
export declare const startStudio: ({ browserArgs, browserFlag, shouldOpenBrowser, fullEntryPath, logLevel, getCurrentInputProps, getEnvVariables, desiredPort, maxTimelineTracks, remotionRoot, keyboardShortcutsEnabled, experimentalClientSideRenderingEnabled, relativePublicDir, webpackOverride, poll, getRenderDefaults, getRenderQueue, numberOfAudioTags, queueMethods, previewEntry, gitSource, bufferStateDelayInMilliseconds, binariesDirectory, forceIPv4, audioLatencyHint, enableCrossSiteIsolation, askAIEnabled, forceNew, rspack, }: {
|
|
9
|
+
export declare const startStudio: ({ browserArgs, browserFlag, shouldOpenBrowser, fullEntryPath, logLevel, getCurrentInputProps, getEnvVariables, desiredPort, maxTimelineTracks, remotionRoot, keyboardShortcutsEnabled, experimentalClientSideRenderingEnabled, experimentalVisualModeEnabled, relativePublicDir, webpackOverride, poll, getRenderDefaults, getRenderQueue, numberOfAudioTags, queueMethods, previewEntry, gitSource, bufferStateDelayInMilliseconds, binariesDirectory, forceIPv4, audioLatencyHint, enableCrossSiteIsolation, askAIEnabled, forceNew, rspack, }: {
|
|
10
10
|
browserArgs: string;
|
|
11
11
|
browserFlag: string;
|
|
12
12
|
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
@@ -20,6 +20,7 @@ export declare const startStudio: ({ browserArgs, browserFlag, shouldOpenBrowser
|
|
|
20
20
|
remotionRoot: string;
|
|
21
21
|
keyboardShortcutsEnabled: boolean;
|
|
22
22
|
experimentalClientSideRenderingEnabled: boolean;
|
|
23
|
+
experimentalVisualModeEnabled: boolean;
|
|
23
24
|
relativePublicDir: string | null;
|
|
24
25
|
webpackOverride: WebpackOverrideFn;
|
|
25
26
|
poll: number | null;
|
package/dist/start-studio.js
CHANGED
|
@@ -17,7 +17,7 @@ const public_folder_1 = require("./preview-server/public-folder");
|
|
|
17
17
|
const start_server_1 = require("./preview-server/start-server");
|
|
18
18
|
const server_ready_1 = require("./server-ready");
|
|
19
19
|
const watch_root_file_1 = require("./watch-root-file");
|
|
20
|
-
const startStudio = async ({ browserArgs, browserFlag, shouldOpenBrowser, fullEntryPath, logLevel, getCurrentInputProps, getEnvVariables, desiredPort, maxTimelineTracks, remotionRoot, keyboardShortcutsEnabled, experimentalClientSideRenderingEnabled, relativePublicDir, webpackOverride, poll, getRenderDefaults, getRenderQueue, numberOfAudioTags, queueMethods, previewEntry, gitSource, bufferStateDelayInMilliseconds, binariesDirectory, forceIPv4, audioLatencyHint, enableCrossSiteIsolation, askAIEnabled, forceNew, rspack, }) => {
|
|
20
|
+
const startStudio = async ({ browserArgs, browserFlag, shouldOpenBrowser, fullEntryPath, logLevel, getCurrentInputProps, getEnvVariables, desiredPort, maxTimelineTracks, remotionRoot, keyboardShortcutsEnabled, experimentalClientSideRenderingEnabled, experimentalVisualModeEnabled, relativePublicDir, webpackOverride, poll, getRenderDefaults, getRenderQueue, numberOfAudioTags, queueMethods, previewEntry, gitSource, bufferStateDelayInMilliseconds, binariesDirectory, forceIPv4, audioLatencyHint, enableCrossSiteIsolation, askAIEnabled, forceNew, rspack, }) => {
|
|
21
21
|
try {
|
|
22
22
|
if (typeof Bun === 'undefined') {
|
|
23
23
|
process.title = 'node (npx remotion studio)';
|
|
@@ -69,6 +69,7 @@ const startStudio = async ({ browserArgs, browserFlag, shouldOpenBrowser, fullEn
|
|
|
69
69
|
remotionRoot,
|
|
70
70
|
keyboardShortcutsEnabled,
|
|
71
71
|
experimentalClientSideRenderingEnabled,
|
|
72
|
+
experimentalVisualModeEnabled,
|
|
72
73
|
publicDir,
|
|
73
74
|
webpackOverride,
|
|
74
75
|
poll,
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"url": "https://github.com/remotion-dev/remotion/tree/main/packages/studio-server"
|
|
4
4
|
},
|
|
5
5
|
"name": "@remotion/studio-server",
|
|
6
|
-
"version": "4.0.
|
|
6
|
+
"version": "4.0.428",
|
|
7
7
|
"description": "Run a Remotion Studio with a server backend",
|
|
8
8
|
"main": "dist",
|
|
9
9
|
"sideEffects": false,
|
|
@@ -25,11 +25,11 @@
|
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@babel/parser": "7.24.1",
|
|
27
27
|
"semver": "7.5.3",
|
|
28
|
-
"remotion": "4.0.
|
|
28
|
+
"remotion": "4.0.428",
|
|
29
29
|
"recast": "0.23.11",
|
|
30
|
-
"@remotion/bundler": "4.0.
|
|
31
|
-
"@remotion/renderer": "4.0.
|
|
32
|
-
"@remotion/studio-shared": "4.0.
|
|
30
|
+
"@remotion/bundler": "4.0.428",
|
|
31
|
+
"@remotion/renderer": "4.0.428",
|
|
32
|
+
"@remotion/studio-shared": "4.0.428",
|
|
33
33
|
"memfs": "3.4.3",
|
|
34
34
|
"source-map": "0.7.3",
|
|
35
35
|
"open": "^8.4.2"
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"react": "19.2.3",
|
|
40
40
|
"@babel/types": "7.24.0",
|
|
41
41
|
"@types/semver": "^7.3.4",
|
|
42
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
42
|
+
"@remotion/eslint-config-internal": "4.0.428",
|
|
43
43
|
"eslint": "9.19.0",
|
|
44
44
|
"@types/node": "20.12.14",
|
|
45
45
|
"@typescript/native-preview": "7.0.0-dev.20260217.1"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,37 +0,0 @@
|
|
|
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
|
-
const bun_test_1 = require("bun:test");
|
|
7
|
-
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
-
const node_os_1 = __importDefault(require("node:os"));
|
|
9
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
-
const get_package_manager_1 = require("../get-package-manager");
|
|
11
|
-
(0, bun_test_1.describe)('getPackageManager multiple lockfiles', () => {
|
|
12
|
-
let tempDir;
|
|
13
|
-
(0, bun_test_1.beforeEach)(() => {
|
|
14
|
-
tempDir = node_fs_1.default.mkdtempSync(node_path_1.default.join(node_os_1.default.tmpdir(), 'remotion-test-'));
|
|
15
|
-
});
|
|
16
|
-
(0, bun_test_1.afterEach)(() => {
|
|
17
|
-
node_fs_1.default.rmSync(tempDir, { recursive: true, force: true });
|
|
18
|
-
});
|
|
19
|
-
(0, bun_test_1.test)('should not throw error when multiple lockfiles are detected', () => {
|
|
20
|
-
node_fs_1.default.writeFileSync(node_path_1.default.join(tempDir, 'package-lock.json'), '{}');
|
|
21
|
-
node_fs_1.default.writeFileSync(node_path_1.default.join(tempDir, 'bun.lock'), '');
|
|
22
|
-
// Should not throw
|
|
23
|
-
const manager = (0, get_package_manager_1.getPackageManager)(tempDir, undefined, 0);
|
|
24
|
-
// Should return one of them (usually the first one in the list, which is npm)
|
|
25
|
-
(0, bun_test_1.expect)(manager).not.toBe('unknown');
|
|
26
|
-
if (typeof manager !== 'string') {
|
|
27
|
-
(0, bun_test_1.expect)(['npm', 'bun']).toContain(manager.manager);
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
(0, bun_test_1.test)('should return npm if only package-lock.json exists', () => {
|
|
31
|
-
node_fs_1.default.writeFileSync(node_path_1.default.join(tempDir, 'package-lock.json'), '{}');
|
|
32
|
-
const manager = (0, get_package_manager_1.getPackageManager)(tempDir, undefined, 0);
|
|
33
|
-
if (typeof manager !== 'string') {
|
|
34
|
-
(0, bun_test_1.expect)(manager.manager).toBe('npm');
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
});
|