@remotion/studio-server 4.0.536 → 4.0.538
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/ansi-diff.js +3 -19
- package/dist/better-opn/index.d.ts +4 -2
- package/dist/codemods/effect-param-expression.d.ts +2 -2
- package/dist/codemods/get-node-path-remappings.d.ts +1 -12
- package/dist/codemods/get-node-path-remappings.js +1 -51
- package/dist/codemods/paste-effects.d.ts +2 -15
- package/dist/codemods/update-effect-props/update-effect-props.d.ts +2 -2
- package/dist/codemods/update-keyframes/update-keyframes.d.ts +3 -3
- package/dist/codemods/update-nested-prop.d.ts +1 -1
- package/dist/detect-outdated-remotion-skills.d.ts +3 -3
- package/dist/figma/figma-to-svg.d.ts +1 -1
- package/dist/file-watcher.d.ts +1 -1
- package/dist/helpers/coding-agent-registry.d.ts +3 -3
- package/dist/helpers/css-shorthand-properties.d.ts +8 -7
- package/dist/helpers/custom-editor.d.ts +2 -2
- package/dist/helpers/editor-registry.d.ts +2 -2
- package/dist/helpers/get-ast-node-path.d.ts +2 -1
- package/dist/helpers/import-agnostic-node-path.js +22 -13
- package/dist/helpers/open-in-app.d.ts +3 -3
- package/dist/helpers/open-in-editor.d.ts +2 -2
- package/dist/helpers/package-manager-spawn-options.d.ts +1 -1
- package/dist/helpers/read-source-file.d.ts +4 -0
- package/dist/helpers/read-source-file.js +14 -0
- package/dist/helpers/recently-used-apps.d.ts +2 -2
- package/dist/helpers/resolve-composition-component.d.ts +2 -2
- package/dist/helpers/resolve-editor.d.ts +3 -3
- package/dist/helpers/terminal-artwork.d.ts +4 -4
- package/dist/helpers/video-config-values.d.ts +4 -0
- package/dist/helpers/video-config-values.js +11 -3
- package/dist/index.d.ts +39 -100
- package/dist/index.js +1 -1
- package/dist/maybe-open-browser.d.ts +2 -1
- package/dist/preview-server/api-routes.js +2 -0
- package/dist/preview-server/api-types.d.ts +1 -1
- package/dist/preview-server/default-props-watchers.d.ts +3 -2
- package/dist/preview-server/default-props-watchers.js +48 -77
- package/dist/preview-server/dev-middleware/index.d.ts +2 -1
- package/dist/preview-server/dev-middleware/middleware.d.ts +1 -1
- package/dist/preview-server/dev-middleware/middleware.js +14 -17
- package/dist/preview-server/element-install-state.d.ts +1 -1
- package/dist/preview-server/get-package-manager.d.ts +3 -2
- package/dist/preview-server/handler.d.ts +4 -4
- package/dist/preview-server/hmr-timing.d.ts +2 -1
- package/dist/preview-server/hot-middleware/index.d.ts +2 -1
- package/dist/preview-server/jsx-component-identity.d.ts +4 -3
- package/dist/preview-server/live-events.d.ts +3 -2
- package/dist/preview-server/public-folder.js +11 -2
- package/dist/preview-server/routes/add-keyframes.d.ts +2 -1
- package/dist/preview-server/routes/app-icon.d.ts +1 -1
- package/dist/preview-server/routes/apply-visual-control-change.js +1 -4
- package/dist/preview-server/routes/batch-update-keyframe-settings.d.ts +2 -1
- package/dist/preview-server/routes/can-update-default-props.d.ts +11 -4
- package/dist/preview-server/routes/can-update-default-props.js +43 -10
- package/dist/preview-server/routes/can-update-effect-props.d.ts +2 -6
- package/dist/preview-server/routes/can-update-sequence-props.d.ts +17 -13
- package/dist/preview-server/routes/can-update-sequence-props.js +21 -25
- package/dist/preview-server/routes/delete-keyframes.d.ts +4 -6
- package/dist/preview-server/routes/delete-keyframes.js +4 -66
- package/dist/preview-server/routes/element-install-plan.d.ts +3 -3
- package/dist/preview-server/routes/find-in-file.d.ts +2 -9
- package/dist/preview-server/routes/insert-element.js +1 -4
- package/dist/preview-server/routes/install-dependency.d.ts +2 -14
- package/dist/preview-server/routes/log-updates/log-effect-update.d.ts +2 -1
- package/dist/preview-server/routes/log-updates/log-update.d.ts +3 -2
- package/dist/preview-server/routes/move-keyframes.d.ts +2 -1
- package/dist/preview-server/routes/open-in-editor.d.ts +2 -2
- package/dist/preview-server/routes/remotion-skills-info.d.ts +1 -1
- package/dist/preview-server/routes/save-multiple-effect-props.js +25 -8
- package/dist/preview-server/routes/save-sequence-props.d.ts +2 -2
- package/dist/preview-server/routes/source-file-write-queue.d.ts +3 -2
- package/dist/preview-server/routes/subscribe-to-default-props.js +2 -1
- package/dist/preview-server/routes/subscribe-to-sequence-props.js +55 -34
- package/dist/preview-server/routes/unsubscribe-from-sequence-props.d.ts +2 -2
- package/dist/preview-server/routes/unsubscribe-from-sequence-props.js +12 -10
- package/dist/preview-server/routes/unwrap-node.d.ts +3 -0
- package/dist/preview-server/routes/unwrap-node.js +98 -0
- package/dist/preview-server/routes/update-default-props.js +15 -15
- package/dist/preview-server/sequence-node-path-mutation.d.ts +2 -6
- package/dist/preview-server/sequence-props-watchers.d.ts +7 -5
- package/dist/preview-server/sequence-props-watchers.js +14 -4
- package/dist/preview-server/serve-static.d.ts +1 -1
- package/dist/preview-server/serve-static.js +18 -1
- package/dist/preview-server/start-server.d.ts +3 -3
- package/dist/preview-server/studio-protocol/handle-discovery.d.ts +1 -1
- package/dist/preview-server/studio-protocol/handle-element-library.d.ts +1 -1
- package/dist/preview-server/studio-protocol/handle-install.d.ts +1 -1
- package/dist/preview-server/studio-protocol/handle-license-key.d.ts +1 -1
- package/dist/preview-server/studio-protocol/origin-policy.d.ts +2 -2
- package/dist/preview-server/studio-protocol/protocol-response.d.ts +1 -1
- package/dist/preview-server/undo-stack.d.ts +4 -4
- package/dist/preview-server/undo-stack.js +9 -0
- package/dist/preview-server/update-available.d.ts +3 -2
- package/dist/remotion-skill-names.d.ts +1 -1
- package/dist/routes.d.ts +4 -4
- package/dist/server-ready.d.ts +2 -1
- package/dist/start-studio.d.ts +3 -3
- package/dist/studio-shortcuts.d.ts +3 -3
- package/package.json +10 -10
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare const terminalArtworkDataUrls: {
|
|
2
|
-
readonly ghostty:
|
|
3
|
-
readonly iterm2:
|
|
4
|
-
readonly 'windows-terminal':
|
|
5
|
-
readonly terminal:
|
|
2
|
+
readonly ghostty: 'data:image/png;base64,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';
|
|
3
|
+
readonly iterm2: 'data:image/png;base64,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';
|
|
4
|
+
readonly 'windows-terminal': 'data:image/png;base64,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';
|
|
5
|
+
readonly terminal: 'data:image/png;base64,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';
|
|
6
6
|
};
|
|
@@ -4,6 +4,10 @@ export type VideoConfigIdentifierValues = Map<Identifier, VideoConfigNumericBind
|
|
|
4
4
|
export declare const getVideoConfigIdentifiers: ({ ast, }: {
|
|
5
5
|
ast: File;
|
|
6
6
|
}) => Map<Identifier, VideoConfigNumericBinding>;
|
|
7
|
+
export declare const resolveVideoConfigIdentifierValues: ({ identifiers, videoConfigValues, }: {
|
|
8
|
+
identifiers: ReadonlyMap<Identifier, VideoConfigNumericBinding>;
|
|
9
|
+
videoConfigValues: VideoConfigValues | null;
|
|
10
|
+
}) => VideoConfigIdentifierValues;
|
|
7
11
|
export declare const getVideoConfigIdentifierValues: ({ ast, videoConfigValues, }: {
|
|
8
12
|
ast: File;
|
|
9
13
|
videoConfigValues: VideoConfigValues | null;
|
|
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.getVideoConfigIdentifierValues = exports.getVideoConfigIdentifiers = void 0;
|
|
36
|
+
exports.getVideoConfigIdentifierValues = exports.resolveVideoConfigIdentifierValues = exports.getVideoConfigIdentifiers = void 0;
|
|
37
37
|
const recast = __importStar(require("recast"));
|
|
38
38
|
const getVideoConfigIdentifiers = ({ ast, }) => {
|
|
39
39
|
const candidates = new Map();
|
|
@@ -87,6 +87,9 @@ const getVideoConfigIdentifiers = ({ ast, }) => {
|
|
|
87
87
|
this.traverse(path);
|
|
88
88
|
},
|
|
89
89
|
});
|
|
90
|
+
if (candidates.size === 0) {
|
|
91
|
+
return candidates;
|
|
92
|
+
}
|
|
90
93
|
// Resolve each reference to its declaration. Components may independently
|
|
91
94
|
// declare the same name, while parameters and other shadowing stay computed.
|
|
92
95
|
const bindings = new Map();
|
|
@@ -107,8 +110,7 @@ const getVideoConfigIdentifiers = ({ ast, }) => {
|
|
|
107
110
|
return bindings;
|
|
108
111
|
};
|
|
109
112
|
exports.getVideoConfigIdentifiers = getVideoConfigIdentifiers;
|
|
110
|
-
|
|
111
|
-
const getVideoConfigIdentifierValues = ({ ast, videoConfigValues, }) => new Map([...(0, exports.getVideoConfigIdentifiers)({ ast })].flatMap(([identifier, binding]) => {
|
|
113
|
+
const resolveVideoConfigIdentifierValues = ({ identifiers, videoConfigValues, }) => new Map([...identifiers].flatMap(([identifier, binding]) => {
|
|
112
114
|
if (binding.type === 'constant')
|
|
113
115
|
return [[identifier, binding]];
|
|
114
116
|
const value = videoConfigValues === null || videoConfigValues === void 0 ? void 0 : videoConfigValues[binding.field];
|
|
@@ -116,4 +118,10 @@ const getVideoConfigIdentifierValues = ({ ast, videoConfigValues, }) => new Map(
|
|
|
116
118
|
? []
|
|
117
119
|
: [[identifier, { type: 'constant', value }]];
|
|
118
120
|
}));
|
|
121
|
+
exports.resolveVideoConfigIdentifierValues = resolveVideoConfigIdentifierValues;
|
|
122
|
+
// Editing uses the current instance's configuration supplied with the mutation.
|
|
123
|
+
const getVideoConfigIdentifierValues = ({ ast, videoConfigValues, }) => (0, exports.resolveVideoConfigIdentifierValues)({
|
|
124
|
+
identifiers: (0, exports.getVideoConfigIdentifiers)({ ast }),
|
|
125
|
+
videoConfigValues,
|
|
126
|
+
});
|
|
119
127
|
exports.getVideoConfigIdentifierValues = getVideoConfigIdentifierValues;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,70 +1,40 @@
|
|
|
1
1
|
export { ApiRoutes, CopyStillToClipboardRequest, getDefaultOutLocation, OpenInFileExplorerRequest, } from '@remotion/studio-shared';
|
|
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
|
+
import { addCompletedClientRender, getCompletedClientRenders, removeCompletedClientRender } from './client-render-queue';
|
|
4
5
|
import { detectOutdatedRemotionSkills, parseRemotionSkillVersion } from './detect-outdated-remotion-skills';
|
|
6
|
+
import { createFileWatcherRegistry, setFileWatcherRegistry } from './file-watcher';
|
|
7
|
+
import { getLatestRemotionVersion } from './get-latest-remotion-version';
|
|
8
|
+
import { getInstalledDependencies, getInstalledDependenciesWithVersions } from './helpers/get-installed-dependencies';
|
|
9
|
+
import { getLocalPackageOverride } from './helpers/get-local-package-override';
|
|
10
|
+
import { getInstallCommand } from './helpers/install-command';
|
|
11
|
+
import { getPackageManagerSpawnOptions } from './helpers/package-manager-spawn-options';
|
|
12
|
+
import { getConfiguredMaxTimelineTracks, getMaxTimelineTracks, resetMaxTimelineTracks, setMaxTimelineTracks } from './max-timeline-tracks';
|
|
13
|
+
import { getPackageManager } from './preview-server/get-package-manager';
|
|
14
|
+
import { waitForLiveEventsListener } from './preview-server/live-events';
|
|
15
|
+
import { getEditorName } from './preview-server/routes/open-in-editor';
|
|
16
|
+
import { getRemotionVersion } from './preview-server/update-available';
|
|
5
17
|
import { remotionSkillNames } from './remotion-skill-names';
|
|
18
|
+
import { startStudio } from './start-studio';
|
|
6
19
|
export type { RemotionSkillsScope, RemotionSkillsStatus, } from './detect-outdated-remotion-skills';
|
|
7
20
|
export type { RemotionSkillName } from './remotion-skill-names';
|
|
8
21
|
export { detectOutdatedRemotionSkills, parseRemotionSkillVersion, remotionSkillNames, };
|
|
9
22
|
export declare const StudioServerInternals: {
|
|
10
|
-
startStudio:
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
14
|
-
shouldOpenBrowser: boolean;
|
|
15
|
-
fullEntryPath: string;
|
|
16
|
-
getCurrentInputProps: () => object;
|
|
17
|
-
getEnvVariables: () => Record<string, string>;
|
|
18
|
-
desiredPort: number | null;
|
|
19
|
-
remotionRoot: string;
|
|
20
|
-
relativePublicDir: string | null;
|
|
21
|
-
bundlerOverride: import("@remotion/bundler").BundlerOverrideFn;
|
|
22
|
-
rspackOverride: import("@remotion/bundler").RspackOverrideFn;
|
|
23
|
-
webpackOverride: import("@remotion/bundler").WebpackOverrideFn;
|
|
24
|
-
poll: number | null;
|
|
25
|
-
getRenderDefaults: () => import("@remotion/studio-shared").RenderDefaults;
|
|
26
|
-
getRenderQueue: () => import("@remotion/studio-shared").RenderJob[];
|
|
27
|
-
getNumberOfAudioTags: () => number;
|
|
28
|
-
getAudioLatencyHint: () => AudioContextLatencyCategory | null;
|
|
29
|
-
getExperimentalKeepAudioContextAlive: () => boolean;
|
|
30
|
-
getPreviewSampleRate: () => number | null;
|
|
31
|
-
enableCrossSiteIsolation: boolean;
|
|
32
|
-
queueMethods: import("./preview-server/api-types").QueueMethods;
|
|
33
|
-
previewEntry: string;
|
|
34
|
-
gitSource: import("@remotion/studio-shared").GitSource | null;
|
|
35
|
-
binariesDirectory: string | null;
|
|
36
|
-
forceIPv4: boolean;
|
|
37
|
-
forceNew: boolean;
|
|
38
|
-
rspack: boolean;
|
|
39
|
-
getStudioRuntimeConfig: () => import("@remotion/studio-shared").StudioRuntimeConfig;
|
|
40
|
-
getDefaultCodingAgent: () => "claude-code" | "codex" | "copilot" | "cursor" | null;
|
|
41
|
-
getDefaultEditor: () => import("@remotion/renderer").DefaultEditor | null;
|
|
42
|
-
configFile: string | null;
|
|
43
|
-
}) => Promise<import("./start-studio").StartStudioResult>;
|
|
44
|
-
getRemotionVersion: () => any;
|
|
45
|
-
waitForLiveEventsListener: () => Promise<import("./preview-server/live-events").LiveEventsServer>;
|
|
23
|
+
startStudio: typeof startStudio;
|
|
24
|
+
getRemotionVersion: typeof getRemotionVersion;
|
|
25
|
+
waitForLiveEventsListener: typeof waitForLiveEventsListener;
|
|
46
26
|
lockFilePaths: {
|
|
47
27
|
manager: import("@remotion/studio-shared").PackageManager;
|
|
48
28
|
path: string;
|
|
49
29
|
installCommand: string;
|
|
50
30
|
startCommand: string;
|
|
51
31
|
}[];
|
|
52
|
-
getPackageManager:
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
manager: import("@remotion/studio-shared").PackageManager;
|
|
59
|
-
path: string;
|
|
60
|
-
installCommand: string;
|
|
61
|
-
startCommand: string;
|
|
62
|
-
};
|
|
63
|
-
getMaxTimelineTracks: () => number | null;
|
|
64
|
-
getConfiguredMaxTimelineTracks: () => number | null;
|
|
65
|
-
setMaxTimelineTracks: (maxTracks: number) => void;
|
|
66
|
-
resetMaxTimelineTracks: () => void;
|
|
67
|
-
getLatestRemotionVersion: () => Promise<any>;
|
|
32
|
+
getPackageManager: typeof getPackageManager;
|
|
33
|
+
getMaxTimelineTracks: typeof getMaxTimelineTracks;
|
|
34
|
+
getConfiguredMaxTimelineTracks: typeof getConfiguredMaxTimelineTracks;
|
|
35
|
+
setMaxTimelineTracks: typeof setMaxTimelineTracks;
|
|
36
|
+
resetMaxTimelineTracks: typeof resetMaxTimelineTracks;
|
|
37
|
+
getLatestRemotionVersion: typeof getLatestRemotionVersion;
|
|
68
38
|
installFileWatcher: (options: {
|
|
69
39
|
file: string;
|
|
70
40
|
onChange: (event: import("./file-watcher").FileChangeEvent) => void;
|
|
@@ -79,57 +49,26 @@ export declare const StudioServerInternals: {
|
|
|
79
49
|
originatorClientId: string | undefined;
|
|
80
50
|
metadata: import("./file-watcher").FileChangeMetadata | null;
|
|
81
51
|
}) => void;
|
|
82
|
-
createFileWatcherRegistry:
|
|
83
|
-
setFileWatcherRegistry:
|
|
52
|
+
createFileWatcherRegistry: typeof createFileWatcherRegistry;
|
|
53
|
+
setFileWatcherRegistry: typeof setFileWatcherRegistry;
|
|
84
54
|
AnsiDiff: typeof AnsiDiff;
|
|
85
|
-
formatBytes: (number: number, options?:
|
|
55
|
+
formatBytes: (number: number, options?: Intl.NumberFormatOptions & {
|
|
86
56
|
locale: string;
|
|
87
|
-
bits?: boolean
|
|
88
|
-
binary?: boolean
|
|
57
|
+
bits?: boolean;
|
|
58
|
+
binary?: boolean;
|
|
89
59
|
signed: boolean;
|
|
90
|
-
})
|
|
91
|
-
getInstalledDependencies:
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
peerDependencies: string[];
|
|
96
|
-
};
|
|
97
|
-
getInstalledDependenciesWithVersions: (remotionRoot: string) => {
|
|
98
|
-
dependencies: Record<string, string>;
|
|
99
|
-
devDependencies: Record<string, string>;
|
|
100
|
-
optionalDependencies: Record<string, string>;
|
|
101
|
-
peerDependencies: Record<string, string>;
|
|
102
|
-
};
|
|
103
|
-
getInstallCommand: ({ manager, packages, version, additionalArgs, }: {
|
|
104
|
-
manager: import("@remotion/studio-shared").PackageManager;
|
|
105
|
-
packages: string[];
|
|
106
|
-
version: string;
|
|
107
|
-
additionalArgs: string[];
|
|
108
|
-
}) => string[];
|
|
109
|
-
getLocalPackageOverride: ({ remotionRoot, packageName, }: {
|
|
110
|
-
remotionRoot: string;
|
|
111
|
-
packageName: string;
|
|
112
|
-
}) => string | null;
|
|
60
|
+
}) => string;
|
|
61
|
+
getInstalledDependencies: typeof getInstalledDependencies;
|
|
62
|
+
getInstalledDependenciesWithVersions: typeof getInstalledDependenciesWithVersions;
|
|
63
|
+
getInstallCommand: typeof getInstallCommand;
|
|
64
|
+
getLocalPackageOverride: typeof getLocalPackageOverride;
|
|
113
65
|
localPackageRootKey: string;
|
|
114
|
-
getPackageManagerSpawnOptions:
|
|
115
|
-
addCompletedClientRender:
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
removeCompletedClientRender: (id: string) => void;
|
|
121
|
-
detectOutdatedRemotionSkills: ({ currentVersion, cwd, homeDirectory, }?: {
|
|
122
|
-
currentVersion?: string | undefined;
|
|
123
|
-
cwd?: string | undefined;
|
|
124
|
-
homeDirectory?: string | undefined;
|
|
125
|
-
}) => {
|
|
126
|
-
project: import("./detect-outdated-remotion-skills").RemotionSkillsStatus;
|
|
127
|
-
global: import("./detect-outdated-remotion-skills").RemotionSkillsStatus;
|
|
128
|
-
};
|
|
129
|
-
parseRemotionSkillVersion: (contents: string) => string | null;
|
|
66
|
+
getPackageManagerSpawnOptions: typeof getPackageManagerSpawnOptions;
|
|
67
|
+
addCompletedClientRender: typeof addCompletedClientRender;
|
|
68
|
+
getCompletedClientRenders: typeof getCompletedClientRenders;
|
|
69
|
+
removeCompletedClientRender: typeof removeCompletedClientRender;
|
|
70
|
+
detectOutdatedRemotionSkills: typeof detectOutdatedRemotionSkills;
|
|
71
|
+
parseRemotionSkillVersion: typeof parseRemotionSkillVersion;
|
|
130
72
|
remotionSkillNames: readonly ["remotion-best-practices", "remotion-captions", "remotion-create", "remotion-docs", "remotion-interactivity", "remotion-maps", "remotion-markup", "remotion-multimedia", "remotion-render", "remotion-saas", "remotion-studio", "remotion-upgrade"];
|
|
131
|
-
getEditorName:
|
|
132
|
-
getDefaultEditor: () => import("@remotion/renderer").DefaultEditor | null;
|
|
133
|
-
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
134
|
-
}) => Promise<string | null>;
|
|
73
|
+
getEditorName: typeof getEditorName;
|
|
135
74
|
};
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.StudioServerInternals = exports.remotionSkillNames = exports.parseRemotionSkillVersion = exports.detectOutdatedRemotionSkills = exports.getDefaultOutLocation = void 0;
|
|
4
4
|
const studio_shared_1 = require("@remotion/studio-shared");
|
|
5
|
-
|
|
5
|
+
var studio_shared_2 = require("@remotion/studio-shared");
|
|
6
6
|
Object.defineProperty(exports, "getDefaultOutLocation", { enumerable: true, get: function () { return studio_shared_2.getDefaultOutLocation; } });
|
|
7
7
|
const ansi_diff_1 = require("./ansi-diff");
|
|
8
8
|
const client_render_queue_1 = require("./client-render-queue");
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import type { LogLevel } from '@remotion/renderer';
|
|
1
2
|
export declare const maybeOpenBrowser: ({ browserArgs, browserFlag, shouldOpenBrowser, url, logLevel, }: {
|
|
2
3
|
browserArgs: string;
|
|
3
4
|
browserFlag: string;
|
|
4
5
|
shouldOpenBrowser: boolean;
|
|
5
6
|
url: string;
|
|
6
|
-
logLevel:
|
|
7
|
+
logLevel: LogLevel;
|
|
7
8
|
}) => Promise<{
|
|
8
9
|
didOpenBrowser: boolean;
|
|
9
10
|
}>;
|
|
@@ -71,6 +71,7 @@ const unsubscribe_from_default_props_1 = require("./routes/unsubscribe-from-defa
|
|
|
71
71
|
const unsubscribe_from_file_existence_1 = require("./routes/unsubscribe-from-file-existence");
|
|
72
72
|
const unsubscribe_from_sequence_props_1 = require("./routes/unsubscribe-from-sequence-props");
|
|
73
73
|
const unwrap_folder_1 = require("./routes/unwrap-folder");
|
|
74
|
+
const unwrap_node_1 = require("./routes/unwrap-node");
|
|
74
75
|
const update_available_1 = require("./routes/update-available");
|
|
75
76
|
const update_composition_metadata_1 = require("./routes/update-composition-metadata");
|
|
76
77
|
const update_default_props_1 = require("./routes/update-default-props");
|
|
@@ -133,6 +134,7 @@ exports.allApiRoutes = {
|
|
|
133
134
|
'/api/paste-effects': paste_effects_1.pasteEffectsHandler,
|
|
134
135
|
'/api/delete-nodes': delete_nodes_1.deleteNodesHandler,
|
|
135
136
|
'/api/duplicate-nodes': duplicate_nodes_1.duplicateNodesHandler,
|
|
137
|
+
'/api/unwrap-node': unwrap_node_1.unwrapNodeHandler,
|
|
136
138
|
'/api/wrap-node': wrap_node_1.wrapNodeHandler,
|
|
137
139
|
'/api/precompose-jsx-nodes': precompose_jsx_nodes_1.precomposeJsxNodesHandler,
|
|
138
140
|
'/api/split-sequences': split_sequences_1.splitSequencesHandler,
|
|
@@ -4,7 +4,7 @@ import type { RenderJobWithCleanup } from '@remotion/studio-shared';
|
|
|
4
4
|
export type QueueMethods = {
|
|
5
5
|
removeJob: (jobId: string) => void;
|
|
6
6
|
cancelJob: (jobId: string) => void;
|
|
7
|
-
addJob: ({ job, entryPoint, remotionRoot, logLevel }: {
|
|
7
|
+
addJob: ({ job, entryPoint, remotionRoot, logLevel, }: {
|
|
8
8
|
job: RenderJobWithCleanup;
|
|
9
9
|
entryPoint: string;
|
|
10
10
|
remotionRoot: string;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { CanUpdateDefaultPropsResponse } from '@remotion/studio-shared';
|
|
2
|
-
export declare const subscribeToDefaultPropsWatchers: ({ compositionId, clientId, remotionRoot, entryPoint, }: {
|
|
1
|
+
import type { CanUpdateDefaultPropsResponse, SymbolicatedStackFrame } from '@remotion/studio-shared';
|
|
2
|
+
export declare const subscribeToDefaultPropsWatchers: ({ compositionId, clientId, symbolicatedStack, remotionRoot, entryPoint, }: {
|
|
3
3
|
compositionId: string;
|
|
4
4
|
clientId: string;
|
|
5
|
+
symbolicatedStack: SymbolicatedStackFrame | null;
|
|
5
6
|
remotionRoot: string;
|
|
6
7
|
entryPoint: string;
|
|
7
8
|
}) => Promise<CanUpdateDefaultPropsResponse>;
|
|
@@ -4,104 +4,75 @@ exports.unsubscribeClientDefaultPropsWatchers = exports.unsubscribeFromDefaultPr
|
|
|
4
4
|
const file_watcher_1 = require("../file-watcher");
|
|
5
5
|
const live_events_1 = require("./live-events");
|
|
6
6
|
const can_update_default_props_1 = require("./routes/can-update-default-props");
|
|
7
|
-
//
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
let watcherConfig = null;
|
|
13
|
-
const ensureGlobalWatcher = (rootFile) => {
|
|
14
|
-
if (globalWatcher) {
|
|
15
|
-
globalWatcher.refCount++;
|
|
7
|
+
// Each client watches its own resolved registration file or root-file fallback.
|
|
8
|
+
const watchers = {};
|
|
9
|
+
const removeClient = (compositionId, clientId) => {
|
|
10
|
+
const compositionWatchers = watchers[compositionId];
|
|
11
|
+
if (!compositionWatchers) {
|
|
16
12
|
return;
|
|
17
13
|
}
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
14
|
+
for (const [file, watcher] of compositionWatchers) {
|
|
15
|
+
watcher.clientIds.delete(clientId);
|
|
16
|
+
if (watcher.clientIds.size === 0) {
|
|
17
|
+
watcher.unwatch();
|
|
18
|
+
compositionWatchers.delete(file);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (compositionWatchers.size === 0) {
|
|
22
|
+
delete watchers[compositionId];
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
const subscribeToDefaultPropsWatchers = async ({ compositionId, clientId, symbolicatedStack, remotionRoot, entryPoint, }) => {
|
|
26
|
+
var _a;
|
|
27
|
+
const { result, compositionFile } = await (0, can_update_default_props_1.computeCanUpdateDefaultProps)({
|
|
28
|
+
compositionId,
|
|
29
|
+
symbolicatedStack,
|
|
30
|
+
remotionRoot,
|
|
31
|
+
entryPoint,
|
|
32
|
+
});
|
|
33
|
+
// Remove from any previous subscription for this client+composition
|
|
34
|
+
removeClient(compositionId, clientId);
|
|
35
|
+
if (!compositionFile) {
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
(_a = watchers[compositionId]) !== null && _a !== void 0 ? _a : (watchers[compositionId] = new Map());
|
|
39
|
+
const compositionWatchers = watchers[compositionId];
|
|
40
|
+
if (!compositionWatchers.has(compositionFile)) {
|
|
41
|
+
const clientIds = new Set();
|
|
42
|
+
const { unwatch } = (0, file_watcher_1.installFileWatcher)({
|
|
43
|
+
file: compositionFile,
|
|
44
|
+
existenceOnly: false,
|
|
45
|
+
onChange: (event) => {
|
|
46
|
+
if (event.type === 'deleted') {
|
|
47
|
+
return;
|
|
32
48
|
}
|
|
33
|
-
const clientIds = [...subscriptions[compositionId]];
|
|
34
49
|
const newResult = (0, can_update_default_props_1.computeCanUpdateDefaultPropsFromContent)(event.content, compositionId);
|
|
50
|
+
const subscribedClientIds = [...clientIds];
|
|
35
51
|
(0, live_events_1.waitForLiveEventsListener)().then((listener) => {
|
|
36
52
|
const updateEvent = {
|
|
37
53
|
type: 'default-props-updatable-changed',
|
|
38
54
|
compositionId,
|
|
39
55
|
result: newResult,
|
|
40
56
|
};
|
|
41
|
-
for (const cId of
|
|
57
|
+
for (const cId of subscribedClientIds) {
|
|
42
58
|
listener.sendEventToClientId(cId, updateEvent);
|
|
43
59
|
}
|
|
44
60
|
});
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
globalWatcher = { unwatch, rootFile, refCount: 1 };
|
|
49
|
-
};
|
|
50
|
-
const releaseGlobalWatcher = () => {
|
|
51
|
-
if (!globalWatcher) {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
globalWatcher.refCount--;
|
|
55
|
-
if (globalWatcher.refCount <= 0) {
|
|
56
|
-
globalWatcher.unwatch();
|
|
57
|
-
globalWatcher = null;
|
|
58
|
-
watcherConfig = null;
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
const subscribeToDefaultPropsWatchers = async ({ compositionId, clientId, remotionRoot, entryPoint, }) => {
|
|
62
|
-
var _a;
|
|
63
|
-
const { result, rootFile } = await (0, can_update_default_props_1.computeCanUpdateDefaultProps)({
|
|
64
|
-
compositionId,
|
|
65
|
-
remotionRoot,
|
|
66
|
-
entryPoint,
|
|
67
|
-
});
|
|
68
|
-
// Remove from any previous subscription for this client+composition
|
|
69
|
-
if ((_a = subscriptions[compositionId]) === null || _a === void 0 ? void 0 : _a.has(clientId)) {
|
|
70
|
-
subscriptions[compositionId].delete(clientId);
|
|
71
|
-
releaseGlobalWatcher();
|
|
72
|
-
}
|
|
73
|
-
if (rootFile) {
|
|
74
|
-
watcherConfig = { remotionRoot, entryPoint };
|
|
75
|
-
if (!subscriptions[compositionId]) {
|
|
76
|
-
subscriptions[compositionId] = new Set();
|
|
77
|
-
}
|
|
78
|
-
subscriptions[compositionId].add(clientId);
|
|
79
|
-
ensureGlobalWatcher(rootFile);
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
compositionWatchers.set(compositionFile, { unwatch, clientIds });
|
|
80
64
|
}
|
|
65
|
+
compositionWatchers.get(compositionFile).clientIds.add(clientId);
|
|
81
66
|
return result;
|
|
82
67
|
};
|
|
83
68
|
exports.subscribeToDefaultPropsWatchers = subscribeToDefaultPropsWatchers;
|
|
84
69
|
const unsubscribeFromDefaultPropsWatchers = ({ compositionId, clientId, }) => {
|
|
85
|
-
|
|
86
|
-
if (!((_a = subscriptions[compositionId]) === null || _a === void 0 ? void 0 : _a.has(clientId))) {
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
subscriptions[compositionId].delete(clientId);
|
|
90
|
-
if (subscriptions[compositionId].size === 0) {
|
|
91
|
-
delete subscriptions[compositionId];
|
|
92
|
-
}
|
|
93
|
-
releaseGlobalWatcher();
|
|
70
|
+
removeClient(compositionId, clientId);
|
|
94
71
|
};
|
|
95
72
|
exports.unsubscribeFromDefaultPropsWatchers = unsubscribeFromDefaultPropsWatchers;
|
|
96
73
|
const unsubscribeClientDefaultPropsWatchers = (clientId) => {
|
|
97
|
-
for (const compositionId of Object.keys(
|
|
98
|
-
|
|
99
|
-
subscriptions[compositionId].delete(clientId);
|
|
100
|
-
if (subscriptions[compositionId].size === 0) {
|
|
101
|
-
delete subscriptions[compositionId];
|
|
102
|
-
}
|
|
103
|
-
releaseGlobalWatcher();
|
|
104
|
-
}
|
|
74
|
+
for (const compositionId of Object.keys(watchers)) {
|
|
75
|
+
removeClient(compositionId, clientId);
|
|
105
76
|
}
|
|
106
77
|
};
|
|
107
78
|
exports.unsubscribeClientDefaultPropsWatchers = unsubscribeClientDefaultPropsWatchers;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { webpack } from '@remotion/bundler';
|
|
2
|
+
import type { LogLevel } from '@remotion/renderer';
|
|
2
3
|
import type { MiddleWare } from './middleware';
|
|
3
|
-
export declare const wdm: (compiler: webpack.Compiler, logLevel:
|
|
4
|
+
export declare const wdm: (compiler: webpack.Compiler, logLevel: LogLevel) => MiddleWare;
|
|
@@ -5,4 +5,4 @@ export declare function getValueContentRangeHeader(type: string, size: number, r
|
|
|
5
5
|
end: number;
|
|
6
6
|
}): string;
|
|
7
7
|
export type MiddleWare = (req: IncomingMessage, res: ServerResponse, next: () => void) => void;
|
|
8
|
-
export declare function middleware(context: DevMiddlewareContext): (req: IncomingMessage, res: ServerResponse
|
|
8
|
+
export declare function middleware(context: DevMiddlewareContext): (req: IncomingMessage, res: ServerResponse, next: () => void) => void;
|
|
@@ -12,24 +12,21 @@ const compatible_api_1 = require("./compatible-api");
|
|
|
12
12
|
const get_paths_1 = require("./get-paths");
|
|
13
13
|
const range_parser_1 = require("./range-parser");
|
|
14
14
|
const ready_1 = require("./ready");
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
cacheStore.set(memoized, cache);
|
|
30
|
-
return memoized;
|
|
15
|
+
const parsedUrls = new Map();
|
|
16
|
+
const maximumParsedUrls = 1000;
|
|
17
|
+
const memoizedParse = (url) => {
|
|
18
|
+
const cached = parsedUrls.get(url);
|
|
19
|
+
if (cached) {
|
|
20
|
+
return cached;
|
|
21
|
+
}
|
|
22
|
+
const parsed = new URL(url, 'http://localhost');
|
|
23
|
+
// Asset preview URLs include timestamps, so the cache must stay bounded.
|
|
24
|
+
if (parsedUrls.size >= maximumParsedUrls) {
|
|
25
|
+
parsedUrls.clear();
|
|
26
|
+
}
|
|
27
|
+
parsedUrls.set(url, parsed);
|
|
28
|
+
return parsed;
|
|
31
29
|
};
|
|
32
|
-
const memoizedParse = mem((url) => new URL(url, 'http://localhost'));
|
|
33
30
|
function getFilenameFromUrl(context, url) {
|
|
34
31
|
var _a, _b;
|
|
35
32
|
const paths = (0, get_paths_1.getPaths)(context);
|