@remotion/studio-server 4.0.539 → 4.0.541
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/codemods/get-node-path-remappings.d.ts +5 -2
- package/dist/codemods/get-node-path-remappings.js +7 -1
- package/dist/file-watcher.d.ts +7 -1
- package/dist/file-watcher.js +33 -5
- package/dist/index.d.ts +6 -2
- package/dist/index.js +4 -0
- package/dist/preview-server/api-routes.js +4 -0
- package/dist/preview-server/commit-node-codemod.d.ts +27 -0
- package/dist/preview-server/commit-node-codemod.js +68 -0
- package/dist/preview-server/hot-middleware/index.js +11 -7
- package/dist/preview-server/live-events.js +8 -1
- package/dist/preview-server/prerendered-scene.d.ts +25 -0
- package/dist/preview-server/prerendered-scene.js +86 -0
- package/dist/preview-server/resolve-compiled-sequence-paths.d.ts +12 -0
- package/dist/preview-server/resolve-compiled-sequence-paths.js +155 -0
- package/dist/preview-server/routes/add-effect-keyframe.js +1 -1
- package/dist/preview-server/routes/add-keyframes.js +17 -9
- package/dist/preview-server/routes/add-render.js +28 -2
- package/dist/preview-server/routes/add-sequence-keyframe.js +1 -1
- package/dist/preview-server/routes/can-update-sequence-props.js +17 -4
- package/dist/preview-server/routes/delete-keyframes.d.ts +2 -2
- package/dist/preview-server/routes/delete-keyframes.js +36 -4
- package/dist/preview-server/routes/delete-nodes.js +1 -1
- package/dist/preview-server/routes/duplicate-nodes.js +3 -1
- package/dist/preview-server/routes/get-keyframe-mutation-results.d.ts +7 -0
- package/dist/preview-server/routes/get-keyframe-mutation-results.js +24 -0
- package/dist/preview-server/routes/invalidate-bundle.js +1 -1
- package/dist/preview-server/routes/move-keyframes.d.ts +2 -2
- package/dist/preview-server/routes/move-keyframes.js +36 -4
- package/dist/preview-server/routes/precompose-jsx-nodes.js +14 -10
- package/dist/preview-server/routes/prerendered-scene-info.d.ts +3 -0
- package/dist/preview-server/routes/prerendered-scene-info.js +31 -0
- package/dist/preview-server/routes/reorder-sequence.js +1 -1
- package/dist/preview-server/routes/replace-video-source.js +25 -78
- package/dist/preview-server/routes/restore-prerendered-scene.d.ts +3 -0
- package/dist/preview-server/routes/restore-prerendered-scene.js +38 -0
- package/dist/preview-server/routes/save-effect-props.js +1 -1
- package/dist/preview-server/routes/save-sequence-props.js +3 -1
- package/dist/preview-server/routes/split-sequences.js +10 -2
- package/dist/preview-server/routes/split-video-from-audio.js +1 -1
- package/dist/preview-server/routes/subscribe-to-sequence-props.js +50 -15
- package/dist/preview-server/routes/unwrap-node.js +1 -1
- package/dist/preview-server/routes/update-effect-keyframe-settings.js +1 -1
- package/dist/preview-server/routes/update-sequence-keyframe-settings.js +1 -1
- package/dist/preview-server/routes/wrap-node.js +1 -1
- package/dist/preview-server/sequence-node-path-mutation-build.d.ts +2 -0
- package/dist/preview-server/sequence-node-path-mutation-build.js +221 -0
- package/dist/preview-server/sequence-node-path-mutation.d.ts +2 -1
- package/dist/preview-server/sequence-node-path-mutation.js +14 -2
- package/dist/preview-server/sequence-props-watchers.d.ts +2 -1
- package/dist/preview-server/sequence-props-watchers.js +11 -4
- package/dist/preview-server/serve-static.js +3 -0
- package/dist/preview-server/undo-stack.d.ts +1 -1
- package/dist/preview-server/undo-stack.js +14 -2
- package/dist/preview-server/watch-ignore-next-change.d.ts +1 -1
- package/dist/preview-server/watch-ignore-next-change.js +3 -3
- package/dist/remotion-skill-names.d.ts +1 -1
- package/dist/remotion-skill-names.js +1 -0
- package/dist/routes.js +91 -28
- package/package.json +10 -10
- package/dist/canvas-capture/generate-canvas-capture-composition.d.ts +0 -14
- package/dist/canvas-capture/generate-canvas-capture-composition.js +0 -239
- package/dist/codemods/add-effect.d.ts +0 -1
- package/dist/codemods/add-effect.js +0 -8
- package/dist/codemods/apply-codemod-to-file.d.ts +0 -7
- package/dist/codemods/apply-codemod-to-file.js +0 -171
- package/dist/codemods/apply-visual-control.d.ts +0 -8
- package/dist/codemods/apply-visual-control.js +0 -89
- package/dist/codemods/delete-effect.d.ts +0 -1
- package/dist/codemods/delete-effect.js +0 -6
- package/dist/codemods/delete-jsx-node.d.ts +0 -22
- package/dist/codemods/delete-jsx-node.js +0 -17
- package/dist/codemods/delete-jsx-nodes.d.ts +0 -13
- package/dist/codemods/delete-jsx-nodes.js +0 -10
- package/dist/codemods/duplicate-composition.d.ts +0 -2
- package/dist/codemods/duplicate-composition.js +0 -64
- package/dist/codemods/duplicate-effect.d.ts +0 -1
- package/dist/codemods/duplicate-effect.js +0 -6
- package/dist/codemods/duplicate-jsx-node.d.ts +0 -25
- package/dist/codemods/duplicate-jsx-node.js +0 -26
- package/dist/codemods/format-file-content.d.ts +0 -7
- package/dist/codemods/format-file-content.js +0 -80
- package/dist/codemods/format-inline-content.d.ts +0 -18
- package/dist/codemods/format-inline-content.js +0 -78
- package/dist/codemods/insert-video-layers.d.ts +0 -11
- package/dist/codemods/insert-video-layers.js +0 -5
- package/dist/codemods/recast-mods.d.ts +0 -13
- package/dist/codemods/recast-mods.js +0 -902
- package/dist/codemods/reorder-effect.d.ts +0 -1
- package/dist/codemods/reorder-effect.js +0 -5
- package/dist/codemods/reorder-sequence.d.ts +0 -1
- package/dist/codemods/reorder-sequence.js +0 -5
- package/dist/codemods/simple-diff.d.ts +0 -5
- package/dist/codemods/simple-diff.js +0 -39
- package/dist/codemods/split-jsx-sequence.d.ts +0 -27
- package/dist/codemods/split-jsx-sequence.js +0 -19
- package/dist/codemods/split-video-from-audio.d.ts +0 -1
- package/dist/codemods/split-video-from-audio.js +0 -5
- package/dist/codemods/update-default-props.d.ts +0 -1
- package/dist/codemods/update-default-props.js +0 -6
- package/dist/codemods/update-inline-caption-patches.d.ts +0 -1
- package/dist/codemods/update-inline-caption-patches.js +0 -5
- package/dist/codemods/update-keyframes/ensure-imports-and-frame-hook.d.ts +0 -1
- package/dist/codemods/update-keyframes/ensure-imports-and-frame-hook.js +0 -7
- package/dist/open-browser-shortcut.d.ts +0 -9
- package/dist/open-browser-shortcut.js +0 -121
- package/dist/preview-server/hot-middleware/types.d.ts +0 -2
- package/dist/preview-server/hot-middleware/types.js +0 -2
- package/dist/preview-server/routes/apply-codemod.d.ts +0 -4
- package/dist/preview-server/routes/apply-codemod.js +0 -272
- package/dist/preview-server/routes/delete-jsx-node.d.ts +0 -3
- package/dist/preview-server/routes/delete-jsx-node.js +0 -126
- package/dist/preview-server/routes/delete-jsx-nodes.d.ts +0 -3
- package/dist/preview-server/routes/delete-jsx-nodes.js +0 -137
- package/dist/preview-server/routes/duplicate-jsx-node.d.ts +0 -3
- package/dist/preview-server/routes/duplicate-jsx-node.js +0 -118
- package/dist/preview-server/routes/insert-jsx-element.d.ts +0 -3
- package/dist/preview-server/routes/insert-jsx-element.js +0 -231
- package/dist/preview-server/routes/insert-video-layers.d.ts +0 -3
- package/dist/preview-server/routes/insert-video-layers.js +0 -68
- package/dist/preview-server/routes/split-jsx-sequence.d.ts +0 -3
- package/dist/preview-server/routes/split-jsx-sequence.js +0 -117
- package/dist/preview-server/routes/update-public-license.d.ts +0 -11
- package/dist/preview-server/routes/update-public-license.js +0 -97
- package/dist/preview-server/routes/wrap-jsx-node.d.ts +0 -3
- package/dist/preview-server/routes/wrap-jsx-node.js +0 -97
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { reorderEffect } from '@remotion/studio-codemods';
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.reorderEffect = void 0;
|
|
4
|
-
const studio_codemods_1 = require("@remotion/studio-codemods");
|
|
5
|
-
Object.defineProperty(exports, "reorderEffect", { enumerable: true, get: function () { return studio_codemods_1.reorderEffect; } });
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { reorderSequence } from '@remotion/studio-codemods';
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.reorderSequence = void 0;
|
|
4
|
-
const studio_codemods_1 = require("@remotion/studio-codemods");
|
|
5
|
-
Object.defineProperty(exports, "reorderSequence", { enumerable: true, get: function () { return studio_codemods_1.reorderSequence; } });
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.simpleDiff = void 0;
|
|
4
|
-
const findDeletions = ({ oldLines, newLines, }) => {
|
|
5
|
-
const linesChecked = [];
|
|
6
|
-
let totalDeletions = 0;
|
|
7
|
-
for (const line of oldLines) {
|
|
8
|
-
if (linesChecked.includes(line)) {
|
|
9
|
-
continue;
|
|
10
|
-
}
|
|
11
|
-
const timesInNewLines = newLines.filter((l) => l === line).length;
|
|
12
|
-
const timesInOldLines = oldLines.filter((l) => l === line).length;
|
|
13
|
-
const deletions = Math.max(0, timesInOldLines - timesInNewLines);
|
|
14
|
-
totalDeletions += deletions;
|
|
15
|
-
linesChecked.push(line);
|
|
16
|
-
}
|
|
17
|
-
return totalDeletions;
|
|
18
|
-
};
|
|
19
|
-
const findAdditions = ({ oldLines, newLines, }) => {
|
|
20
|
-
const linesChecked = [];
|
|
21
|
-
let totalAdditions = 0;
|
|
22
|
-
for (const line of newLines) {
|
|
23
|
-
if (linesChecked.includes(line)) {
|
|
24
|
-
continue;
|
|
25
|
-
}
|
|
26
|
-
const timesInNewLines = newLines.filter((l) => l === line).length;
|
|
27
|
-
const timesInOldLines = oldLines.filter((l) => l === line).length;
|
|
28
|
-
const additions = Math.max(0, timesInNewLines - timesInOldLines);
|
|
29
|
-
totalAdditions += additions;
|
|
30
|
-
linesChecked.push(line);
|
|
31
|
-
}
|
|
32
|
-
return totalAdditions;
|
|
33
|
-
};
|
|
34
|
-
const simpleDiff = ({ oldLines, newLines, }) => {
|
|
35
|
-
const deletions = findDeletions({ oldLines, newLines });
|
|
36
|
-
const additions = findAdditions({ oldLines, newLines });
|
|
37
|
-
return { deletions, additions };
|
|
38
|
-
};
|
|
39
|
-
exports.simpleDiff = simpleDiff;
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { SequenceNodePath } from 'remotion';
|
|
2
|
-
export declare const splitJsxSequence: ({ input, nodePath, sequenceKeys, splitFrame, prettierConfigOverride, }: {
|
|
3
|
-
input: string;
|
|
4
|
-
nodePath: SequenceNodePath;
|
|
5
|
-
sequenceKeys: string[];
|
|
6
|
-
splitFrame: number;
|
|
7
|
-
prettierConfigOverride?: Record<string, unknown> | null | undefined;
|
|
8
|
-
}) => Promise<{
|
|
9
|
-
output: string;
|
|
10
|
-
nodeLabel: string;
|
|
11
|
-
logLine: number;
|
|
12
|
-
nodePathRemappings: import("@remotion/studio-shared").SequenceNodePathRemapping[];
|
|
13
|
-
}>;
|
|
14
|
-
export declare const splitJsxSequences: ({ input, splits, prettierConfigOverride, }: {
|
|
15
|
-
input: string;
|
|
16
|
-
splits: {
|
|
17
|
-
nodePath: SequenceNodePath;
|
|
18
|
-
sequenceKeys: string[];
|
|
19
|
-
splitFrame: number;
|
|
20
|
-
}[];
|
|
21
|
-
prettierConfigOverride?: Record<string, unknown> | null | undefined;
|
|
22
|
-
}) => Promise<{
|
|
23
|
-
output: string;
|
|
24
|
-
nodeLabels: string[];
|
|
25
|
-
logLines: number[];
|
|
26
|
-
nodePathRemappings: import("@remotion/studio-shared").SequenceNodePathRemapping[];
|
|
27
|
-
}>;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.splitJsxSequences = exports.splitJsxSequence = void 0;
|
|
4
|
-
const codemods_1 = require("@remotion/codemods");
|
|
5
|
-
const { splitJsxSequence: splitJsxSequenceCodemod, splitJsxSequences: splitJsxSequencesCodemod, } = codemods_1.CodemodsInternals;
|
|
6
|
-
const splitJsxSequence = ({ input, nodePath, sequenceKeys, splitFrame, prettierConfigOverride, }) => splitJsxSequenceCodemod({
|
|
7
|
-
input,
|
|
8
|
-
nodePath,
|
|
9
|
-
sequenceKeys,
|
|
10
|
-
splitFrame,
|
|
11
|
-
prettierConfigOverride,
|
|
12
|
-
});
|
|
13
|
-
exports.splitJsxSequence = splitJsxSequence;
|
|
14
|
-
const splitJsxSequences = ({ input, splits, prettierConfigOverride, }) => splitJsxSequencesCodemod({
|
|
15
|
-
input,
|
|
16
|
-
splits,
|
|
17
|
-
prettierConfigOverride,
|
|
18
|
-
});
|
|
19
|
-
exports.splitJsxSequences = splitJsxSequences;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { splitVideoFromAudio } from '@remotion/studio-codemods';
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.splitVideoFromAudio = void 0;
|
|
4
|
-
const studio_codemods_1 = require("@remotion/studio-codemods");
|
|
5
|
-
Object.defineProperty(exports, "splitVideoFromAudio", { enumerable: true, get: function () { return studio_codemods_1.splitVideoFromAudio; } });
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { getCompositionDefaultPropsLine, updateDefaultProps, } from '@remotion/studio-codemods';
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.updateDefaultProps = exports.getCompositionDefaultPropsLine = void 0;
|
|
4
|
-
const studio_codemods_1 = require("@remotion/studio-codemods");
|
|
5
|
-
Object.defineProperty(exports, "getCompositionDefaultPropsLine", { enumerable: true, get: function () { return studio_codemods_1.getCompositionDefaultPropsLine; } });
|
|
6
|
-
Object.defineProperty(exports, "updateDefaultProps", { enumerable: true, get: function () { return studio_codemods_1.updateDefaultProps; } });
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { updateInlineCaptionPatches } from '@remotion/studio-codemods';
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.updateInlineCaptionPatches = void 0;
|
|
4
|
-
const studio_codemods_1 = require("@remotion/studio-codemods");
|
|
5
|
-
Object.defineProperty(exports, "updateInlineCaptionPatches", { enumerable: true, get: function () { return studio_codemods_1.updateInlineCaptionPatches; } });
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { ensureRemotionImports, ensureUseCurrentFrameHook, findEnclosingFunctionPath, } from '@remotion/studio-codemods';
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.findEnclosingFunctionPath = exports.ensureUseCurrentFrameHook = exports.ensureRemotionImports = void 0;
|
|
4
|
-
const studio_codemods_1 = require("@remotion/studio-codemods");
|
|
5
|
-
Object.defineProperty(exports, "ensureRemotionImports", { enumerable: true, get: function () { return studio_codemods_1.ensureRemotionImports; } });
|
|
6
|
-
Object.defineProperty(exports, "ensureUseCurrentFrameHook", { enumerable: true, get: function () { return studio_codemods_1.ensureUseCurrentFrameHook; } });
|
|
7
|
-
Object.defineProperty(exports, "findEnclosingFunctionPath", { enumerable: true, get: function () { return studio_codemods_1.findEnclosingFunctionPath; } });
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export declare const registerOpenBrowserShortcut: ({ browserArgs, browserFlag, url, logLevel, }: {
|
|
2
|
-
browserArgs: string;
|
|
3
|
-
browserFlag: string;
|
|
4
|
-
url: string;
|
|
5
|
-
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
6
|
-
}) => {
|
|
7
|
-
registered: boolean;
|
|
8
|
-
cleanup: () => void;
|
|
9
|
-
};
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.registerOpenBrowserShortcut = void 0;
|
|
37
|
-
const readline = __importStar(require("node:readline"));
|
|
38
|
-
const renderer_1 = require("@remotion/renderer");
|
|
39
|
-
const better_opn_1 = require("./better-opn");
|
|
40
|
-
const maybe_open_browser_1 = require("./maybe-open-browser");
|
|
41
|
-
const live_events_1 = require("./preview-server/live-events");
|
|
42
|
-
const registerOpenBrowserShortcut = ({ browserArgs, browserFlag, url, logLevel, }) => {
|
|
43
|
-
if (!process.stdin.isTTY) {
|
|
44
|
-
return { registered: false, cleanup: () => undefined };
|
|
45
|
-
}
|
|
46
|
-
if (typeof process.stdin.setRawMode !== 'function') {
|
|
47
|
-
return { registered: false, cleanup: () => undefined };
|
|
48
|
-
}
|
|
49
|
-
const wasRaw = process.stdin.isRaw;
|
|
50
|
-
const shouldPauseAfterCleanup = process.stdin.isPaused();
|
|
51
|
-
let cleanedUp = false;
|
|
52
|
-
let isOpeningBrowser = false;
|
|
53
|
-
const cleanup = () => {
|
|
54
|
-
if (cleanedUp) {
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
cleanedUp = true;
|
|
58
|
-
process.stdin.removeListener('keypress', onKeypress);
|
|
59
|
-
process.removeListener('SIGINT', cleanup);
|
|
60
|
-
process.removeListener('exit', cleanup);
|
|
61
|
-
if (!wasRaw && process.stdin.isTTY) {
|
|
62
|
-
process.stdin.setRawMode(false);
|
|
63
|
-
}
|
|
64
|
-
if (shouldPauseAfterCleanup) {
|
|
65
|
-
process.stdin.pause();
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
const openStudio = async () => {
|
|
69
|
-
if (isOpeningBrowser) {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
isOpeningBrowser = true;
|
|
73
|
-
(0, live_events_1.clearPrintPortMessageTimeout)();
|
|
74
|
-
try {
|
|
75
|
-
const didFocus = await (0, better_opn_1.focusBrowserTabByOrigin)({
|
|
76
|
-
url,
|
|
77
|
-
browserArgs,
|
|
78
|
-
browserFlag,
|
|
79
|
-
});
|
|
80
|
-
if (didFocus) {
|
|
81
|
-
renderer_1.RenderInternals.Log.info({ indent: false, logLevel }, renderer_1.RenderInternals.chalk.blue(`Opened ${url} in browser`));
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
const result = await (0, maybe_open_browser_1.maybeOpenBrowser)({
|
|
85
|
-
browserArgs,
|
|
86
|
-
browserFlag,
|
|
87
|
-
shouldOpenBrowser: true,
|
|
88
|
-
url,
|
|
89
|
-
logLevel,
|
|
90
|
-
});
|
|
91
|
-
if (result.didOpenBrowser) {
|
|
92
|
-
renderer_1.RenderInternals.Log.info({ indent: false, logLevel }, renderer_1.RenderInternals.chalk.blue(`Opened ${url} in browser`));
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
catch (err) {
|
|
96
|
-
renderer_1.RenderInternals.Log.error({ indent: false, logLevel }, 'Could not open browser:', err);
|
|
97
|
-
}
|
|
98
|
-
finally {
|
|
99
|
-
isOpeningBrowser = false;
|
|
100
|
-
}
|
|
101
|
-
};
|
|
102
|
-
function onKeypress(_str, key) {
|
|
103
|
-
if ((key === null || key === void 0 ? void 0 : key.ctrl) && key.name === 'c') {
|
|
104
|
-
cleanup();
|
|
105
|
-
process.kill(process.pid, 'SIGINT');
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
if ((key === null || key === void 0 ? void 0 : key.meta) || (key === null || key === void 0 ? void 0 : key.ctrl) || (key === null || key === void 0 ? void 0 : key.name) !== 's') {
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
openStudio().catch(() => undefined);
|
|
112
|
-
}
|
|
113
|
-
readline.emitKeypressEvents(process.stdin);
|
|
114
|
-
process.stdin.setRawMode(true);
|
|
115
|
-
process.stdin.resume();
|
|
116
|
-
process.stdin.on('keypress', onKeypress);
|
|
117
|
-
process.once('SIGINT', cleanup);
|
|
118
|
-
process.once('exit', cleanup);
|
|
119
|
-
return { registered: true, cleanup };
|
|
120
|
-
};
|
|
121
|
-
exports.registerOpenBrowserShortcut = registerOpenBrowserShortcut;
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { ApplyCodemodRequest, ApplyCodemodResponse } from '@remotion/studio-shared';
|
|
2
|
-
import type { ApiHandler } from '../api-types';
|
|
3
|
-
export declare const getCodemodLogMessage: (codemod: import("@remotion/studio-shared").RecastCodemod) => string;
|
|
4
|
-
export declare const applyCodemodHandler: ApiHandler<ApplyCodemodRequest, ApplyCodemodResponse>;
|
|
@@ -1,272 +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
|
-
exports.applyCodemodHandler = exports.getCodemodLogMessage = void 0;
|
|
7
|
-
const node_fs_1 = require("node:fs");
|
|
8
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
-
const codemods_1 = require("@remotion/codemods");
|
|
10
|
-
const renderer_1 = require("@remotion/renderer");
|
|
11
|
-
const apply_codemod_to_file_1 = require("../../codemods/apply-codemod-to-file");
|
|
12
|
-
const file_watcher_1 = require("../../file-watcher");
|
|
13
|
-
const format_log_file_location_1 = require("../format-log-file-location");
|
|
14
|
-
const project_info_1 = require("../project-info");
|
|
15
|
-
const undo_stack_1 = require("../undo-stack");
|
|
16
|
-
const can_update_default_props_1 = require("./can-update-default-props");
|
|
17
|
-
const source_file_write_queue_1 = require("./source-file-write-queue");
|
|
18
|
-
const { simpleDiff } = codemods_1.CodemodsInternals;
|
|
19
|
-
const getFolderPath = (parentName, folderName) => {
|
|
20
|
-
return parentName ? `${parentName}/${folderName}` : folderName;
|
|
21
|
-
};
|
|
22
|
-
const getCodemodLogMessage = (codemod) => {
|
|
23
|
-
if (codemod.type === 'new-composition') {
|
|
24
|
-
const destination = codemod.folderName
|
|
25
|
-
? ` in folder "${getFolderPath(codemod.parentName, codemod.folderName)}"`
|
|
26
|
-
: '';
|
|
27
|
-
return `Created composition "${codemod.newId}"${destination}`;
|
|
28
|
-
}
|
|
29
|
-
if (codemod.type === 'duplicate-composition') {
|
|
30
|
-
return `Duplicated composition "${codemod.idToDuplicate}" to "${codemod.newId}"`;
|
|
31
|
-
}
|
|
32
|
-
if (codemod.type === 'rename-composition') {
|
|
33
|
-
return `Renamed composition "${codemod.idToRename}" to "${codemod.newId}"`;
|
|
34
|
-
}
|
|
35
|
-
if (codemod.type === 'update-composition-metadata') {
|
|
36
|
-
return `Updated metadata of composition "${codemod.idToUpdate}"`;
|
|
37
|
-
}
|
|
38
|
-
if (codemod.type === 'delete-composition') {
|
|
39
|
-
return `Deleted composition "${codemod.idToDelete}"`;
|
|
40
|
-
}
|
|
41
|
-
if (codemod.type === 'move-composition-or-folder') {
|
|
42
|
-
const source = codemod.source.type === 'composition'
|
|
43
|
-
? `composition "${codemod.source.compositionId}"`
|
|
44
|
-
: `folder "${getFolderPath(codemod.source.parentName, codemod.source.folderName)}"`;
|
|
45
|
-
return `Moved ${source}`;
|
|
46
|
-
}
|
|
47
|
-
if (codemod.type === 'rename-folder') {
|
|
48
|
-
const oldName = getFolderPath(codemod.parentName, codemod.folderName);
|
|
49
|
-
const newName = getFolderPath(codemod.parentName, codemod.newName);
|
|
50
|
-
return `Renamed folder "${oldName}" to "${newName}"`;
|
|
51
|
-
}
|
|
52
|
-
if (codemod.type === 'new-folder') {
|
|
53
|
-
return `Created folder "${getFolderPath(codemod.parentName, codemod.folderName)}"`;
|
|
54
|
-
}
|
|
55
|
-
if (codemod.type === 'delete-folder') {
|
|
56
|
-
return `Deleted folder "${getFolderPath(codemod.parentName, codemod.folderName)}"`;
|
|
57
|
-
}
|
|
58
|
-
if (codemod.changes.length === 1) {
|
|
59
|
-
return `Updated visual control "${codemod.changes[0].id}"`;
|
|
60
|
-
}
|
|
61
|
-
return `Updated visual controls ${codemod.changes
|
|
62
|
-
.map((change) => `"${change.id}"`)
|
|
63
|
-
.join(', ')}`;
|
|
64
|
-
};
|
|
65
|
-
exports.getCodemodLogMessage = getCodemodLogMessage;
|
|
66
|
-
const getCodemodUndoDescription = (codemod) => {
|
|
67
|
-
if (codemod.type === 'delete-composition') {
|
|
68
|
-
return {
|
|
69
|
-
undoMessage: `↩️ Deletion of composition "${codemod.idToDelete}"`,
|
|
70
|
-
redoMessage: `↪️ Deletion of composition "${codemod.idToDelete}"`,
|
|
71
|
-
entryType: codemod.type,
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
if (codemod.type === 'rename-composition') {
|
|
75
|
-
const label = `composition "${codemod.idToRename}" to "${codemod.newId}"`;
|
|
76
|
-
return {
|
|
77
|
-
undoMessage: `↩️ Rename of ${label}`,
|
|
78
|
-
redoMessage: `↪️ Rename of ${label}`,
|
|
79
|
-
entryType: codemod.type,
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
if (codemod.type === 'update-composition-metadata') {
|
|
83
|
-
const label = `metadata of composition "${codemod.idToUpdate}"`;
|
|
84
|
-
return {
|
|
85
|
-
undoMessage: `↩️ Update of ${label}`,
|
|
86
|
-
redoMessage: `↪️ Update of ${label}`,
|
|
87
|
-
entryType: codemod.type,
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
if (codemod.type === 'duplicate-composition') {
|
|
91
|
-
const label = `composition "${codemod.idToDuplicate}" to "${codemod.newId}"`;
|
|
92
|
-
return {
|
|
93
|
-
undoMessage: `↩️ Duplication of ${label}`,
|
|
94
|
-
redoMessage: `↪️ Duplication of ${label}`,
|
|
95
|
-
entryType: codemod.type,
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
if (codemod.type === 'move-composition-or-folder') {
|
|
99
|
-
const label = codemod.source.type === 'composition'
|
|
100
|
-
? `composition "${codemod.source.compositionId}"`
|
|
101
|
-
: `folder "${getFolderPath(codemod.source.parentName, codemod.source.folderName)}"`;
|
|
102
|
-
return {
|
|
103
|
-
undoMessage: `↩️ Move of ${label}`,
|
|
104
|
-
redoMessage: `↪️ Move of ${label}`,
|
|
105
|
-
entryType: codemod.type,
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
if (codemod.type === 'new-composition') {
|
|
109
|
-
return {
|
|
110
|
-
undoMessage: `↩️ Creation of composition "${codemod.newId}"`,
|
|
111
|
-
redoMessage: `↪️ Creation of composition "${codemod.newId}"`,
|
|
112
|
-
entryType: codemod.type,
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
if (codemod.type === 'delete-folder') {
|
|
116
|
-
const label = `folder "${getFolderPath(codemod.parentName, codemod.folderName)}"`;
|
|
117
|
-
return {
|
|
118
|
-
undoMessage: `↩️ Deletion of ${label}`,
|
|
119
|
-
redoMessage: `↪️ Deletion of ${label}`,
|
|
120
|
-
entryType: codemod.type,
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
if (codemod.type === 'new-folder') {
|
|
124
|
-
const label = `folder "${getFolderPath(codemod.parentName, codemod.folderName)}"`;
|
|
125
|
-
return {
|
|
126
|
-
undoMessage: `↩️ Creation of ${label}`,
|
|
127
|
-
redoMessage: `↪️ Creation of ${label}`,
|
|
128
|
-
entryType: codemod.type,
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
if (codemod.type === 'rename-folder') {
|
|
132
|
-
const oldName = getFolderPath(codemod.parentName, codemod.folderName);
|
|
133
|
-
const newName = getFolderPath(codemod.parentName, codemod.newName);
|
|
134
|
-
const label = `folder "${oldName}" to "${newName}"`;
|
|
135
|
-
return {
|
|
136
|
-
undoMessage: `↩️ Rename of ${label}`,
|
|
137
|
-
redoMessage: `↪️ Rename of ${label}`,
|
|
138
|
-
entryType: codemod.type,
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
return {
|
|
142
|
-
undoMessage: '↩️ Visual control change',
|
|
143
|
-
redoMessage: '↪️ Visual control change',
|
|
144
|
-
entryType: 'visual-control',
|
|
145
|
-
};
|
|
146
|
-
};
|
|
147
|
-
const applyCodemodHandler = ({ input: { codemod, dryRun, symbolicatedStack, undoRedoNavigation }, logLevel, remotionRoot, entryPoint, }) => {
|
|
148
|
-
return (0, source_file_write_queue_1.withSourceFileWriteQueue)(async () => {
|
|
149
|
-
var _a, _b;
|
|
150
|
-
var _c, _d, _e;
|
|
151
|
-
try {
|
|
152
|
-
const logLine = (_c = symbolicatedStack === null || symbolicatedStack === void 0 ? void 0 : symbolicatedStack.originalLineNumber) !== null && _c !== void 0 ? _c : 1;
|
|
153
|
-
const filePath = symbolicatedStack
|
|
154
|
-
? (0, apply_codemod_to_file_1.resolveFilePathFromSymbolicatedStack)(remotionRoot, symbolicatedStack)
|
|
155
|
-
: (await (0, project_info_1.getProjectInfo)(remotionRoot, entryPoint)).rootFile;
|
|
156
|
-
if (!filePath) {
|
|
157
|
-
throw new Error('Cannot find file for composition in project');
|
|
158
|
-
}
|
|
159
|
-
(0, can_update_default_props_1.checkIfTypeScriptFile)(filePath);
|
|
160
|
-
const newCompositionComponentFilePath = codemod.type === 'new-composition'
|
|
161
|
-
? node_path_1.default.join(node_path_1.default.dirname(filePath), `${codemod.componentName}.tsx`)
|
|
162
|
-
: null;
|
|
163
|
-
if (codemod.type === 'new-composition' &&
|
|
164
|
-
newCompositionComponentFilePath &&
|
|
165
|
-
(0, node_fs_1.existsSync)(newCompositionComponentFilePath)) {
|
|
166
|
-
throw new Error(`Cannot create ${node_path_1.default.relative(remotionRoot, newCompositionComponentFilePath)} because it already exists`);
|
|
167
|
-
}
|
|
168
|
-
const input = (0, node_fs_1.readFileSync)(filePath, 'utf-8');
|
|
169
|
-
const result = await (0, apply_codemod_to_file_1.applyCodemodToFile)({
|
|
170
|
-
filePath,
|
|
171
|
-
codeMod: codemod,
|
|
172
|
-
});
|
|
173
|
-
const formatted = (_d = (_a = result.changes.find((change) => change.filePath === filePath)) === null || _a === void 0 ? void 0 : _a.nextContents) !== null && _d !== void 0 ? _d : input;
|
|
174
|
-
const diff = simpleDiff({
|
|
175
|
-
oldLines: input.split('\n'),
|
|
176
|
-
newLines: formatted.split('\n'),
|
|
177
|
-
});
|
|
178
|
-
if (!dryRun) {
|
|
179
|
-
if ((0, node_fs_1.readFileSync)(filePath, 'utf-8') !== input) {
|
|
180
|
-
throw new Error(`Source changed before applying codemod: ${filePath}`);
|
|
181
|
-
}
|
|
182
|
-
for (const change of result.changes) {
|
|
183
|
-
const currentContents = (0, node_fs_1.existsSync)(change.filePath)
|
|
184
|
-
? (0, node_fs_1.readFileSync)(change.filePath, 'utf-8')
|
|
185
|
-
: null;
|
|
186
|
-
if (currentContents !== change.previousContents) {
|
|
187
|
-
throw new Error(`Source changed before applying codemod: ${change.filePath}`);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
const { entryType, undoMessage, redoMessage } = getCodemodUndoDescription(codemod);
|
|
191
|
-
const snapshots = [
|
|
192
|
-
{
|
|
193
|
-
filePath,
|
|
194
|
-
oldContents: input,
|
|
195
|
-
newContents: null,
|
|
196
|
-
logLine,
|
|
197
|
-
nodePathRemappings: null,
|
|
198
|
-
},
|
|
199
|
-
];
|
|
200
|
-
let componentFilePath = null;
|
|
201
|
-
let componentFileContents = null;
|
|
202
|
-
if (codemod.type === 'new-composition') {
|
|
203
|
-
componentFilePath = newCompositionComponentFilePath;
|
|
204
|
-
if (componentFilePath === null) {
|
|
205
|
-
throw new Error('Could not determine the new component file path');
|
|
206
|
-
}
|
|
207
|
-
componentFileContents = (_e = (_b = result.changes.find((change) => change.filePath === componentFilePath)) === null || _b === void 0 ? void 0 : _b.nextContents) !== null && _e !== void 0 ? _e : null;
|
|
208
|
-
if (componentFileContents === null) {
|
|
209
|
-
throw new Error('Could not create the composition component');
|
|
210
|
-
}
|
|
211
|
-
snapshots.push({
|
|
212
|
-
filePath: componentFilePath,
|
|
213
|
-
oldContents: null,
|
|
214
|
-
newContents: componentFileContents,
|
|
215
|
-
logLine: 1,
|
|
216
|
-
nodePathRemappings: null,
|
|
217
|
-
});
|
|
218
|
-
}
|
|
219
|
-
(0, undo_stack_1.pushTransactionToUndoStack)({
|
|
220
|
-
snapshots,
|
|
221
|
-
logLevel,
|
|
222
|
-
remotionRoot,
|
|
223
|
-
description: {
|
|
224
|
-
undoMessage,
|
|
225
|
-
redoMessage,
|
|
226
|
-
},
|
|
227
|
-
entryType,
|
|
228
|
-
suppressHmrOnFileRestore: false,
|
|
229
|
-
undoRedoNavigation,
|
|
230
|
-
});
|
|
231
|
-
(0, undo_stack_1.suppressUndoStackInvalidation)(filePath);
|
|
232
|
-
if (componentFilePath) {
|
|
233
|
-
(0, undo_stack_1.suppressUndoStackInvalidation)(componentFilePath);
|
|
234
|
-
}
|
|
235
|
-
(0, file_watcher_1.writeFileAndNotifyFileWatchers)({
|
|
236
|
-
file: filePath,
|
|
237
|
-
content: formatted,
|
|
238
|
-
originatorClientId: undefined,
|
|
239
|
-
metadata: null,
|
|
240
|
-
});
|
|
241
|
-
if (componentFilePath && componentFileContents !== null) {
|
|
242
|
-
(0, file_watcher_1.writeFileAndNotifyFileWatchers)({
|
|
243
|
-
file: componentFilePath,
|
|
244
|
-
content: componentFileContents,
|
|
245
|
-
originatorClientId: undefined,
|
|
246
|
-
metadata: null,
|
|
247
|
-
});
|
|
248
|
-
}
|
|
249
|
-
const logMessage = (0, exports.getCodemodLogMessage)(codemod);
|
|
250
|
-
const editMessage = `${(0, source_file_write_queue_1.getCodemodTimingPrefix)(logLevel)}${renderer_1.RenderInternals.chalk.blueBright((0, format_log_file_location_1.formatLogFileLocation)({
|
|
251
|
-
remotionRoot,
|
|
252
|
-
absolutePath: filePath,
|
|
253
|
-
line: logLine,
|
|
254
|
-
}))} ${logMessage}`;
|
|
255
|
-
renderer_1.RenderInternals.Log.info({ indent: false, logLevel }, editMessage);
|
|
256
|
-
(0, undo_stack_1.printUndoHint)(logLevel);
|
|
257
|
-
}
|
|
258
|
-
return {
|
|
259
|
-
success: true,
|
|
260
|
-
diff,
|
|
261
|
-
};
|
|
262
|
-
}
|
|
263
|
-
catch (err) {
|
|
264
|
-
return {
|
|
265
|
-
success: false,
|
|
266
|
-
reason: err.message,
|
|
267
|
-
stack: err.stack,
|
|
268
|
-
};
|
|
269
|
-
}
|
|
270
|
-
});
|
|
271
|
-
};
|
|
272
|
-
exports.applyCodemodHandler = applyCodemodHandler;
|