@remotion/studio-server 4.0.537 → 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.
Files changed (88) hide show
  1. package/dist/ansi-diff.js +3 -19
  2. package/dist/better-opn/index.d.ts +4 -2
  3. package/dist/codemods/effect-param-expression.d.ts +2 -2
  4. package/dist/codemods/get-node-path-remappings.d.ts +1 -12
  5. package/dist/codemods/get-node-path-remappings.js +1 -51
  6. package/dist/codemods/paste-effects.d.ts +2 -15
  7. package/dist/codemods/update-effect-props/update-effect-props.d.ts +2 -2
  8. package/dist/codemods/update-keyframes/update-keyframes.d.ts +3 -3
  9. package/dist/codemods/update-nested-prop.d.ts +1 -1
  10. package/dist/detect-outdated-remotion-skills.d.ts +3 -3
  11. package/dist/figma/figma-to-svg.d.ts +1 -1
  12. package/dist/file-watcher.d.ts +1 -1
  13. package/dist/helpers/coding-agent-registry.d.ts +3 -3
  14. package/dist/helpers/css-shorthand-properties.d.ts +8 -7
  15. package/dist/helpers/custom-editor.d.ts +2 -2
  16. package/dist/helpers/editor-registry.d.ts +2 -2
  17. package/dist/helpers/get-ast-node-path.d.ts +2 -1
  18. package/dist/helpers/import-agnostic-node-path.js +22 -13
  19. package/dist/helpers/open-in-app.d.ts +3 -3
  20. package/dist/helpers/open-in-editor.d.ts +2 -2
  21. package/dist/helpers/package-manager-spawn-options.d.ts +1 -1
  22. package/dist/helpers/read-source-file.d.ts +4 -0
  23. package/dist/helpers/read-source-file.js +14 -0
  24. package/dist/helpers/recently-used-apps.d.ts +2 -2
  25. package/dist/helpers/resolve-composition-component.d.ts +2 -2
  26. package/dist/helpers/resolve-editor.d.ts +3 -3
  27. package/dist/helpers/terminal-artwork.d.ts +4 -4
  28. package/dist/helpers/video-config-values.d.ts +4 -0
  29. package/dist/helpers/video-config-values.js +11 -3
  30. package/dist/index.d.ts +39 -100
  31. package/dist/index.js +1 -1
  32. package/dist/maybe-open-browser.d.ts +2 -1
  33. package/dist/preview-server/api-types.d.ts +1 -1
  34. package/dist/preview-server/dev-middleware/index.d.ts +2 -1
  35. package/dist/preview-server/dev-middleware/middleware.d.ts +1 -1
  36. package/dist/preview-server/dev-middleware/middleware.js +14 -17
  37. package/dist/preview-server/element-install-state.d.ts +1 -1
  38. package/dist/preview-server/get-package-manager.d.ts +3 -2
  39. package/dist/preview-server/handler.d.ts +4 -4
  40. package/dist/preview-server/hmr-timing.d.ts +2 -1
  41. package/dist/preview-server/hot-middleware/index.d.ts +2 -1
  42. package/dist/preview-server/jsx-component-identity.d.ts +4 -3
  43. package/dist/preview-server/live-events.d.ts +3 -2
  44. package/dist/preview-server/public-folder.js +11 -2
  45. package/dist/preview-server/routes/add-keyframes.d.ts +2 -1
  46. package/dist/preview-server/routes/app-icon.d.ts +1 -1
  47. package/dist/preview-server/routes/apply-visual-control-change.js +1 -4
  48. package/dist/preview-server/routes/batch-update-keyframe-settings.d.ts +2 -1
  49. package/dist/preview-server/routes/can-update-default-props.d.ts +2 -1
  50. package/dist/preview-server/routes/can-update-effect-props.d.ts +2 -6
  51. package/dist/preview-server/routes/can-update-sequence-props.d.ts +17 -13
  52. package/dist/preview-server/routes/can-update-sequence-props.js +21 -25
  53. package/dist/preview-server/routes/delete-keyframes.d.ts +4 -6
  54. package/dist/preview-server/routes/delete-keyframes.js +4 -66
  55. package/dist/preview-server/routes/element-install-plan.d.ts +3 -3
  56. package/dist/preview-server/routes/find-in-file.d.ts +2 -9
  57. package/dist/preview-server/routes/insert-element.js +1 -4
  58. package/dist/preview-server/routes/install-dependency.d.ts +2 -14
  59. package/dist/preview-server/routes/log-updates/log-effect-update.d.ts +2 -1
  60. package/dist/preview-server/routes/log-updates/log-update.d.ts +3 -2
  61. package/dist/preview-server/routes/move-keyframes.d.ts +2 -1
  62. package/dist/preview-server/routes/open-in-editor.d.ts +2 -2
  63. package/dist/preview-server/routes/remotion-skills-info.d.ts +1 -1
  64. package/dist/preview-server/routes/save-multiple-effect-props.js +25 -8
  65. package/dist/preview-server/routes/save-sequence-props.d.ts +2 -2
  66. package/dist/preview-server/routes/source-file-write-queue.d.ts +3 -2
  67. package/dist/preview-server/routes/subscribe-to-sequence-props.js +55 -34
  68. package/dist/preview-server/sequence-node-path-mutation.d.ts +2 -6
  69. package/dist/preview-server/sequence-props-watchers.d.ts +7 -5
  70. package/dist/preview-server/sequence-props-watchers.js +7 -2
  71. package/dist/preview-server/serve-static.d.ts +1 -1
  72. package/dist/preview-server/serve-static.js +18 -1
  73. package/dist/preview-server/start-server.d.ts +3 -3
  74. package/dist/preview-server/studio-protocol/handle-discovery.d.ts +1 -1
  75. package/dist/preview-server/studio-protocol/handle-element-library.d.ts +1 -1
  76. package/dist/preview-server/studio-protocol/handle-install.d.ts +1 -1
  77. package/dist/preview-server/studio-protocol/handle-license-key.d.ts +1 -1
  78. package/dist/preview-server/studio-protocol/origin-policy.d.ts +2 -2
  79. package/dist/preview-server/studio-protocol/protocol-response.d.ts +1 -1
  80. package/dist/preview-server/undo-stack.d.ts +3 -3
  81. package/dist/preview-server/undo-stack.js +9 -0
  82. package/dist/preview-server/update-available.d.ts +3 -2
  83. package/dist/remotion-skill-names.d.ts +1 -1
  84. package/dist/routes.d.ts +4 -4
  85. package/dist/server-ready.d.ts +2 -1
  86. package/dist/start-studio.d.ts +3 -3
  87. package/dist/studio-shortcuts.d.ts +3 -3
  88. package/package.json +10 -10
@@ -1,6 +1,6 @@
1
1
  export declare const terminalArtworkDataUrls: {
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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";
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
- // Editing uses the current instance's configuration supplied with the mutation.
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: ({ browserArgs, browserFlag, shouldOpenBrowser, fullEntryPath, logLevel, getCurrentInputProps, getEnvVariables, desiredPort, remotionRoot, relativePublicDir, bundlerOverride, rspackOverride, webpackOverride, poll, getRenderDefaults, getRenderQueue, getNumberOfAudioTags, queueMethods, previewEntry, gitSource, binariesDirectory, forceIPv4, getAudioLatencyHint, getExperimentalKeepAudioContextAlive, getPreviewSampleRate, enableCrossSiteIsolation, forceNew, rspack, getStudioRuntimeConfig, getDefaultCodingAgent, getDefaultEditor, configFile, }: {
11
- browserArgs: string;
12
- browserFlag: string;
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: ({ remotionRoot, packageManager, dirUp, logLevel, }: {
53
- remotionRoot: string;
54
- packageManager: string | undefined;
55
- dirUp: number;
56
- logLevel: "error" | "info" | "trace" | "verbose" | "warn";
57
- }) => "unknown" | {
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: () => import("./file-watcher").FileWatcherRegistry;
83
- setFileWatcherRegistry: (registry: import("./file-watcher").FileWatcherRegistry) => () => void;
52
+ createFileWatcherRegistry: typeof createFileWatcherRegistry;
53
+ setFileWatcherRegistry: typeof setFileWatcherRegistry;
84
54
  AnsiDiff: typeof AnsiDiff;
85
- formatBytes: (number: number, options?: (Intl.NumberFormatOptions & {
55
+ formatBytes: (number: number, options?: Intl.NumberFormatOptions & {
86
56
  locale: string;
87
- bits?: boolean | undefined;
88
- binary?: boolean | undefined;
57
+ bits?: boolean;
58
+ binary?: boolean;
89
59
  signed: boolean;
90
- }) | undefined) => string;
91
- getInstalledDependencies: (remotionRoot: string) => {
92
- dependencies: string[];
93
- devDependencies: string[];
94
- optionalDependencies: string[];
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: () => Pick<import("child_process").SpawnOptionsWithoutStdio, "shell">;
115
- addCompletedClientRender: ({ render, remotionRoot, }: {
116
- render: import("@remotion/studio-shared").CompletedClientRender;
117
- remotionRoot: string;
118
- }) => void;
119
- getCompletedClientRenders: () => import("@remotion/studio-shared").CompletedClientRender[];
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: ({ getDefaultEditor, logLevel, }: {
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
- const studio_shared_2 = require("@remotion/studio-shared");
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: "error" | "info" | "trace" | "verbose" | "warn";
7
+ logLevel: LogLevel;
7
8
  }) => Promise<{
8
9
  didOpenBrowser: boolean;
9
10
  }>;
@@ -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,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: "error" | "info" | "trace" | "verbose" | "warn") => MiddleWare;
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<IncomingMessage>, next: () => void) => void;
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 cacheStore = new WeakMap();
16
- const mem = (fn, { cache = new Map() } = {}) => {
17
- const memoized = (...arguments_) => {
18
- const [key] = arguments_;
19
- const cacheItem = cache.get(key);
20
- if (cacheItem) {
21
- return cacheItem.data;
22
- }
23
- const result = fn.apply(this, arguments_);
24
- cache.set(key, {
25
- data: result,
26
- });
27
- return result;
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);
@@ -18,7 +18,7 @@ type StudioProtocolTarget = {
18
18
  readonly target: ElementInstallTarget;
19
19
  readonly expiresAt: number;
20
20
  };
21
- export declare const updateElementInstallTarget: (newTarget: Omit<ElementInstallTarget, "updatedAt">) => void;
21
+ export declare const updateElementInstallTarget: (newTarget: Omit<ElementInstallTarget, 'updatedAt'>) => void;
22
22
  export declare const getElementInstallTargetByClientId: (clientId: string) => ElementInstallTarget | null;
23
23
  export declare const getElementInstallTarget: (requestId: string | null) => ElementInstallTarget | null;
24
24
  export declare const issueStudioProtocolTarget: ({ now, origin, purpose, target, }: {
@@ -1,3 +1,4 @@
1
+ import type { LogLevel } from '@remotion/renderer';
1
2
  import type { PackageManager } from '@remotion/studio-shared';
2
3
  type LockfilePath = {
3
4
  manager: PackageManager;
@@ -10,6 +11,6 @@ export declare const getPackageManager: ({ remotionRoot, packageManager, dirUp,
10
11
  remotionRoot: string;
11
12
  packageManager: string | undefined;
12
13
  dirUp: number;
13
- logLevel: "error" | "info" | "trace" | "verbose" | "warn";
14
- }) => "unknown" | LockfilePath;
14
+ logLevel: LogLevel;
15
+ }) => LockfilePath | 'unknown';
15
16
  export {};
@@ -1,17 +1,17 @@
1
1
  import type { IncomingMessage, ServerResponse } from 'node:http';
2
- import type { DefaultEditor } from '@remotion/renderer';
2
+ import type { DefaultCodingAgent, DefaultEditor, LogLevel } from '@remotion/renderer';
3
3
  import type { ApiHandler, QueueMethods } from './api-types';
4
4
  export declare const handleRequest: <Req, Res>({ remotionRoot, request, response, entryPoint, handler, logLevel, methods, binariesDirectory, publicDir, configFile, getDefaultCodingAgent, getDefaultEditor, }: {
5
5
  remotionRoot: string;
6
6
  publicDir: string;
7
7
  request: IncomingMessage;
8
- response: ServerResponse<IncomingMessage>;
8
+ response: ServerResponse;
9
9
  entryPoint: string;
10
10
  binariesDirectory: string | null;
11
11
  configFile: string | null;
12
- getDefaultCodingAgent: () => "claude-code" | "codex" | "copilot" | "cursor" | null;
12
+ getDefaultCodingAgent: () => DefaultCodingAgent | null;
13
13
  getDefaultEditor: () => DefaultEditor | null;
14
14
  handler: ApiHandler<Req, Res>;
15
- logLevel: "error" | "info" | "trace" | "verbose" | "warn";
15
+ logLevel: LogLevel;
16
16
  methods: QueueMethods;
17
17
  }) => Promise<void>;
@@ -1,5 +1,6 @@
1
+ import { type LogLevel } from '@remotion/renderer';
1
2
  export declare const logHmrTiming: ({ detail, logLevel, stage, }: {
2
3
  detail: string | null;
3
- logLevel: "error" | "info" | "trace" | "verbose" | "warn";
4
+ logLevel: LogLevel;
4
5
  stage: string;
5
6
  }) => void;
@@ -4,6 +4,7 @@
4
4
  * and rewritten in TypeScript. This file is MIT licensed
5
5
  */
6
6
  import type { webpack } from '@remotion/bundler';
7
+ import type { LogLevel } from '@remotion/renderer';
7
8
  import type { LiveEventsServer } from '../live-events';
8
9
  declare global {
9
10
  const __webpack_hash__: unknown;
@@ -99,4 +100,4 @@ declare global {
99
100
  };
100
101
  type ModuleId = string | number;
101
102
  }
102
- export declare const setupWebpackHmr: (compiler: webpack.Compiler, logLevel: "error" | "info" | "trace" | "verbose" | "warn", liveEventsServer: LiveEventsServer) => void;
103
+ export declare const setupWebpackHmr: (compiler: webpack.Compiler, logLevel: LogLevel, liveEventsServer: LiveEventsServer) => void;
@@ -1,12 +1,13 @@
1
1
  import type { File, JSXOpeningElement } from '@babel/types';
2
+ import type { JsxComponentIdentity } from 'remotion';
2
3
  export declare class JsxElementIdentityMismatchError extends Error {
3
4
  constructor();
4
5
  }
5
6
  export declare const getJsxComponentIdentity: ({ ast, jsxElement, }: {
6
7
  ast: File;
7
8
  jsxElement: JSXOpeningElement;
8
- }) => string | null;
9
+ }) => JsxComponentIdentity | null;
9
10
  export declare const jsxComponentIdentitiesMatch: ({ expected, actual, }: {
10
- expected: string | null;
11
- actual: string | null;
11
+ expected: JsxComponentIdentity | null;
12
+ actual: JsxComponentIdentity | null;
12
13
  }) => boolean;
@@ -1,4 +1,5 @@
1
1
  import type { IncomingMessage, ServerResponse } from 'node:http';
2
+ import type { LogLevel } from '@remotion/renderer';
2
3
  import type { EventSourceEvent } from '@remotion/studio-shared';
3
4
  export type LiveEventsServer = {
4
5
  sendEventToClient: (event: EventSourceEvent) => void;
@@ -7,13 +8,13 @@ export type LiveEventsServer = {
7
8
  closeConnections: () => Promise<void>;
8
9
  addNewClientListener: (cb: () => void) => () => void;
9
10
  };
10
- export declare const subscribeToConfigChanges: (onChange: () => void) => () => void;
11
+ export declare const subscribeToConfigChanges: (onChange: () => void) => (() => void);
11
12
  export declare const clearPrintPortMessageTimeout: () => void;
12
13
  export type InitialUndoRedoState = {
13
14
  undoFile: string | null;
14
15
  redoFile: string | null;
15
16
  };
16
- export declare const makeLiveEventsRouter: (logLevel: "error" | "info" | "trace" | "verbose" | "warn", getInitialUndoRedoState: () => InitialUndoRedoState) => LiveEventsServer;
17
+ export declare const makeLiveEventsRouter: (logLevel: LogLevel, getInitialUndoRedoState: () => InitialUndoRedoState) => LiveEventsServer;
17
18
  export declare const waitForLiveEventsListener: () => Promise<LiveEventsServer>;
18
19
  export declare const getLiveEventsListener: () => LiveEventsServer | null;
19
20
  export declare const setLiveEventsListener: (listener: LiveEventsServer) => () => void;
@@ -47,9 +47,18 @@ const watchPublicFolder = ({ publicDir, onUpdate, staticHash, }) => {
47
47
  }
48
48
  // Known bug: If whole public folder is deleted, this will not be called on macOS.
49
49
  // This is not severe, so a wontfix for now.
50
+ let updateTimeout = null;
50
51
  (0, node_fs_1.watch)(publicDir, { recursive: (0, env_supports_fs_recursive_1.envSupportsFsRecursive)() }, () => {
51
- (0, exports.fetchFolder)({ publicDir, staticHash });
52
- onUpdate();
52
+ if (updateTimeout !== null) {
53
+ return;
54
+ }
55
+ // Imports can emit many events, each of which would scan and broadcast the
56
+ // entire asset list. Keep the deadline fixed so ongoing writes still update.
57
+ updateTimeout = setTimeout(() => {
58
+ updateTimeout = null;
59
+ (0, exports.fetchFolder)({ publicDir, staticHash });
60
+ onUpdate();
61
+ }, 100);
53
62
  });
54
63
  };
55
64
  const getFiles = () => {
@@ -1,7 +1,8 @@
1
+ import type { LogLevel } from '@remotion/renderer';
1
2
  import type { AddKeyframesRequest, AddKeyframesResponse, SequenceNodePathMutation } from '@remotion/studio-shared';
2
3
  import type { ApiHandler } from '../api-types';
3
4
  export declare const addKeyframes: ({ sequenceKeyframes, effectKeyframes, clientId, remotionRoot, logLevel, }: AddKeyframesRequest & {
4
5
  readonly remotionRoot: string;
5
- readonly logLevel: "error" | "info" | "trace" | "verbose" | "warn";
6
+ readonly logLevel: LogLevel;
6
7
  }) => Promise<SequenceNodePathMutation | null>;
7
8
  export declare const addKeyframesHandler: ApiHandler<AddKeyframesRequest, AddKeyframesResponse>;
@@ -1,6 +1,6 @@
1
1
  import type { IncomingMessage, ServerResponse } from 'node:http';
2
2
  export declare const handleAppIcon: ({ request, response, pathname, }: {
3
3
  request: IncomingMessage;
4
- response: ServerResponse<IncomingMessage>;
4
+ response: ServerResponse;
5
5
  pathname: string;
6
6
  }) => Promise<void>;
@@ -28,10 +28,7 @@ const applyVisualControlHandler = ({ input: { fileName, changes }, remotionRoot,
28
28
  changes,
29
29
  });
30
30
  const output = (_c = (_a = result.changes[0]) === null || _a === void 0 ? void 0 : _a.nextContents) !== null && _c !== void 0 ? _c : fileContents;
31
- const logLine = (_d = (_b = result.updatedControls.findLast((control) => {
32
- var _a;
33
- return control.id === ((_a = changes[0]) === null || _a === void 0 ? void 0 : _a.id);
34
- })) === null || _b === void 0 ? void 0 : _b.line) !== null && _d !== void 0 ? _d : 1;
31
+ const logLine = (_d = (_b = result.updatedControls.findLast((control) => { var _a; return control.id === ((_a = changes[0]) === null || _a === void 0 ? void 0 : _a.id); })) === null || _b === void 0 ? void 0 : _b.line) !== null && _d !== void 0 ? _d : 1;
35
32
  if (result.updatedControls.length === 0) {
36
33
  throw new Error('No changes were made to the file');
37
34
  }
@@ -1,7 +1,8 @@
1
+ import type { LogLevel } from '@remotion/renderer';
1
2
  import type { BatchUpdateKeyframeSettingsRequest, BatchUpdateKeyframeSettingsResponse } from '@remotion/studio-shared';
2
3
  import type { ApiHandler } from '../api-types';
3
4
  export declare const batchUpdateKeyframeSettings: ({ sequenceKeyframes, effectKeyframes, clientId, remotionRoot, logLevel, }: BatchUpdateKeyframeSettingsRequest & {
4
5
  remotionRoot: string;
5
- logLevel: "error" | "info" | "trace" | "verbose" | "warn";
6
+ logLevel: LogLevel;
6
7
  }) => Promise<void>;
7
8
  export declare const batchUpdateKeyframeSettingsHandler: ApiHandler<BatchUpdateKeyframeSettingsRequest, BatchUpdateKeyframeSettingsResponse>;