@remotion/cli 4.1.0-alpha1 → 4.1.0-alpha10
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/benchmark.js +16 -7
- package/dist/chalk/index.d.ts +2 -1
- package/dist/codemods/stringify-with-path.js +24 -19
- package/dist/compositions.js +9 -4
- package/dist/config/index.d.ts +24 -0
- package/dist/config/index.js +19 -1
- package/dist/editor/components/AssetSelector.d.ts +2 -0
- package/dist/editor/components/AssetSelector.js +30 -0
- package/dist/editor/components/AssetSelectorItem.d.ts +6 -0
- package/dist/editor/components/AssetSelectorItem.js +109 -0
- package/dist/editor/components/Canvas.js +4 -4
- package/dist/editor/components/CanvasOrLoading.js +20 -1
- package/dist/editor/components/CopyButton.js +5 -2
- package/dist/editor/components/Editor.js +1 -3
- package/dist/editor/components/ExplorerPanel.d.ts +8 -0
- package/dist/editor/components/ExplorerPanel.js +67 -0
- package/dist/editor/components/FramePersistor.d.ts +0 -2
- package/dist/editor/components/FramePersistor.js +4 -24
- package/dist/editor/components/FullscreenToggle.d.ts +2 -0
- package/dist/editor/components/FullscreenToggle.js +25 -0
- package/dist/editor/components/GlobalKeybindings.js +1 -1
- package/dist/editor/components/InitialCompositionLoader.js +1 -22
- package/dist/editor/components/KeyboardShortcutsExplainer.js +1 -1
- package/dist/editor/components/NewComposition/InputDragger.js +13 -1
- package/dist/editor/components/NewComposition/RemInput.d.ts +1 -1
- package/dist/editor/components/NewComposition/RemInputTypeColor.d.ts +1 -1
- package/dist/editor/components/NewComposition/RemTextarea.d.ts +1 -1
- package/dist/editor/components/OpenEditorButton.js +5 -2
- package/dist/editor/components/OptionsPanel.d.ts +8 -0
- package/dist/editor/components/OptionsPanel.js +79 -0
- package/dist/editor/components/PlayPause.js +4 -4
- package/dist/editor/components/PlaybackRateSelector.js +1 -1
- package/dist/editor/components/PreviewToolbar.js +3 -1
- package/dist/editor/components/QuickSwitcher/QuickSwitcherResult.js +3 -3
- package/dist/editor/components/RenderModal/DataEditor.d.ts +2 -0
- package/dist/editor/components/RenderModal/DataEditor.js +13 -10
- package/dist/editor/components/RenderModal/FrameRangeSetting.js +9 -25
- package/dist/editor/components/RenderModal/MultiRangeSlider.d.ts +12 -0
- package/dist/editor/components/RenderModal/MultiRangeSlider.js +50 -0
- package/dist/editor/components/RenderModal/RenderModal.js +7 -3
- package/dist/editor/components/RenderModal/RenderModalBasic.d.ts +2 -3
- package/dist/editor/components/RenderModal/RenderModalJSONPropsEditor.d.ts +1 -2
- package/dist/editor/components/RenderModal/RenderModalJSONPropsEditor.js +10 -11
- package/dist/editor/components/RenderModal/SchemaEditor/SchemaEditor.d.ts +2 -2
- package/dist/editor/components/RenderModal/SchemaEditor/SchemaEditor.js +26 -0
- package/dist/editor/components/RenderModal/SchemaEditor/SchemaErrorMessages.js +1 -3
- package/dist/editor/components/RenderModal/SchemaEditor/SchemaLabel.js +1 -2
- package/dist/editor/components/RenderModal/SchemaEditor/SchemaSaveButton.js +2 -1
- package/dist/editor/components/RenderModal/SchemaEditor/ZodArrayEditor.js +7 -7
- package/dist/editor/components/RenderModal/SchemaEditor/ZodBooleanEditor.d.ts +1 -1
- package/dist/editor/components/RenderModal/SchemaEditor/ZodBooleanEditor.js +1 -1
- package/dist/editor/components/RenderModal/SchemaEditor/ZodColorEditor.js +1 -1
- package/dist/editor/components/RenderModal/SchemaEditor/ZodDateEditor.js +1 -1
- package/dist/editor/components/RenderModal/SchemaEditor/ZodEffectEditor.js +2 -2
- package/dist/editor/components/RenderModal/SchemaEditor/ZodEnumEditor.js +1 -1
- package/dist/editor/components/RenderModal/SchemaEditor/ZodFieldValidation.js +1 -1
- package/dist/editor/components/RenderModal/SchemaEditor/ZodNonEditableValue.js +1 -1
- package/dist/editor/components/RenderModal/SchemaEditor/ZodNumberEditor.js +1 -1
- package/dist/editor/components/RenderModal/SchemaEditor/ZodObjectEditor.js +29 -10
- package/dist/editor/components/RenderModal/SchemaEditor/ZodOrNullishEditor.js +2 -2
- package/dist/editor/components/RenderModal/SchemaEditor/ZodStaticFileEditor.js +1 -1
- package/dist/editor/components/RenderModal/SchemaEditor/ZodStringEditor.js +1 -1
- package/dist/editor/components/RenderModal/SchemaEditor/ZodSwitch.js +0 -1
- package/dist/editor/components/RenderModal/SchemaEditor/local-state.js +9 -3
- package/dist/editor/components/RenderModal/human-readable-codec.d.ts +1 -1
- package/dist/editor/components/RenderQueue/actions.d.ts +1 -1
- package/dist/editor/components/RenderQueue/actions.js +12 -4
- package/dist/editor/components/RightPanel.js +45 -12
- package/dist/editor/components/SetTimelineInOutProvider.js +5 -4
- package/dist/editor/components/SidebarRenderButton.js +3 -1
- package/dist/editor/components/Timeline/TimelineDragHandler.js +45 -19
- package/dist/editor/components/TimelineInOutToggle.d.ts +2 -1
- package/dist/editor/components/TimelineInOutToggle.js +82 -67
- package/dist/editor/helpers/is-composition-still.d.ts +1 -1
- package/dist/editor/helpers/is-current-selected-still.js +5 -6
- package/dist/editor/helpers/use-menu-structure.js +25 -1
- package/dist/editor/icons/keys.js +1 -0
- package/dist/editor/state/canvas-ref.d.ts +2 -0
- package/dist/editor/state/canvas-ref.js +5 -0
- package/dist/editor/state/in-out.d.ts +3 -2
- package/dist/editor/state/in-out.js +22 -5
- package/dist/editor/state/marks.d.ts +3 -2
- package/dist/editor/state/marks.js +6 -6
- package/dist/error-with-stack-frame.d.ts +19 -0
- package/dist/error-with-stack-frame.js +81 -0
- package/dist/get-composition-id.d.ts +6 -6
- package/dist/get-composition-id.js +13 -6
- package/dist/get-composition-with-dimension-override.d.ts +6 -6
- package/dist/get-composition-with-dimension-override.js +3 -3
- package/dist/handle-common-errors.js +8 -0
- package/dist/handle-javascript-error.d.ts +20 -0
- package/dist/handle-javascript-error.js +81 -0
- package/dist/index.d.ts +13 -7
- package/dist/index.js +5 -2
- package/dist/log.d.ts +6 -1
- package/dist/parse-command-line.js +1 -1
- package/dist/preview-server/dev-middleware/range-parser.d.ts +1 -1
- package/dist/preview-server/dev-middleware/setup-hooks.js +1 -1
- package/dist/preview-server/render-queue/job.d.ts +2 -2
- package/dist/preview-server/render-queue/make-retry-payload.js +3 -2
- package/dist/preview-server/render-queue/open-directory-in-finder.js +11 -5
- package/dist/preview-server/render-queue/process-still.js +1 -1
- package/dist/preview-server/render-queue/process-video.js +1 -1
- package/dist/preview-server/routes/add-render.js +2 -2
- package/dist/preview-server/routes/update-default-props.js +1 -2
- package/dist/print-compositions.d.ts +2 -2
- package/dist/print-error.js +6 -3
- package/dist/progress-bar.js +2 -5
- package/dist/render-flows/render.d.ts +2 -2
- package/dist/render-flows/render.js +31 -22
- package/dist/render-flows/still.d.ts +2 -2
- package/dist/render-flows/still.js +20 -14
- package/dist/render.js +6 -1
- package/dist/setup-cache.js +1 -1
- package/dist/still.js +6 -1
- package/dist/symbolicate-error.d.ts +3 -0
- package/dist/symbolicate-error.js +24 -0
- package/dist/symbolicate-errors.d.ts +7 -0
- package/dist/symbolicate-errors.js +90 -0
- package/dist/symbolicate-stacktrace.d.ts +28 -0
- package/dist/symbolicate-stacktrace.js +135 -0
- package/dist/symbolicateable-error.d.ts +16 -0
- package/dist/symbolicateable-error.js +18 -0
- package/package.json +11 -11
- package/styles/styles.css +53 -0
|
@@ -23,7 +23,7 @@ const processStill = async ({ job, remotionRoot, entryPoint, onProgress, addClea
|
|
|
23
23
|
envVariables: job.envVariables,
|
|
24
24
|
height: null,
|
|
25
25
|
fullEntryPoint,
|
|
26
|
-
|
|
26
|
+
serializedInputPropsWithCustomSchema: job.serializedInputPropsWithCustomSchema,
|
|
27
27
|
overwrite: true,
|
|
28
28
|
port,
|
|
29
29
|
publicDir,
|
|
@@ -24,7 +24,7 @@ const processVideoJob = async ({ job, remotionRoot, entryPoint, onProgress, addC
|
|
|
24
24
|
envVariables: job.envVariables,
|
|
25
25
|
height: null,
|
|
26
26
|
fullEntryPoint,
|
|
27
|
-
|
|
27
|
+
serializedInputPropsWithCustomSchema: job.serializedInputPropsWithCustomSchema,
|
|
28
28
|
overwrite: true,
|
|
29
29
|
port,
|
|
30
30
|
publicDir,
|
|
@@ -41,7 +41,7 @@ const handleAddRender = ({ input, entryPoint, remotionRoot, }) => {
|
|
|
41
41
|
disallowParallelEncoding: input.disallowParallelEncoding,
|
|
42
42
|
chromiumOptions: input.chromiumOptions,
|
|
43
43
|
envVariables: input.envVariables,
|
|
44
|
-
|
|
44
|
+
serializedInputPropsWithCustomSchema: input.serializedInputPropsWithCustomSchema,
|
|
45
45
|
},
|
|
46
46
|
});
|
|
47
47
|
}
|
|
@@ -65,7 +65,7 @@ const handleAddRender = ({ input, entryPoint, remotionRoot, }) => {
|
|
|
65
65
|
chromiumOptions: input.chromiumOptions,
|
|
66
66
|
delayRenderTimeout: input.delayRenderTimeout,
|
|
67
67
|
envVariables: input.envVariables,
|
|
68
|
-
|
|
68
|
+
serializedInputPropsWithCustomSchema: input.serializedInputPropsWithCustomSchema,
|
|
69
69
|
},
|
|
70
70
|
entryPoint,
|
|
71
71
|
remotionRoot,
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.updateDefaultPropsHandler = void 0;
|
|
4
4
|
const node_fs_1 = require("node:fs");
|
|
5
5
|
const update_default_props_1 = require("../../codemods/update-default-props");
|
|
6
|
-
const input_props_serialization_1 = require("../../editor/components/RenderModal/SchemaEditor/input-props-serialization");
|
|
7
6
|
const project_info_1 = require("../project-info");
|
|
8
7
|
const can_update_default_props_1 = require("./can-update-default-props");
|
|
9
8
|
const updateDefaultPropsHandler = async ({ input: { compositionId, defaultProps, enumPaths }, remotionRoot }) => {
|
|
@@ -16,7 +15,7 @@ const updateDefaultPropsHandler = async ({ input: { compositionId, defaultProps,
|
|
|
16
15
|
const updated = await (0, update_default_props_1.updateDefaultProps)({
|
|
17
16
|
compositionId,
|
|
18
17
|
input: (0, node_fs_1.readFileSync)(projectInfo.videoFile, 'utf-8'),
|
|
19
|
-
newDefaultProps:
|
|
18
|
+
newDefaultProps: JSON.parse(defaultProps),
|
|
20
19
|
enumPaths,
|
|
21
20
|
});
|
|
22
21
|
(0, node_fs_1.writeFileSync)(projectInfo.videoFile, updated);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const printCompositions: (compositions:
|
|
1
|
+
import type { VideoConfig } from 'remotion';
|
|
2
|
+
export declare const printCompositions: (compositions: VideoConfig[]) => void;
|
package/dist/print-error.js
CHANGED
|
@@ -9,13 +9,16 @@ const progress_bar_1 = require("./progress-bar");
|
|
|
9
9
|
const should_use_non_overlaying_logger_1 = require("./should-use-non-overlaying-logger");
|
|
10
10
|
const printError = async (err, logLevel) => {
|
|
11
11
|
if (err instanceof renderer_1.RenderInternals.SymbolicateableError) {
|
|
12
|
+
const updatesDoOverwrite = !(0, should_use_non_overlaying_logger_1.shouldUseNonOverlayingLogger)({ logLevel });
|
|
12
13
|
const output = (0, progress_bar_1.createOverwriteableCliOutput)({
|
|
13
14
|
quiet: false,
|
|
14
15
|
cancelSignal: null,
|
|
15
|
-
updatesDontOverwrite:
|
|
16
|
+
updatesDontOverwrite: !updatesDoOverwrite,
|
|
16
17
|
indent: false,
|
|
17
18
|
});
|
|
18
|
-
|
|
19
|
+
if (updatesDoOverwrite) {
|
|
20
|
+
output.update(chalk_1.chalk.red('Symbolicating minified error message...\n' + err.message), false);
|
|
21
|
+
}
|
|
19
22
|
try {
|
|
20
23
|
const symbolicated = await renderer_1.RenderInternals.symbolicateError(err);
|
|
21
24
|
if (symbolicated.frame === null) {
|
|
@@ -27,7 +30,7 @@ const printError = async (err, logLevel) => {
|
|
|
27
30
|
(0, code_frame_1.printCodeFrameAndStack)(symbolicated);
|
|
28
31
|
}
|
|
29
32
|
catch (e) {
|
|
30
|
-
output.update(chalk_1.chalk.red('
|
|
33
|
+
output.update(chalk_1.chalk.red(''), true);
|
|
31
34
|
log_1.Log.error();
|
|
32
35
|
log_1.Log.error(err.stack || err);
|
|
33
36
|
}
|
package/dist/progress-bar.js
CHANGED
|
@@ -24,7 +24,7 @@ const createOverwriteableCliOutput = (options) => {
|
|
|
24
24
|
.map((l) => {
|
|
25
25
|
return `${renderer_1.RenderInternals.INDENT_TOKEN} ${l}`;
|
|
26
26
|
})
|
|
27
|
-
.join('\n'));
|
|
27
|
+
.join('\n') + '\n');
|
|
28
28
|
}
|
|
29
29
|
else {
|
|
30
30
|
process.stdout.write(up + '\n');
|
|
@@ -171,16 +171,13 @@ const getGuiProgressSubtitle = (progress) => {
|
|
|
171
171
|
return `Bundling ${Math.round(progress.bundling.progress * 100)}%`;
|
|
172
172
|
}
|
|
173
173
|
if (progress.copyingState.doneIn === null) {
|
|
174
|
-
if (progress.copyingState.bytes < 100000000) {
|
|
175
|
-
return 'Bundling 100%';
|
|
176
|
-
}
|
|
177
174
|
const bytes = new Intl.NumberFormat('en', {
|
|
178
175
|
notation: 'compact',
|
|
179
176
|
style: 'unit',
|
|
180
177
|
unit: 'byte',
|
|
181
178
|
unitDisplay: 'narrow',
|
|
182
179
|
});
|
|
183
|
-
return `Copying ${bytes.format(progress.copyingState.bytes)}`;
|
|
180
|
+
return `Copying public dir ${bytes.format(progress.copyingState.bytes)}`;
|
|
184
181
|
}
|
|
185
182
|
if (!progress.rendering) {
|
|
186
183
|
return `Getting compositions`;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AudioCodec, Browser, BrowserExecutable, CancelSignal, ChromiumOptions, Codec, Crf, FfmpegOverrideFn, FrameRange, LogLevel, PixelFormat, ProResProfile, VideoImageFormat } from '@remotion/renderer';
|
|
2
2
|
import type { Loop } from '../config/number-of-gif-loops';
|
|
3
3
|
import type { JobProgressCallback } from '../preview-server/render-queue/job';
|
|
4
|
-
export declare const renderVideoFlow: ({ remotionRoot, fullEntryPoint, indent, logLevel, browserExecutable, browser, chromiumOptions, scale, shouldOutputImageSequence, publicDir,
|
|
4
|
+
export declare const renderVideoFlow: ({ remotionRoot, fullEntryPoint, indent, logLevel, browserExecutable, browser, chromiumOptions, scale, shouldOutputImageSequence, publicDir, envVariables, puppeteerTimeout, port, height, width, remainingArgs, compositionIdFromUi, entryPointReason, overwrite, quiet, concurrency, frameRange, everyNthFrame, outputLocationFromUI, jpegQuality, onProgress, addCleanupCallback, cancelSignal, crf, uiCodec, uiImageFormat, ffmpegOverride, audioBitrate, muted, enforceAudioTrack, proResProfile, pixelFormat, videoBitrate, numberOfGifLoops, audioCodec, serializedInputPropsWithCustomSchema, disallowParallelEncoding, }: {
|
|
5
5
|
remotionRoot: string;
|
|
6
6
|
fullEntryPoint: string;
|
|
7
7
|
entryPointReason: string;
|
|
@@ -13,7 +13,7 @@ export declare const renderVideoFlow: ({ remotionRoot, fullEntryPoint, indent, l
|
|
|
13
13
|
indent: boolean;
|
|
14
14
|
shouldOutputImageSequence: boolean;
|
|
15
15
|
publicDir: string | null;
|
|
16
|
-
|
|
16
|
+
serializedInputPropsWithCustomSchema: string;
|
|
17
17
|
envVariables: Record<string, string>;
|
|
18
18
|
puppeteerTimeout: number;
|
|
19
19
|
port: number | null;
|
|
@@ -31,6 +31,7 @@ const renderer_1 = require("@remotion/renderer");
|
|
|
31
31
|
const node_fs_1 = __importStar(require("node:fs"));
|
|
32
32
|
const node_os_1 = __importDefault(require("node:os"));
|
|
33
33
|
const node_path_1 = __importDefault(require("node:path"));
|
|
34
|
+
const remotion_1 = require("remotion");
|
|
34
35
|
const chalk_1 = require("../chalk");
|
|
35
36
|
const config_1 = require("../config");
|
|
36
37
|
const get_cli_options_1 = require("../get-cli-options");
|
|
@@ -45,18 +46,20 @@ const setup_cache_1 = require("../setup-cache");
|
|
|
45
46
|
const should_use_non_overlaying_logger_1 = require("../should-use-non-overlaying-logger");
|
|
46
47
|
const truthy_1 = require("../truthy");
|
|
47
48
|
const user_passed_output_location_1 = require("../user-passed-output-location");
|
|
48
|
-
const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel, browserExecutable, browser, chromiumOptions, scale, shouldOutputImageSequence, publicDir,
|
|
49
|
+
const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel, browserExecutable, browser, chromiumOptions, scale, shouldOutputImageSequence, publicDir, envVariables, puppeteerTimeout, port, height, width, remainingArgs, compositionIdFromUi, entryPointReason, overwrite, quiet, concurrency, frameRange, everyNthFrame, outputLocationFromUI, jpegQuality, onProgress, addCleanupCallback, cancelSignal, crf, uiCodec, uiImageFormat, ffmpegOverride, audioBitrate, muted, enforceAudioTrack, proResProfile, pixelFormat, videoBitrate, numberOfGifLoops, audioCodec, serializedInputPropsWithCustomSchema, disallowParallelEncoding, }) => {
|
|
49
50
|
var _a;
|
|
50
51
|
const downloads = [];
|
|
51
|
-
|
|
52
|
+
if (browserExecutable) {
|
|
53
|
+
log_1.Log.verboseAdvanced({ indent, logLevel }, 'Browser executable: ', browserExecutable);
|
|
54
|
+
}
|
|
52
55
|
const browserInstance = renderer_1.RenderInternals.internalOpenBrowser({
|
|
53
56
|
browser,
|
|
54
57
|
browserExecutable,
|
|
55
|
-
shouldDumpIo: renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'verbose'),
|
|
56
58
|
chromiumOptions,
|
|
57
59
|
forceDeviceScaleFactor: scale,
|
|
58
60
|
indent,
|
|
59
61
|
viewport: null,
|
|
62
|
+
logLevel,
|
|
60
63
|
});
|
|
61
64
|
const updatesDontOverwrite = (0, should_use_non_overlaying_logger_1.shouldUseNonOverlayingLogger)({ logLevel });
|
|
62
65
|
const renderProgress = (0, progress_bar_1.createOverwriteableCliOutput)({
|
|
@@ -134,17 +137,17 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
|
|
|
134
137
|
};
|
|
135
138
|
};
|
|
136
139
|
const puppeteerInstance = await browserInstance;
|
|
137
|
-
addCleanupCallback(() => puppeteerInstance.close(false));
|
|
140
|
+
addCleanupCallback(() => puppeteerInstance.close(false, logLevel, indent));
|
|
138
141
|
const actualConcurrency = renderer_1.RenderInternals.getActualConcurrency(concurrency);
|
|
139
|
-
const server = renderer_1.RenderInternals.prepareServer({
|
|
142
|
+
const server = await renderer_1.RenderInternals.prepareServer({
|
|
140
143
|
concurrency: actualConcurrency,
|
|
141
144
|
indent,
|
|
142
145
|
port,
|
|
143
146
|
remotionRoot,
|
|
144
|
-
|
|
147
|
+
logLevel,
|
|
145
148
|
webpackConfigOrServeUrl: urlOrBundle,
|
|
146
149
|
});
|
|
147
|
-
addCleanupCallback(() => server.
|
|
150
|
+
addCleanupCallback(() => server.closeServer(false));
|
|
148
151
|
const { compositionId, config, reason, argsAfterComposition } = await (0, get_composition_with_dimension_override_1.getCompositionWithDimensionOverride)({
|
|
149
152
|
height,
|
|
150
153
|
width,
|
|
@@ -154,13 +157,13 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
|
|
|
154
157
|
chromiumOptions,
|
|
155
158
|
envVariables,
|
|
156
159
|
indent,
|
|
157
|
-
|
|
160
|
+
serializedInputPropsWithCustomSchema,
|
|
158
161
|
port,
|
|
159
162
|
puppeteerInstance,
|
|
160
163
|
serveUrlOrWebpackUrl: urlOrBundle,
|
|
161
164
|
timeoutInMilliseconds: puppeteerTimeout,
|
|
162
|
-
|
|
163
|
-
server
|
|
165
|
+
logLevel,
|
|
166
|
+
server,
|
|
164
167
|
});
|
|
165
168
|
const { codec, reason: codecReason } = (0, get_final_output_codec_1.getFinalOutputCodec)({
|
|
166
169
|
cliFlag: parse_command_line_1.parsedCli.codec,
|
|
@@ -212,10 +215,9 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
|
|
|
212
215
|
? absoluteOutputFile
|
|
213
216
|
: await node_fs_1.default.promises.mkdtemp(node_path_1.default.join(node_os_1.default.tmpdir(), 'react-motion-render'));
|
|
214
217
|
log_1.Log.verboseAdvanced({ indent, logLevel }, 'Output dir', outputDir);
|
|
215
|
-
const verbose = renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'verbose');
|
|
216
218
|
await renderer_1.RenderInternals.internalRenderFrames({
|
|
217
219
|
imageFormat,
|
|
218
|
-
|
|
220
|
+
serializedInputPropsWithCustomSchema,
|
|
219
221
|
onFrameUpdate: (rendered) => {
|
|
220
222
|
renderingProgress.frames = rendered;
|
|
221
223
|
updateRenderProgress(false);
|
|
@@ -225,7 +227,6 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
|
|
|
225
227
|
cancelSignal: cancelSignal !== null && cancelSignal !== void 0 ? cancelSignal : undefined,
|
|
226
228
|
outputDir,
|
|
227
229
|
webpackBundleOrServeUrl: urlOrBundle,
|
|
228
|
-
dumpBrowserLogs: verbose,
|
|
229
230
|
everyNthFrame,
|
|
230
231
|
envVariables,
|
|
231
232
|
frameRange,
|
|
@@ -243,7 +244,12 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
|
|
|
243
244
|
muted,
|
|
244
245
|
onBrowserLog: null,
|
|
245
246
|
onFrameBuffer: null,
|
|
246
|
-
|
|
247
|
+
logLevel,
|
|
248
|
+
serializedResolvedPropsWithCustomSchema: remotion_1.Internals.serializeJSONWithDate({
|
|
249
|
+
indent: undefined,
|
|
250
|
+
staticBase: null,
|
|
251
|
+
data: config.props,
|
|
252
|
+
}).serializedString,
|
|
247
253
|
});
|
|
248
254
|
updateRenderProgress(true);
|
|
249
255
|
log_1.Log.infoAdvanced({ indent, logLevel }, chalk_1.chalk.blue(`▶ ${absoluteOutputFile}`));
|
|
@@ -266,19 +272,18 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
|
|
|
266
272
|
crf: crf !== null && crf !== void 0 ? crf : null,
|
|
267
273
|
envVariables,
|
|
268
274
|
frameRange,
|
|
269
|
-
|
|
275
|
+
serializedInputPropsWithCustomSchema,
|
|
270
276
|
overwrite,
|
|
271
277
|
pixelFormat,
|
|
272
278
|
proResProfile,
|
|
273
279
|
jpegQuality: jpegQuality !== null && jpegQuality !== void 0 ? jpegQuality : renderer_1.RenderInternals.DEFAULT_JPEG_QUALITY,
|
|
274
|
-
dumpBrowserLogs: renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'verbose'),
|
|
275
280
|
chromiumOptions,
|
|
276
|
-
timeoutInMilliseconds:
|
|
281
|
+
timeoutInMilliseconds: puppeteerTimeout,
|
|
277
282
|
scale,
|
|
278
283
|
port,
|
|
279
284
|
numberOfGifLoops,
|
|
280
285
|
everyNthFrame,
|
|
281
|
-
|
|
286
|
+
logLevel,
|
|
282
287
|
muted,
|
|
283
288
|
enforceAudioTrack,
|
|
284
289
|
browserExecutable,
|
|
@@ -312,14 +317,18 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
|
|
|
312
317
|
disallowParallelEncoding,
|
|
313
318
|
onBrowserLog: null,
|
|
314
319
|
onStart: () => undefined,
|
|
320
|
+
serializedResolvedPropsWithCustomSchema: remotion_1.Internals.serializeJSONWithDate({
|
|
321
|
+
data: config.props,
|
|
322
|
+
indent: undefined,
|
|
323
|
+
staticBase: null,
|
|
324
|
+
}).serializedString,
|
|
315
325
|
});
|
|
316
|
-
|
|
326
|
+
updateRenderProgress(true);
|
|
327
|
+
log_1.Log.infoAdvanced({ indent, logLevel }, chalk_1.chalk.blue(`${exists ? '○' : '+'} ${absoluteOutputFile}`));
|
|
317
328
|
log_1.Log.verboseAdvanced({ indent, logLevel }, `Slowest frames:`);
|
|
318
329
|
slowestFrames.forEach(({ frame, time }) => {
|
|
319
|
-
log_1.Log.verboseAdvanced({ indent, logLevel }, `Frame ${frame} (${time.toFixed(3)}ms)`);
|
|
330
|
+
log_1.Log.verboseAdvanced({ indent, logLevel }, ` Frame ${frame} (${time.toFixed(3)}ms)`);
|
|
320
331
|
});
|
|
321
|
-
updateRenderProgress(true);
|
|
322
|
-
log_1.Log.infoAdvanced({ indent, logLevel }, chalk_1.chalk.blue(`${exists ? '○' : '+'} ${absoluteOutputFile}`));
|
|
323
332
|
for (const line of renderer_1.RenderInternals.perf.getPerf()) {
|
|
324
333
|
log_1.Log.verboseAdvanced({ indent, logLevel }, line);
|
|
325
334
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { Browser, BrowserExecutable, CancelSignal, ChromiumOptions, LogLevel, StillImageFormat } from '@remotion/renderer';
|
|
2
2
|
import type { JobProgressCallback } from '../preview-server/render-queue/job';
|
|
3
|
-
export declare const renderStillFlow: ({ remotionRoot, fullEntryPoint, entryPointReason, remainingArgs, browser, browserExecutable, chromiumOptions, envVariables, height,
|
|
3
|
+
export declare const renderStillFlow: ({ remotionRoot, fullEntryPoint, entryPointReason, remainingArgs, browser, browserExecutable, chromiumOptions, envVariables, height, serializedInputPropsWithCustomSchema, overwrite, port, publicDir, puppeteerTimeout, jpegQuality, scale, stillFrame, width, compositionIdFromUi, imageFormatFromUi, logLevel, onProgress, indentOutput, addCleanupCallback, cancelSignal, outputLocationFromUi, }: {
|
|
4
4
|
remotionRoot: string;
|
|
5
5
|
fullEntryPoint: string;
|
|
6
6
|
entryPointReason: string;
|
|
7
7
|
remainingArgs: string[];
|
|
8
|
-
|
|
8
|
+
serializedInputPropsWithCustomSchema: string;
|
|
9
9
|
envVariables: Record<string, string>;
|
|
10
10
|
jpegQuality: number;
|
|
11
11
|
browser: Browser;
|
|
@@ -8,6 +8,7 @@ exports.renderStillFlow = void 0;
|
|
|
8
8
|
const renderer_1 = require("@remotion/renderer");
|
|
9
9
|
const node_fs_1 = require("node:fs");
|
|
10
10
|
const node_path_1 = __importDefault(require("node:path"));
|
|
11
|
+
const remotion_1 = require("remotion");
|
|
11
12
|
const chalk_1 = require("../chalk");
|
|
12
13
|
const cleanup_before_quit_1 = require("../cleanup-before-quit");
|
|
13
14
|
const config_1 = require("../config");
|
|
@@ -22,7 +23,7 @@ const setup_cache_1 = require("../setup-cache");
|
|
|
22
23
|
const should_use_non_overlaying_logger_1 = require("../should-use-non-overlaying-logger");
|
|
23
24
|
const truthy_1 = require("../truthy");
|
|
24
25
|
const user_passed_output_location_1 = require("../user-passed-output-location");
|
|
25
|
-
const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason, remainingArgs, browser, browserExecutable, chromiumOptions, envVariables, height,
|
|
26
|
+
const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason, remainingArgs, browser, browserExecutable, chromiumOptions, envVariables, height, serializedInputPropsWithCustomSchema, overwrite, port, publicDir, puppeteerTimeout, jpegQuality, scale, stillFrame, width, compositionIdFromUi, imageFormatFromUi, logLevel, onProgress, indentOutput, addCleanupCallback, cancelSignal, outputLocationFromUi, }) => {
|
|
26
27
|
var _a, _b;
|
|
27
28
|
const downloads = [];
|
|
28
29
|
const aggregate = (0, progress_types_1.initialAggregateRenderProgress)();
|
|
@@ -43,16 +44,17 @@ const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason,
|
|
|
43
44
|
}
|
|
44
45
|
onProgress({ message, value: progress, ...aggregate });
|
|
45
46
|
};
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
if (browserExecutable) {
|
|
48
|
+
log_1.Log.verboseAdvanced({ indent: indentOutput, logLevel }, 'Browser executable: ', browserExecutable);
|
|
49
|
+
}
|
|
48
50
|
const browserInstance = renderer_1.RenderInternals.internalOpenBrowser({
|
|
49
51
|
browser,
|
|
50
52
|
browserExecutable,
|
|
51
53
|
chromiumOptions,
|
|
52
|
-
shouldDumpIo: verbose,
|
|
53
54
|
forceDeviceScaleFactor: scale,
|
|
54
55
|
indent: indentOutput,
|
|
55
56
|
viewport: null,
|
|
57
|
+
logLevel,
|
|
56
58
|
});
|
|
57
59
|
const { cleanup: cleanupBundle, urlOrBundle } = await (0, setup_cache_1.bundleOnCliOrTakeServeUrl)({
|
|
58
60
|
fullPath: fullEntryPoint,
|
|
@@ -74,18 +76,18 @@ const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason,
|
|
|
74
76
|
},
|
|
75
77
|
quietProgress: updatesDontOverwrite,
|
|
76
78
|
});
|
|
77
|
-
const server = renderer_1.RenderInternals.prepareServer({
|
|
79
|
+
const server = await renderer_1.RenderInternals.prepareServer({
|
|
78
80
|
concurrency: 1,
|
|
79
81
|
indent: indentOutput,
|
|
80
82
|
port,
|
|
81
83
|
remotionRoot,
|
|
82
|
-
|
|
84
|
+
logLevel,
|
|
83
85
|
webpackConfigOrServeUrl: urlOrBundle,
|
|
84
86
|
});
|
|
85
|
-
addCleanupCallback(() => server.
|
|
87
|
+
addCleanupCallback(() => server.closeServer(false));
|
|
86
88
|
addCleanupCallback(() => cleanupBundle());
|
|
87
89
|
const puppeteerInstance = await browserInstance;
|
|
88
|
-
addCleanupCallback(() => puppeteerInstance.close(false));
|
|
90
|
+
addCleanupCallback(() => puppeteerInstance.close(false, logLevel, indentOutput));
|
|
89
91
|
const { compositionId, config, reason, argsAfterComposition } = await (0, get_composition_with_dimension_override_1.getCompositionWithDimensionOverride)({
|
|
90
92
|
height,
|
|
91
93
|
width,
|
|
@@ -95,13 +97,13 @@ const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason,
|
|
|
95
97
|
chromiumOptions,
|
|
96
98
|
envVariables,
|
|
97
99
|
indent: indentOutput,
|
|
98
|
-
|
|
100
|
+
serializedInputPropsWithCustomSchema,
|
|
99
101
|
port,
|
|
100
102
|
puppeteerInstance,
|
|
101
103
|
serveUrlOrWebpackUrl: urlOrBundle,
|
|
102
104
|
timeoutInMilliseconds: puppeteerTimeout,
|
|
103
|
-
|
|
104
|
-
server
|
|
105
|
+
logLevel,
|
|
106
|
+
server,
|
|
105
107
|
});
|
|
106
108
|
const { format: imageFormat, source } = (0, determine_image_format_1.determineFinalStillImageFormat)({
|
|
107
109
|
cliFlag: (_a = parse_command_line_1.parsedCli['image-format']) !== null && _a !== void 0 ? _a : null,
|
|
@@ -162,10 +164,9 @@ const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason,
|
|
|
162
164
|
output: absoluteOutputLocation,
|
|
163
165
|
serveUrl: urlOrBundle,
|
|
164
166
|
jpegQuality,
|
|
165
|
-
dumpBrowserLogs: verbose,
|
|
166
167
|
envVariables,
|
|
167
168
|
imageFormat,
|
|
168
|
-
|
|
169
|
+
serializedInputPropsWithCustomSchema,
|
|
169
170
|
chromiumOptions,
|
|
170
171
|
timeoutInMilliseconds: puppeteerTimeout,
|
|
171
172
|
scale,
|
|
@@ -178,7 +179,12 @@ const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason,
|
|
|
178
179
|
cancelSignal,
|
|
179
180
|
indent: indentOutput,
|
|
180
181
|
onBrowserLog: null,
|
|
181
|
-
|
|
182
|
+
logLevel,
|
|
183
|
+
serializedResolvedPropsWithCustomSchema: remotion_1.Internals.serializeJSONWithDate({
|
|
184
|
+
indent: undefined,
|
|
185
|
+
staticBase: null,
|
|
186
|
+
data: config.props,
|
|
187
|
+
}).serializedString,
|
|
182
188
|
});
|
|
183
189
|
aggregate.rendering = {
|
|
184
190
|
frames: 1,
|
package/dist/render.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.render = void 0;
|
|
4
4
|
// eslint-disable-next-line no-restricted-imports
|
|
5
|
+
const remotion_1 = require("remotion");
|
|
5
6
|
const cleanup_before_quit_1 = require("./cleanup-before-quit");
|
|
6
7
|
const config_1 = require("./config");
|
|
7
8
|
const convert_entry_point_to_serve_url_1 = require("./convert-entry-point-to-serve-url");
|
|
@@ -42,7 +43,11 @@ const render = async (remotionRoot, args) => {
|
|
|
42
43
|
shouldOutputImageSequence,
|
|
43
44
|
publicDir,
|
|
44
45
|
envVariables,
|
|
45
|
-
|
|
46
|
+
serializedInputPropsWithCustomSchema: remotion_1.Internals.serializeJSONWithDate({
|
|
47
|
+
indent: undefined,
|
|
48
|
+
staticBase: null,
|
|
49
|
+
data: inputProps,
|
|
50
|
+
}).serializedString,
|
|
46
51
|
puppeteerTimeout,
|
|
47
52
|
port,
|
|
48
53
|
height,
|
package/dist/setup-cache.js
CHANGED
|
@@ -139,7 +139,7 @@ const bundleOnCli = async ({ fullPath, remotionRoot, publicDir, onProgressCallba
|
|
|
139
139
|
};
|
|
140
140
|
copyingState = {
|
|
141
141
|
...copyingState,
|
|
142
|
-
doneIn: copyStart ? Date.now() - copyStart :
|
|
142
|
+
doneIn: copyStart ? Date.now() - copyStart : 0,
|
|
143
143
|
};
|
|
144
144
|
updateProgress(true);
|
|
145
145
|
log_1.Log.verboseAdvanced({ indent, logLevel }, 'Bundled under', bundled);
|
package/dist/still.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.still = void 0;
|
|
4
|
+
const remotion_1 = require("remotion");
|
|
4
5
|
const cleanup_before_quit_1 = require("./cleanup-before-quit");
|
|
5
6
|
const convert_entry_point_to_serve_url_1 = require("./convert-entry-point-to-serve-url");
|
|
6
7
|
const entry_point_1 = require("./entry-point");
|
|
@@ -36,7 +37,11 @@ const still = async (remotionRoot, args) => {
|
|
|
36
37
|
chromiumOptions,
|
|
37
38
|
envVariables,
|
|
38
39
|
height,
|
|
39
|
-
|
|
40
|
+
serializedInputPropsWithCustomSchema: remotion_1.Internals.serializeJSONWithDate({
|
|
41
|
+
data: inputProps,
|
|
42
|
+
indent: undefined,
|
|
43
|
+
staticBase: null,
|
|
44
|
+
}).serializedString,
|
|
40
45
|
overwrite,
|
|
41
46
|
port,
|
|
42
47
|
publicDir,
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.symbolicateError = void 0;
|
|
4
|
+
const symbolicate_stacktrace_1 = require("../symbolicate-stacktrace");
|
|
5
|
+
const handle_javascript_exception_1 = require("./handle-javascript-exception");
|
|
6
|
+
const truthy_1 = require("./truthy");
|
|
7
|
+
const symbolicateError = async (symbolicateableError) => {
|
|
8
|
+
const { delayRenderCall, stackFrame } = symbolicateableError;
|
|
9
|
+
const [mainErrorFrames, delayRenderFrames] = await Promise.all([
|
|
10
|
+
stackFrame ? (0, symbolicate_stacktrace_1.symbolicateStackTraceFromRemoteFrames)(stackFrame) : null,
|
|
11
|
+
delayRenderCall
|
|
12
|
+
? (0, symbolicate_stacktrace_1.symbolicateStackTraceFromRemoteFrames)(delayRenderCall)
|
|
13
|
+
: null,
|
|
14
|
+
].filter(truthy_1.truthy));
|
|
15
|
+
const symbolicatedErr = new handle_javascript_exception_1.ErrorWithStackFrame({
|
|
16
|
+
message: symbolicateableError.message,
|
|
17
|
+
symbolicatedStackFrames: mainErrorFrames,
|
|
18
|
+
frame: symbolicateableError.frame,
|
|
19
|
+
name: symbolicateableError.name,
|
|
20
|
+
delayRenderCall: delayRenderFrames,
|
|
21
|
+
});
|
|
22
|
+
return symbolicatedErr;
|
|
23
|
+
};
|
|
24
|
+
exports.symbolicateError = symbolicateError;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { SymbolicatedStackFrame, UnsymbolicatedStackFrame } from '@remotion/renderer';
|
|
2
|
+
import type { SourceMapConsumer } from 'source-map';
|
|
3
|
+
import { ErrorWithStackFrame } from './error-with-stack-frame';
|
|
4
|
+
export declare const symbolicateError: (symbolicateableError: SymbolicateableError) => Promise<ErrorWithStackFrame>;
|
|
5
|
+
export declare const symbolicateStackTraceFromRemoteFrames: (frames: UnsymbolicatedStackFrame[]) => Promise<SymbolicatedStackFrame[]>;
|
|
6
|
+
export declare const getSourceMapFromRemoteFile: (fileName: string) => Promise<any>;
|
|
7
|
+
export declare const symbolicateFromSources: (frames: UnsymbolicatedStackFrame[], mapValues: Record<string, SourceMapConsumer | null>) => SymbolicatedStackFrame[];
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.symbolicateFromSources = exports.getSourceMapFromRemoteFile = exports.symbolicateStackTraceFromRemoteFrames = exports.symbolicateError = void 0;
|
|
4
|
+
const renderer_1 = require("@remotion/renderer");
|
|
5
|
+
const truthy_1 = require("./truthy");
|
|
6
|
+
const error_with_stack_frame_1 = require("./error-with-stack-frame");
|
|
7
|
+
const symbolicateError = async (symbolicateableError) => {
|
|
8
|
+
const { delayRenderCall, stackFrame } = symbolicateableError;
|
|
9
|
+
const [mainErrorFrames, delayRenderFrames] = await Promise.all([
|
|
10
|
+
stackFrame ? (0, exports.symbolicateStackTraceFromRemoteFrames)(stackFrame) : null,
|
|
11
|
+
delayRenderCall
|
|
12
|
+
? (0, exports.symbolicateStackTraceFromRemoteFrames)(delayRenderCall)
|
|
13
|
+
: null,
|
|
14
|
+
].filter(truthy_1.truthy));
|
|
15
|
+
const symbolicatedErr = new error_with_stack_frame_1.ErrorWithStackFrame({
|
|
16
|
+
message: symbolicateableError.message,
|
|
17
|
+
symbolicatedStackFrames: mainErrorFrames,
|
|
18
|
+
frame: symbolicateableError.frame,
|
|
19
|
+
name: symbolicateableError.name,
|
|
20
|
+
delayRenderCall: delayRenderFrames,
|
|
21
|
+
});
|
|
22
|
+
return symbolicatedErr;
|
|
23
|
+
};
|
|
24
|
+
exports.symbolicateError = symbolicateError;
|
|
25
|
+
const symbolicateStackTraceFromRemoteFrames = async (frames) => {
|
|
26
|
+
const uniqueFileNames = [
|
|
27
|
+
...new Set(frames
|
|
28
|
+
.map((f) => f.fileName)
|
|
29
|
+
.filter((f) => f.startsWith('http://') || f.startsWith('https://'))
|
|
30
|
+
.filter(truthy_1.truthy)),
|
|
31
|
+
];
|
|
32
|
+
const maps = await Promise.all(uniqueFileNames.map((fileName) => {
|
|
33
|
+
return (0, exports.getSourceMapFromRemoteFile)(fileName);
|
|
34
|
+
}));
|
|
35
|
+
const mapValues = {};
|
|
36
|
+
for (let i = 0; i < uniqueFileNames.length; i++) {
|
|
37
|
+
mapValues[uniqueFileNames[i]] = maps[i];
|
|
38
|
+
}
|
|
39
|
+
return (0, exports.symbolicateFromSources)(frames, mapValues);
|
|
40
|
+
};
|
|
41
|
+
exports.symbolicateStackTraceFromRemoteFrames = symbolicateStackTraceFromRemoteFrames;
|
|
42
|
+
const getSourceMapFromRemoteFile = async (fileName) => {
|
|
43
|
+
const fileContents = await renderer_1.RenderInternals.fetchUrl(fileName);
|
|
44
|
+
return renderer_1.RenderInternals.getSourceMap(fileName, fileContents, 'remote');
|
|
45
|
+
};
|
|
46
|
+
exports.getSourceMapFromRemoteFile = getSourceMapFromRemoteFile;
|
|
47
|
+
const symbolicateFromSources = (frames, mapValues) => {
|
|
48
|
+
return frames
|
|
49
|
+
.map((frame) => {
|
|
50
|
+
const map = mapValues[frame.fileName];
|
|
51
|
+
if (!map) {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
return symbolicateStackFrame(frame, map);
|
|
55
|
+
})
|
|
56
|
+
.filter(truthy_1.truthy);
|
|
57
|
+
};
|
|
58
|
+
exports.symbolicateFromSources = symbolicateFromSources;
|
|
59
|
+
const symbolicateStackFrame = (frame, map) => {
|
|
60
|
+
const pos = getOriginalPosition(map, frame.lineNumber, frame.columnNumber);
|
|
61
|
+
const hasSource = pos.source ? map.sourceContentFor(pos.source, false) : null;
|
|
62
|
+
const scriptCode = hasSource && pos.line
|
|
63
|
+
? getLinesAround(pos.line, 3, hasSource.split('\n'))
|
|
64
|
+
: null;
|
|
65
|
+
return {
|
|
66
|
+
originalColumnNumber: pos.column,
|
|
67
|
+
originalFileName: pos.source,
|
|
68
|
+
originalFunctionName: frame.functionName,
|
|
69
|
+
originalLineNumber: pos.line,
|
|
70
|
+
originalScriptCode: scriptCode,
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
const getOriginalPosition = (source_map, line, column) => {
|
|
74
|
+
const result = source_map.originalPositionFor({
|
|
75
|
+
line,
|
|
76
|
+
column,
|
|
77
|
+
});
|
|
78
|
+
return { line: result.line, column: result.column, source: result.source };
|
|
79
|
+
};
|
|
80
|
+
function getLinesAround(line, count, lines) {
|
|
81
|
+
const result = [];
|
|
82
|
+
for (let index = Math.max(0, line - 1 - count) + 1; index <= Math.min(lines.length - 1, line - 1 + count); ++index) {
|
|
83
|
+
result.push({
|
|
84
|
+
lineNumber: index + 1,
|
|
85
|
+
content: lines[index],
|
|
86
|
+
highlight: index + 1 === line,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
return result;
|
|
90
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { BasicSourceMapConsumer, IndexedSourceMapConsumer } from 'source-map';
|
|
2
|
+
import { SourceMapConsumer } from 'source-map';
|
|
3
|
+
import type { UnsymbolicatedStackFrame } from './parse-browser-error-stack';
|
|
4
|
+
type ScriptLine = {
|
|
5
|
+
lineNumber: number;
|
|
6
|
+
content: string;
|
|
7
|
+
highlight: boolean;
|
|
8
|
+
};
|
|
9
|
+
export type SymbolicatedStackFrame = {
|
|
10
|
+
originalFunctionName: string | null;
|
|
11
|
+
originalFileName: string | null;
|
|
12
|
+
originalLineNumber: number | null;
|
|
13
|
+
originalColumnNumber: number | null;
|
|
14
|
+
originalScriptCode: ScriptLine[] | null;
|
|
15
|
+
};
|
|
16
|
+
export declare const symbolicateStackTraceFromRemoteFrames: (frames: UnsymbolicatedStackFrame[]) => Promise<SymbolicatedStackFrame[]>;
|
|
17
|
+
export declare const symbolicateFromSources: (frames: UnsymbolicatedStackFrame[], mapValues: Record<string, SourceMapConsumer | null>) => SymbolicatedStackFrame[];
|
|
18
|
+
export declare const symbolicateStackFrame: (frame: UnsymbolicatedStackFrame, map: SourceMapConsumer) => {
|
|
19
|
+
originalColumnNumber: number | null;
|
|
20
|
+
originalFileName: string | null;
|
|
21
|
+
originalFunctionName: any;
|
|
22
|
+
originalLineNumber: number | null;
|
|
23
|
+
originalScriptCode: ScriptLine[] | null;
|
|
24
|
+
};
|
|
25
|
+
export declare const getSourceMapFromRemoteFile: (fileName: string) => Promise<SourceMapConsumer | null>;
|
|
26
|
+
export declare const getSourceMapFromLocalFile: (fileName: string) => Promise<SourceMapConsumer | null>;
|
|
27
|
+
export type AnySourceMapConsumer = BasicSourceMapConsumer | IndexedSourceMapConsumer;
|
|
28
|
+
export {};
|