@remotion/cli 4.0.4 → 4.0.6
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 +1 -1
- package/dist/compositions.js +1 -1
- package/dist/config/log.d.ts +1 -1
- package/dist/editor/components/CanvasOrLoading.js +4 -4
- package/dist/editor/components/GlobalKeybindings.js +1 -1
- package/dist/editor/components/PlaybackRateSelector.js +1 -1
- package/dist/editor/components/RenderModal/DataEditor.js +1 -3
- package/dist/editor/components/RenderModal/RenderModalBasic.d.ts +1 -1
- package/dist/editor/components/RenderModal/RenderModalJSONPropsEditor.d.ts +1 -2
- package/dist/editor/components/RenderModal/RenderModalJSONPropsEditor.js +9 -10
- package/dist/editor/components/RenderModal/SchemaEditor/SchemaLabel.js +1 -2
- 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/Timeline/TimelineDragHandler.js +1 -1
- package/dist/editor/helpers/colors.d.ts +1 -1
- package/dist/error-with-stack-frame.d.ts +19 -0
- package/dist/error-with-stack-frame.js +81 -0
- package/dist/get-composition-id.js +1 -1
- package/dist/handle-javascript-error.d.ts +20 -0
- package/dist/handle-javascript-error.js +81 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +5 -2
- package/dist/log.d.ts +6 -0
- package/dist/preview-server/render-queue/make-retry-payload.js +1 -1
- package/dist/preview-server/routes/update-default-props.js +1 -1
- package/dist/print-error.js +6 -3
- package/dist/render-flows/render.js +1 -1
- package/dist/render-flows/still.js +1 -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 +9 -9
package/dist/benchmark.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.benchmarkCommand = void 0;
|
|
4
4
|
const renderer_1 = require("@remotion/renderer");
|
|
5
|
+
const remotion_1 = require("remotion");
|
|
5
6
|
const chalk_1 = require("./chalk");
|
|
6
7
|
const cleanup_before_quit_1 = require("./cleanup-before-quit");
|
|
7
8
|
const config_1 = require("./config");
|
|
@@ -18,7 +19,6 @@ const setup_cache_1 = require("./setup-cache");
|
|
|
18
19
|
const should_use_non_overlaying_logger_1 = require("./should-use-non-overlaying-logger");
|
|
19
20
|
const show_compositions_picker_1 = require("./show-compositions-picker");
|
|
20
21
|
const truthy_1 = require("./truthy");
|
|
21
|
-
const remotion_1 = require("remotion");
|
|
22
22
|
const DEFAULT_RUNS = 3;
|
|
23
23
|
const getValidConcurrency = (cliConcurrency) => {
|
|
24
24
|
const { concurrencies } = parse_command_line_1.parsedCli;
|
package/dist/compositions.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.listCompositionsCommand = void 0;
|
|
4
4
|
const renderer_1 = require("@remotion/renderer");
|
|
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 entry_point_1 = require("./entry-point");
|
|
@@ -9,7 +10,6 @@ const get_cli_options_1 = require("./get-cli-options");
|
|
|
9
10
|
const log_1 = require("./log");
|
|
10
11
|
const print_compositions_1 = require("./print-compositions");
|
|
11
12
|
const setup_cache_1 = require("./setup-cache");
|
|
12
|
-
const remotion_1 = require("remotion");
|
|
13
13
|
const listCompositionsCommand = async (remotionRoot, args) => {
|
|
14
14
|
const { file, reason } = (0, entry_point_1.findEntryPoint)(args, remotionRoot);
|
|
15
15
|
if (!file) {
|
package/dist/config/log.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const getLogLevel: () => "
|
|
1
|
+
export declare const getLogLevel: () => "error" | "verbose" | "info" | "warn", setLogLevel: (newLogLevel: "error" | "verbose" | "info" | "warn") => void;
|
|
@@ -6,15 +6,15 @@ const react_1 = require("react");
|
|
|
6
6
|
const remotion_1 = require("remotion");
|
|
7
7
|
const ErrorLoader_1 = require("../../preview-server/error-overlay/remotion-overlay/ErrorLoader");
|
|
8
8
|
const colors_1 = require("../helpers/colors");
|
|
9
|
+
const timeline_zoom_1 = require("../state/timeline-zoom");
|
|
9
10
|
const Canvas_1 = require("./Canvas");
|
|
11
|
+
const FramePersistor_1 = require("./FramePersistor");
|
|
10
12
|
const layout_1 = require("./layout");
|
|
11
13
|
const styles_1 = require("./Menu/styles");
|
|
12
14
|
const Spinner_1 = require("./Spinner");
|
|
13
|
-
const FramePersistor_1 = require("./FramePersistor");
|
|
14
|
-
const ZoomPersistor_1 = require("./ZoomPersistor");
|
|
15
|
-
const timeline_scroll_logic_1 = require("./Timeline/timeline-scroll-logic");
|
|
16
|
-
const timeline_zoom_1 = require("../state/timeline-zoom");
|
|
17
15
|
const imperative_state_1 = require("./Timeline/imperative-state");
|
|
16
|
+
const timeline_scroll_logic_1 = require("./Timeline/timeline-scroll-logic");
|
|
17
|
+
const ZoomPersistor_1 = require("./ZoomPersistor");
|
|
18
18
|
const container = {
|
|
19
19
|
color: 'white',
|
|
20
20
|
flex: 1,
|
|
@@ -9,7 +9,7 @@ const playbackrate_1 = require("../state/playbackrate");
|
|
|
9
9
|
const ControlButton_1 = require("./ControlButton");
|
|
10
10
|
const ComboBox_1 = require("./NewComposition/ComboBox");
|
|
11
11
|
const commonPlaybackRates = [
|
|
12
|
-
-4, -2, -1, -0.5, -0.25, 0.25, 0.5, 1, 2, 4,
|
|
12
|
+
-4, -2, -1, -0.5, -0.25, 0.25, 0.5, 1, 1.5, 2, 4,
|
|
13
13
|
];
|
|
14
14
|
const getPlaybackRateLabel = (playbackRate) => {
|
|
15
15
|
return `${playbackRate}x`;
|
|
@@ -89,7 +89,6 @@ const setPersistedShowWarningState = (val) => {
|
|
|
89
89
|
};
|
|
90
90
|
const DataEditor = ({ unresolvedComposition, inputProps, setInputProps, mayShowSaveButton, propsEditType, }) => {
|
|
91
91
|
const [mode, setMode] = (0, react_1.useState)('schema');
|
|
92
|
-
const [valBeforeSafe, setValBeforeSafe] = (0, react_1.useState)(inputProps);
|
|
93
92
|
const [saving, setSaving] = (0, react_1.useState)(false);
|
|
94
93
|
const [showWarning, setShowWarningWithoutPersistance] = (0, react_1.useState)(() => getPersistedShowWarningState());
|
|
95
94
|
const inJSONEditor = mode === 'json';
|
|
@@ -214,7 +213,6 @@ const DataEditor = ({ unresolvedComposition, inputProps, setInputProps, mayShowS
|
|
|
214
213
|
(0, NotificationCenter_1.sendErrorNotification)('Cannot update default props: No Zod schema');
|
|
215
214
|
return;
|
|
216
215
|
}
|
|
217
|
-
setValBeforeSafe(inputProps);
|
|
218
216
|
(0, actions_1.updateDefaultProps)(unresolvedComposition.id, inputProps, (0, extract_enum_json_paths_1.extractEnumJsonPaths)(schema, z, [])).then((response) => {
|
|
219
217
|
if (!response.success) {
|
|
220
218
|
(0, NotificationCenter_1.sendErrorNotification)('Cannot update default props: ' + response.reason);
|
|
@@ -291,6 +289,6 @@ const DataEditor = ({ unresolvedComposition, inputProps, setInputProps, mayShowS
|
|
|
291
289
|
}
|
|
292
290
|
return ((0, jsx_runtime_1.jsxs)("div", { style: outer, children: [(0, jsx_runtime_1.jsxs)("div", { style: controlContainer, children: [(0, jsx_runtime_1.jsxs)("div", { style: tabWrapper, children: [(0, jsx_runtime_1.jsx)(SegmentedControl_1.SegmentedControl, { items: modeItems, needsWrapping: false }), (0, jsx_runtime_1.jsx)(layout_1.Flex, {}), warnings.length > 0 ? ((0, jsx_runtime_1.jsx)(WarningIndicatorButton_1.WarningIndicatorButton, { setShowWarning: setShowWarning, showWarning: showWarning, warningCount: warnings.length })) : null] }), showWarning && warnings.length > 0
|
|
293
291
|
? warnings.map((warning) => ((0, jsx_runtime_1.jsxs)(react_1.default.Fragment, { children: [(0, jsx_runtime_1.jsx)(layout_1.Spacing, { y: 1 }), (0, jsx_runtime_1.jsx)(ValidationMessage_1.ValidationMessage, { message: warning, align: "flex-start", type: "warning" })] }, warning)))
|
|
294
|
-
: null] }), mode === 'schema' ? ((0, jsx_runtime_1.jsx)(SchemaEditor_1.SchemaEditor, { value: inputProps, setValue: setInputProps, schema: schema, zodValidationResult: zodValidationResult, defaultProps: unresolvedComposition.defaultProps, onSave: onSave, showSaveButton: showSaveButton, saving: saving, saveDisabledByParent: !zodValidationResult.success })) : ((0, jsx_runtime_1.jsx)(RenderModalJSONPropsEditor_1.RenderModalJSONPropsEditor, { value: inputProps !== null && inputProps !== void 0 ? inputProps : {}, setValue: setInputProps, onSave: onUpdate,
|
|
292
|
+
: null] }), mode === 'schema' ? ((0, jsx_runtime_1.jsx)(SchemaEditor_1.SchemaEditor, { value: inputProps, setValue: setInputProps, schema: schema, zodValidationResult: zodValidationResult, defaultProps: unresolvedComposition.defaultProps, onSave: onSave, showSaveButton: showSaveButton, saving: saving, saveDisabledByParent: !zodValidationResult.success })) : ((0, jsx_runtime_1.jsx)(RenderModalJSONPropsEditor_1.RenderModalJSONPropsEditor, { value: inputProps !== null && inputProps !== void 0 ? inputProps : {}, setValue: setInputProps, onSave: onUpdate, showSaveButton: showSaveButton, serializedJSON: serializedJSON, defaultProps: unresolvedComposition.defaultProps, schema: schema }))] }));
|
|
295
293
|
};
|
|
296
294
|
exports.DataEditor = DataEditor;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Codec, ProResProfile } from '@remotion/renderer';
|
|
2
2
|
import React from 'react';
|
|
3
|
+
import type { VideoConfig } from 'remotion';
|
|
3
4
|
import type { SegmentedControlItem } from '../SegmentedControl';
|
|
4
5
|
import type { RenderType } from './RenderModalAdvanced';
|
|
5
|
-
import type { VideoConfig } from 'remotion';
|
|
6
6
|
export declare const RenderModalBasic: React.FC<{
|
|
7
7
|
renderMode: RenderType;
|
|
8
8
|
imageFormatOptions: SegmentedControlItem[];
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { z } from 'zod';
|
|
3
2
|
import type { SerializedJSONWithCustomFields } from 'remotion';
|
|
3
|
+
import type { z } from 'zod';
|
|
4
4
|
export type EditType = 'inputProps' | 'defaultProps';
|
|
5
5
|
export declare const RenderModalJSONPropsEditor: React.FC<{
|
|
6
6
|
value: unknown;
|
|
7
7
|
setValue: React.Dispatch<React.SetStateAction<Record<string, unknown>>>;
|
|
8
8
|
onSave: () => void;
|
|
9
|
-
valBeforeSafe: unknown;
|
|
10
9
|
showSaveButton: boolean;
|
|
11
10
|
serializedJSON: SerializedJSONWithCustomFields | null;
|
|
12
11
|
defaultProps: Record<string, unknown>;
|
|
@@ -26,14 +26,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.RenderModalJSONPropsEditor = void 0;
|
|
27
27
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
28
28
|
const react_1 = __importStar(require("react"));
|
|
29
|
+
const remotion_1 = require("remotion");
|
|
29
30
|
const Button_1 = require("../../../preview-server/error-overlay/remotion-overlay/Button");
|
|
30
31
|
const colors_1 = require("../../helpers/colors");
|
|
31
32
|
const use_keybinding_1 = require("../../helpers/use-keybinding");
|
|
32
33
|
const layout_1 = require("../layout");
|
|
33
34
|
const RemTextarea_1 = require("../NewComposition/RemTextarea");
|
|
34
35
|
const ValidationMessage_1 = require("../NewComposition/ValidationMessage");
|
|
36
|
+
const deep_equal_1 = require("./SchemaEditor/deep-equal");
|
|
35
37
|
const ZodErrorMessages_1 = require("./SchemaEditor/ZodErrorMessages");
|
|
36
|
-
const remotion_1 = require("remotion");
|
|
37
38
|
const style = {
|
|
38
39
|
fontFamily: 'monospace',
|
|
39
40
|
flex: 1,
|
|
@@ -54,7 +55,7 @@ const parseJSON = (str, schema) => {
|
|
|
54
55
|
return { str, validJSON: false, error: e.message };
|
|
55
56
|
}
|
|
56
57
|
};
|
|
57
|
-
const RenderModalJSONPropsEditor = ({ setValue, value, defaultProps, onSave,
|
|
58
|
+
const RenderModalJSONPropsEditor = ({ setValue, value, defaultProps, onSave, showSaveButton, serializedJSON, schema, }) => {
|
|
58
59
|
if (serializedJSON === null) {
|
|
59
60
|
throw new Error('expecting serializedJSON to be defined');
|
|
60
61
|
}
|
|
@@ -92,8 +93,8 @@ const RenderModalJSONPropsEditor = ({ setValue, value, defaultProps, onSave, val
|
|
|
92
93
|
}
|
|
93
94
|
}, [schema, setValue]);
|
|
94
95
|
const hasChanged = (0, react_1.useMemo)(() => {
|
|
95
|
-
return
|
|
96
|
-
}, [
|
|
96
|
+
return !(0, deep_equal_1.deepEqual)(value, defaultProps);
|
|
97
|
+
}, [defaultProps, value]);
|
|
97
98
|
const onQuickSave = (0, react_1.useCallback)(() => {
|
|
98
99
|
if (hasChanged) {
|
|
99
100
|
onSave();
|
|
@@ -117,9 +118,9 @@ const RenderModalJSONPropsEditor = ({ setValue, value, defaultProps, onSave, val
|
|
|
117
118
|
};
|
|
118
119
|
}, [keybindings, onQuickSave, onSave]);
|
|
119
120
|
const reset = (0, react_1.useCallback)(() => {
|
|
120
|
-
setLocalValue(parseJSON(serializedJSON.serializedString, schema));
|
|
121
121
|
setValue(defaultProps);
|
|
122
|
-
|
|
122
|
+
setLocalValue(parseJSON(JSON.stringify(defaultProps, null, 2), schema));
|
|
123
|
+
}, [defaultProps, schema, setValue]);
|
|
123
124
|
const textAreaStyle = (0, react_1.useMemo)(() => {
|
|
124
125
|
const fail = !localValue.validJSON || !localValue.zodValidation.success;
|
|
125
126
|
if (!fail) {
|
|
@@ -130,10 +131,8 @@ const RenderModalJSONPropsEditor = ({ setValue, value, defaultProps, onSave, val
|
|
|
130
131
|
borderColor: colors_1.FAIL_COLOR,
|
|
131
132
|
};
|
|
132
133
|
}, [localValue]);
|
|
133
|
-
return ((0, jsx_runtime_1.jsxs)("div", { style: scrollable, children: [(0, jsx_runtime_1.jsx)(RemTextarea_1.RemTextarea, { onChange: onChange, value: localValue.str, status: localValue.validJSON ? 'ok' : 'error', style: textAreaStyle }), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { y: 1 }), localValue.validJSON === false ? ((0, jsx_runtime_1.jsx)(ValidationMessage_1.ValidationMessage, { align: "flex-start", message: localValue.error, type: "error" })) : localValue.zodValidation.success === false ? ((0, jsx_runtime_1.jsx)(ZodErrorMessages_1.ZodErrorMessages, { zodValidationResult: localValue.zodValidation, viewTab: "json" })) : null, (0, jsx_runtime_1.jsx)(layout_1.Spacing, { y: 1 }), (0, jsx_runtime_1.jsxs)(layout_1.Row, { children: [(0, jsx_runtime_1.jsx)(Button_1.Button, { disabled: !localValue.validJSON ||
|
|
134
|
-
!(localValue.validJSON && !localValue.zodValidation.success), onClick: reset, children: "Reset" }), (0, jsx_runtime_1.jsx)(layout_1.Flex, {}), (0, jsx_runtime_1.jsx)(Button_1.Button, { disabled: !localValue.validJSON, onClick: onPretty, children: "Format" }), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { x: 1 }), (0, jsx_runtime_1.jsx)(Button_1.Button, { onClick: onSave, disabled: !(localValue.validJSON && localValue.zodValidation.success) ||
|
|
134
|
+
return ((0, jsx_runtime_1.jsxs)("div", { style: scrollable, children: [(0, jsx_runtime_1.jsx)(RemTextarea_1.RemTextarea, { onChange: onChange, value: localValue.str, status: localValue.validJSON ? 'ok' : 'error', style: textAreaStyle }), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { y: 1 }), localValue.validJSON === false ? ((0, jsx_runtime_1.jsx)(ValidationMessage_1.ValidationMessage, { align: "flex-start", message: localValue.error, type: "error" })) : localValue.zodValidation.success === false ? ((0, jsx_runtime_1.jsx)(ZodErrorMessages_1.ZodErrorMessages, { zodValidationResult: localValue.zodValidation, viewTab: "json" })) : null, (0, jsx_runtime_1.jsx)(layout_1.Spacing, { y: 1 }), (0, jsx_runtime_1.jsxs)(layout_1.Row, { children: [(0, jsx_runtime_1.jsx)(Button_1.Button, { disabled: !(hasChanged || !localValue.validJSON), onClick: reset, children: "Reset" }), (0, jsx_runtime_1.jsx)(layout_1.Flex, {}), (0, jsx_runtime_1.jsx)(Button_1.Button, { disabled: !localValue.validJSON, onClick: onPretty, children: "Format" }), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { x: 1 }), showSaveButton ? ((0, jsx_runtime_1.jsx)(Button_1.Button, { onClick: onSave, disabled: !(localValue.validJSON && localValue.zodValidation.success) ||
|
|
135
135
|
!localValue.validJSON ||
|
|
136
|
-
!hasChanged
|
|
137
|
-
!showSaveButton, children: "Save" })] })] }));
|
|
136
|
+
!hasChanged, children: "Save" })) : null] })] }));
|
|
138
137
|
};
|
|
139
138
|
exports.RenderModalJSONPropsEditor = RenderModalJSONPropsEditor;
|
|
@@ -9,7 +9,6 @@ const InlineRemoveButton_1 = require("../InlineRemoveButton");
|
|
|
9
9
|
const get_schema_label_1 = require("./get-schema-label");
|
|
10
10
|
const SchemaResetButton_1 = require("./SchemaResetButton");
|
|
11
11
|
const SchemaSaveButton_1 = require("./SchemaSaveButton");
|
|
12
|
-
const colors_2 = require("../../../helpers/colors");
|
|
13
12
|
const compactStyles = {
|
|
14
13
|
fontSize: 15,
|
|
15
14
|
color: colors_1.LIGHT_TEXT,
|
|
@@ -24,7 +23,7 @@ const SchemaLabel = ({ jsonPath, isDefaultValue, onReset, onSave, showSaveButton
|
|
|
24
23
|
return {
|
|
25
24
|
fontFamily: 'monospace',
|
|
26
25
|
fontSize: 14,
|
|
27
|
-
color: valid ? colors_1.LIGHT_TEXT :
|
|
26
|
+
color: valid ? colors_1.LIGHT_TEXT : colors_1.FAIL_COLOR,
|
|
28
27
|
lineHeight: '24px',
|
|
29
28
|
};
|
|
30
29
|
}, [valid]);
|
|
@@ -26,19 +26,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.ZodArrayEditor = void 0;
|
|
27
27
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
28
28
|
const react_1 = __importStar(require("react"));
|
|
29
|
+
const plus_1 = require("../../../icons/plus");
|
|
29
30
|
const get_zod_if_possible_1 = require("../../get-zod-if-possible");
|
|
31
|
+
const InlineAction_1 = require("../../InlineAction");
|
|
32
|
+
const layout_1 = require("../layout");
|
|
30
33
|
const create_zod_values_1 = require("./create-zod-values");
|
|
31
34
|
const deep_equal_1 = require("./deep-equal");
|
|
32
|
-
const local_state_1 = require("./local-state");
|
|
33
|
-
const ZodArrayItemEditor_1 = require("./ZodArrayItemEditor");
|
|
34
35
|
const Fieldset_1 = require("./Fieldset");
|
|
35
|
-
const
|
|
36
|
-
const
|
|
36
|
+
const local_state_1 = require("./local-state");
|
|
37
|
+
const SchemaLabel_1 = require("./SchemaLabel");
|
|
37
38
|
const SchemaSeparationLine_1 = require("./SchemaSeparationLine");
|
|
38
|
-
const
|
|
39
|
-
const
|
|
39
|
+
const SchemaVerticalGuide_1 = require("./SchemaVerticalGuide");
|
|
40
|
+
const ZodArrayItemEditor_1 = require("./ZodArrayItemEditor");
|
|
40
41
|
const ZodFieldValidation_1 = require("./ZodFieldValidation");
|
|
41
|
-
const SchemaLabel_1 = require("./SchemaLabel");
|
|
42
42
|
const ZodArrayEditor = ({ schema, jsonPath, setValue, defaultValue, value, onSave, showSaveButton, onRemove, saving, saveDisabledByParent, mayPad, }) => {
|
|
43
43
|
const { localValue, onChange, RevisionContextProvider, reset } = (0, local_state_1.useLocalState)({
|
|
44
44
|
value,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import type { z } from 'zod';
|
|
2
3
|
import type { JSONPath } from './zod-types';
|
|
3
4
|
import type { UpdaterFunction } from './ZodSwitch';
|
|
4
|
-
import type { z } from 'zod';
|
|
5
5
|
export declare const ZodBooleanEditor: React.FC<{
|
|
6
6
|
schema: z.ZodTypeAny;
|
|
7
7
|
jsonPath: JSONPath;
|
|
@@ -4,9 +4,9 @@ exports.ZodBooleanEditor = void 0;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const Checkbox_1 = require("../../Checkbox");
|
|
7
|
-
const SchemaLabel_1 = require("./SchemaLabel");
|
|
8
7
|
const Fieldset_1 = require("./Fieldset");
|
|
9
8
|
const local_state_1 = require("./local-state");
|
|
9
|
+
const SchemaLabel_1 = require("./SchemaLabel");
|
|
10
10
|
const fullWidth = {
|
|
11
11
|
width: '100%',
|
|
12
12
|
};
|
|
@@ -9,9 +9,9 @@ const layout_1 = require("../../layout");
|
|
|
9
9
|
const InputDragger_1 = require("../../NewComposition/InputDragger");
|
|
10
10
|
const RemInput_1 = require("../../NewComposition/RemInput");
|
|
11
11
|
const RemInputTypeColor_1 = require("../../NewComposition/RemInputTypeColor");
|
|
12
|
+
const Fieldset_1 = require("./Fieldset");
|
|
12
13
|
const local_state_1 = require("./local-state");
|
|
13
14
|
const SchemaLabel_1 = require("./SchemaLabel");
|
|
14
|
-
const Fieldset_1 = require("./Fieldset");
|
|
15
15
|
const ZodFieldValidation_1 = require("./ZodFieldValidation");
|
|
16
16
|
const fullWidth = {
|
|
17
17
|
width: '100%',
|
|
@@ -6,9 +6,9 @@ const react_1 = require("react");
|
|
|
6
6
|
const colors_1 = require("../../../helpers/colors");
|
|
7
7
|
const layout_1 = require("../../layout");
|
|
8
8
|
const RemInput_1 = require("../../NewComposition/RemInput");
|
|
9
|
+
const Fieldset_1 = require("./Fieldset");
|
|
9
10
|
const local_state_1 = require("./local-state");
|
|
10
11
|
const SchemaLabel_1 = require("./SchemaLabel");
|
|
11
|
-
const Fieldset_1 = require("./Fieldset");
|
|
12
12
|
const ZodFieldValidation_1 = require("./ZodFieldValidation");
|
|
13
13
|
const fullWidth = {
|
|
14
14
|
width: '100%',
|
|
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ZodEffectEditor = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const get_zod_if_possible_1 = require("../../get-zod-if-possible");
|
|
6
|
-
const local_state_1 = require("./local-state");
|
|
7
|
-
const ZodSwitch_1 = require("./ZodSwitch");
|
|
8
6
|
const Fieldset_1 = require("./Fieldset");
|
|
7
|
+
const local_state_1 = require("./local-state");
|
|
9
8
|
const ZodFieldValidation_1 = require("./ZodFieldValidation");
|
|
9
|
+
const ZodSwitch_1 = require("./ZodSwitch");
|
|
10
10
|
const fullWidth = {
|
|
11
11
|
width: '100%',
|
|
12
12
|
};
|
|
@@ -6,9 +6,9 @@ const react_1 = require("react");
|
|
|
6
6
|
const Checkmark_1 = require("../../../icons/Checkmark");
|
|
7
7
|
const get_zod_if_possible_1 = require("../../get-zod-if-possible");
|
|
8
8
|
const ComboBox_1 = require("../../NewComposition/ComboBox");
|
|
9
|
+
const Fieldset_1 = require("./Fieldset");
|
|
9
10
|
const local_state_1 = require("./local-state");
|
|
10
11
|
const SchemaLabel_1 = require("./SchemaLabel");
|
|
11
|
-
const Fieldset_1 = require("./Fieldset");
|
|
12
12
|
const ZodFieldValidation_1 = require("./ZodFieldValidation");
|
|
13
13
|
const container = {
|
|
14
14
|
width: '100%',
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ZodFieldValidation = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
-
const ValidationMessage_1 = require("../../NewComposition/ValidationMessage");
|
|
6
5
|
const layout_1 = require("../../layout");
|
|
6
|
+
const ValidationMessage_1 = require("../../NewComposition/ValidationMessage");
|
|
7
7
|
const InfoBubble_1 = require("../InfoBubble");
|
|
8
8
|
const legend = {
|
|
9
9
|
display: 'flex',
|
|
@@ -4,8 +4,8 @@ exports.ZonNonEditableValue = void 0;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const colors_1 = require("../../../helpers/colors");
|
|
7
|
-
const SchemaLabel_1 = require("./SchemaLabel");
|
|
8
7
|
const Fieldset_1 = require("./Fieldset");
|
|
8
|
+
const SchemaLabel_1 = require("./SchemaLabel");
|
|
9
9
|
const fullWidth = {
|
|
10
10
|
width: '100%',
|
|
11
11
|
};
|
|
@@ -4,9 +4,9 @@ exports.ZodNumberEditor = void 0;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const InputDragger_1 = require("../../NewComposition/InputDragger");
|
|
7
|
+
const Fieldset_1 = require("./Fieldset");
|
|
7
8
|
const local_state_1 = require("./local-state");
|
|
8
9
|
const SchemaLabel_1 = require("./SchemaLabel");
|
|
9
|
-
const Fieldset_1 = require("./Fieldset");
|
|
10
10
|
const ZodFieldValidation_1 = require("./ZodFieldValidation");
|
|
11
11
|
const fullWidth = {
|
|
12
12
|
width: '100%',
|
|
@@ -1,21 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
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 (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
4
24
|
};
|
|
5
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
26
|
exports.ZodObjectEditor = void 0;
|
|
7
27
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
-
const react_1 = require("react");
|
|
9
|
-
const react_2 = __importDefault(require("react"));
|
|
28
|
+
const react_1 = __importStar(require("react"));
|
|
10
29
|
const get_zod_if_possible_1 = require("../../get-zod-if-possible");
|
|
11
|
-
const
|
|
12
|
-
const
|
|
30
|
+
const layout_1 = require("../layout");
|
|
31
|
+
const deep_equal_1 = require("./deep-equal");
|
|
13
32
|
const Fieldset_1 = require("./Fieldset");
|
|
33
|
+
const local_state_1 = require("./local-state");
|
|
34
|
+
const SchemaLabel_1 = require("./SchemaLabel");
|
|
14
35
|
const SchemaSeparationLine_1 = require("./SchemaSeparationLine");
|
|
15
|
-
const layout_1 = require("../layout");
|
|
16
36
|
const SchemaVerticalGuide_1 = require("./SchemaVerticalGuide");
|
|
17
|
-
const
|
|
18
|
-
const deep_equal_1 = require("./deep-equal");
|
|
37
|
+
const ZodSwitch_1 = require("./ZodSwitch");
|
|
19
38
|
const ZodObjectEditor = ({ schema, jsonPath, setValue, value, defaultValue, onSave, showSaveButton, onRemove, saving, saveDisabledByParent, mayPad, }) => {
|
|
20
39
|
const z = (0, get_zod_if_possible_1.useZodIfPossible)();
|
|
21
40
|
if (!z) {
|
|
@@ -43,7 +62,7 @@ const ZodObjectEditor = ({ schema, jsonPath, setValue, value, defaultValue, onSa
|
|
|
43
62
|
return localValue.value;
|
|
44
63
|
}, false, false);
|
|
45
64
|
}, saveDisabledByParent: saveDisabledByParent, saving: saving, showSaveButton: showSaveButton, valid: localValue.zodValidation.success })), (0, jsx_runtime_1.jsx)(RevisionContextProvider, { children: (0, jsx_runtime_1.jsx)(SchemaVerticalGuide_1.SchemaVerticalGuide, { isRoot: isRoot, children: keys.map((key, i) => {
|
|
46
|
-
return ((0, jsx_runtime_1.jsxs)(
|
|
65
|
+
return ((0, jsx_runtime_1.jsxs)(react_1.default.Fragment, { children: [(0, jsx_runtime_1.jsx)(ZodSwitch_1.ZodSwitch, { mayPad: true, jsonPath: [...jsonPath, key], schema: shape[key], value: localValue.value[key],
|
|
47
66
|
// In case of null | {a: string, b: string} type, we need to fallback to the default value
|
|
48
67
|
defaultValue: (defaultValue !== null && defaultValue !== void 0 ? defaultValue : value)[key], setValue: (val, forceApply) => {
|
|
49
68
|
onChange((oldVal) => {
|
|
@@ -8,10 +8,10 @@ const Checkbox_1 = require("../../Checkbox");
|
|
|
8
8
|
const get_zod_if_possible_1 = require("../../get-zod-if-possible");
|
|
9
9
|
const layout_1 = require("../../layout");
|
|
10
10
|
const create_zod_values_1 = require("./create-zod-values");
|
|
11
|
-
const SchemaLabel_1 = require("./SchemaLabel");
|
|
12
|
-
const ZodSwitch_1 = require("./ZodSwitch");
|
|
13
11
|
const Fieldset_1 = require("./Fieldset");
|
|
14
12
|
const local_state_1 = require("./local-state");
|
|
13
|
+
const SchemaLabel_1 = require("./SchemaLabel");
|
|
14
|
+
const ZodSwitch_1 = require("./ZodSwitch");
|
|
15
15
|
const labelStyle = {
|
|
16
16
|
fontFamily: 'sans-serif',
|
|
17
17
|
fontSize: 14,
|
|
@@ -7,9 +7,9 @@ const remotion_1 = require("remotion");
|
|
|
7
7
|
const Checkmark_1 = require("../../../icons/Checkmark");
|
|
8
8
|
const get_zod_if_possible_1 = require("../../get-zod-if-possible");
|
|
9
9
|
const ComboBox_1 = require("../../NewComposition/ComboBox");
|
|
10
|
+
const Fieldset_1 = require("./Fieldset");
|
|
10
11
|
const local_state_1 = require("./local-state");
|
|
11
12
|
const SchemaLabel_1 = require("./SchemaLabel");
|
|
12
|
-
const Fieldset_1 = require("./Fieldset");
|
|
13
13
|
const ZodFieldValidation_1 = require("./ZodFieldValidation");
|
|
14
14
|
const container = {
|
|
15
15
|
width: '100%',
|
|
@@ -5,9 +5,9 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const get_zod_if_possible_1 = require("../../get-zod-if-possible");
|
|
7
7
|
const RemInput_1 = require("../../NewComposition/RemInput");
|
|
8
|
+
const Fieldset_1 = require("./Fieldset");
|
|
8
9
|
const local_state_1 = require("./local-state");
|
|
9
10
|
const SchemaLabel_1 = require("./SchemaLabel");
|
|
10
|
-
const Fieldset_1 = require("./Fieldset");
|
|
11
11
|
const ZodFieldValidation_1 = require("./ZodFieldValidation");
|
|
12
12
|
const fullWidth = {
|
|
13
13
|
width: '100%',
|
|
@@ -10,13 +10,13 @@ const timeline_layout_1 = require("../../helpers/timeline-layout");
|
|
|
10
10
|
const in_out_1 = require("../../state/in-out");
|
|
11
11
|
const timeline_zoom_1 = require("../../state/timeline-zoom");
|
|
12
12
|
const is_menu_item_1 = require("../Menu/is-menu-item");
|
|
13
|
+
const TimelineInOutToggle_1 = require("../TimelineInOutToggle");
|
|
13
14
|
const timeline_refs_1 = require("./timeline-refs");
|
|
14
15
|
const timeline_scroll_logic_1 = require("./timeline-scroll-logic");
|
|
15
16
|
const TimelineInOutPointer_1 = require("./TimelineInOutPointer");
|
|
16
17
|
const TimelineInOutPointerHandle_1 = require("./TimelineInOutPointerHandle");
|
|
17
18
|
const TimelineSlider_1 = require("./TimelineSlider");
|
|
18
19
|
const TimelineWidthProvider_1 = require("./TimelineWidthProvider");
|
|
19
|
-
const TimelineInOutToggle_1 = require("../TimelineInOutToggle");
|
|
20
20
|
const inner = {
|
|
21
21
|
overflowY: 'auto',
|
|
22
22
|
overflowX: 'hidden',
|
|
@@ -16,4 +16,4 @@ export declare const BLUE_DISABLED = "#284f73";
|
|
|
16
16
|
export declare const getBackgroundFromHoverState: ({ selected, hovered, }: {
|
|
17
17
|
selected: boolean;
|
|
18
18
|
hovered: boolean;
|
|
19
|
-
}) => "transparent" | "hsla(0, 0%, 100%, 0.15)" | "
|
|
19
|
+
}) => "transparent" | "hsla(0, 0%, 100%, 0.15)" | "rgba(255, 255, 255, 0.06)" | "hsla(0, 0%, 100%, 0.25)";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Page, SymbolicatedStackFrame } from '@remotion/renderer';
|
|
2
|
+
export declare class ErrorWithStackFrame extends Error {
|
|
3
|
+
symbolicatedStackFrames: SymbolicatedStackFrame[] | null;
|
|
4
|
+
frame: number | null;
|
|
5
|
+
name: string;
|
|
6
|
+
delayRenderCall: SymbolicatedStackFrame[] | null;
|
|
7
|
+
constructor({ message, symbolicatedStackFrames, frame, name, delayRenderCall, }: {
|
|
8
|
+
message: string;
|
|
9
|
+
symbolicatedStackFrames: SymbolicatedStackFrame[] | null;
|
|
10
|
+
frame: number | null;
|
|
11
|
+
name: string;
|
|
12
|
+
delayRenderCall: SymbolicatedStackFrame[] | null;
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
export declare const handleJavascriptException: ({ page, onError, frame, }: {
|
|
16
|
+
page: Page;
|
|
17
|
+
frame: number | null;
|
|
18
|
+
onError: (err: Error) => void;
|
|
19
|
+
}) => () => void;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleJavascriptException = exports.ErrorWithStackFrame = void 0;
|
|
4
|
+
const remotion_1 = require("remotion");
|
|
5
|
+
const renderer_1 = require("@remotion/renderer");
|
|
6
|
+
const log_1 = require("./log");
|
|
7
|
+
class ErrorWithStackFrame extends Error {
|
|
8
|
+
constructor({ message, symbolicatedStackFrames, frame, name, delayRenderCall, }) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.symbolicatedStackFrames = symbolicatedStackFrames;
|
|
11
|
+
this.frame = frame;
|
|
12
|
+
this.name = name;
|
|
13
|
+
this.delayRenderCall = delayRenderCall;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.ErrorWithStackFrame = ErrorWithStackFrame;
|
|
17
|
+
const cleanUpErrorMessage = (exception) => {
|
|
18
|
+
var _a, _b, _c, _d;
|
|
19
|
+
let errorMessage = (_a = exception.exceptionDetails.exception) === null || _a === void 0 ? void 0 : _a.description;
|
|
20
|
+
if (!errorMessage) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
const errorType = (_b = exception.exceptionDetails.exception) === null || _b === void 0 ? void 0 : _b.className;
|
|
24
|
+
const prefix = `${errorType}: `;
|
|
25
|
+
if (errorMessage.startsWith(prefix)) {
|
|
26
|
+
errorMessage = errorMessage.substring(prefix.length);
|
|
27
|
+
}
|
|
28
|
+
const frames = (_d = (_c = exception.exceptionDetails.stackTrace) === null || _c === void 0 ? void 0 : _c.callFrames.length) !== null && _d !== void 0 ? _d : 0;
|
|
29
|
+
const split = errorMessage.split('\n');
|
|
30
|
+
return split.slice(0, Math.max(1, split.length - frames)).join('\n');
|
|
31
|
+
};
|
|
32
|
+
const removeDelayRenderStack = (message) => {
|
|
33
|
+
const index = message.indexOf(remotion_1.Internals.DELAY_RENDER_CALLSTACK_TOKEN);
|
|
34
|
+
if (index === -1) {
|
|
35
|
+
return message;
|
|
36
|
+
}
|
|
37
|
+
return message.substring(0, index);
|
|
38
|
+
};
|
|
39
|
+
const callFrameToStackFrame = (callFrame) => {
|
|
40
|
+
return {
|
|
41
|
+
columnNumber: callFrame.columnNumber,
|
|
42
|
+
fileName: callFrame.url,
|
|
43
|
+
functionName: callFrame.functionName,
|
|
44
|
+
lineNumber: callFrame.lineNumber,
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
const handleJavascriptException = ({ page, onError, frame, }) => {
|
|
48
|
+
const client = page._client();
|
|
49
|
+
const handler = (exception) => {
|
|
50
|
+
var _a, _b, _c;
|
|
51
|
+
const rawErrorMessage = (_a = exception.exceptionDetails.exception) === null || _a === void 0 ? void 0 : _a.description;
|
|
52
|
+
const cleanErrorMessage = cleanUpErrorMessage(exception);
|
|
53
|
+
if (!cleanErrorMessage) {
|
|
54
|
+
log_1.Log.error(exception);
|
|
55
|
+
const err = new Error(rawErrorMessage);
|
|
56
|
+
err.stack = rawErrorMessage;
|
|
57
|
+
onError(err);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (!exception.exceptionDetails.stackTrace) {
|
|
61
|
+
const err = new Error(removeDelayRenderStack(cleanErrorMessage));
|
|
62
|
+
err.stack = rawErrorMessage;
|
|
63
|
+
onError(err);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const errorType = (_b = exception.exceptionDetails.exception) === null || _b === void 0 ? void 0 : _b.className;
|
|
67
|
+
const symbolicatedErr = new renderer_1.RenderInternals.SymbolicateableError({
|
|
68
|
+
message: removeDelayRenderStack(cleanErrorMessage),
|
|
69
|
+
stackFrame: exception.exceptionDetails.stackTrace.callFrames.map((f) => callFrameToStackFrame(f)),
|
|
70
|
+
frame,
|
|
71
|
+
name: errorType,
|
|
72
|
+
stack: (_c = exception.exceptionDetails.exception) === null || _c === void 0 ? void 0 : _c.description,
|
|
73
|
+
});
|
|
74
|
+
onError(symbolicatedErr);
|
|
75
|
+
};
|
|
76
|
+
client.on('Runtime.exceptionThrown', handler);
|
|
77
|
+
return () => {
|
|
78
|
+
client.off('Runtime.exceptionThrown', handler);
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
exports.handleJavascriptException = handleJavascriptException;
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getCompositionId = void 0;
|
|
4
4
|
const renderer_1 = require("@remotion/renderer");
|
|
5
|
+
const format_bytes_1 = require("./format-bytes");
|
|
5
6
|
const log_1 = require("./log");
|
|
6
7
|
const show_compositions_picker_1 = require("./show-compositions-picker");
|
|
7
|
-
const format_bytes_1 = require("./format-bytes");
|
|
8
8
|
const getCompName = ({ cliArgs, compositionIdFromUi, }) => {
|
|
9
9
|
if (compositionIdFromUi) {
|
|
10
10
|
return {
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Page } from '../browser/BrowserPage';
|
|
2
|
+
import type { SymbolicatedStackFrame } from '../symbolicate-stacktrace';
|
|
3
|
+
export declare class ErrorWithStackFrame extends Error {
|
|
4
|
+
symbolicatedStackFrames: SymbolicatedStackFrame[] | null;
|
|
5
|
+
frame: number | null;
|
|
6
|
+
name: string;
|
|
7
|
+
delayRenderCall: SymbolicatedStackFrame[] | null;
|
|
8
|
+
constructor({ message, symbolicatedStackFrames, frame, name, delayRenderCall, }: {
|
|
9
|
+
message: string;
|
|
10
|
+
symbolicatedStackFrames: SymbolicatedStackFrame[] | null;
|
|
11
|
+
frame: number | null;
|
|
12
|
+
name: string;
|
|
13
|
+
delayRenderCall: SymbolicatedStackFrame[] | null;
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
export declare const handleJavascriptException: ({ page, onError, frame, }: {
|
|
17
|
+
page: Page;
|
|
18
|
+
frame: number | null;
|
|
19
|
+
onError: (err: Error) => void;
|
|
20
|
+
}) => () => void;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleJavascriptException = exports.ErrorWithStackFrame = void 0;
|
|
4
|
+
const remotion_1 = require("remotion");
|
|
5
|
+
const symbolicateable_error_1 = require("./symbolicateable-error");
|
|
6
|
+
const log_1 = require("./log");
|
|
7
|
+
class ErrorWithStackFrame extends Error {
|
|
8
|
+
constructor({ message, symbolicatedStackFrames, frame, name, delayRenderCall, }) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.symbolicatedStackFrames = symbolicatedStackFrames;
|
|
11
|
+
this.frame = frame;
|
|
12
|
+
this.name = name;
|
|
13
|
+
this.delayRenderCall = delayRenderCall;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.ErrorWithStackFrame = ErrorWithStackFrame;
|
|
17
|
+
const cleanUpErrorMessage = (exception) => {
|
|
18
|
+
var _a, _b, _c, _d;
|
|
19
|
+
let errorMessage = (_a = exception.exceptionDetails.exception) === null || _a === void 0 ? void 0 : _a.description;
|
|
20
|
+
if (!errorMessage) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
const errorType = (_b = exception.exceptionDetails.exception) === null || _b === void 0 ? void 0 : _b.className;
|
|
24
|
+
const prefix = `${errorType}: `;
|
|
25
|
+
if (errorMessage.startsWith(prefix)) {
|
|
26
|
+
errorMessage = errorMessage.substring(prefix.length);
|
|
27
|
+
}
|
|
28
|
+
const frames = (_d = (_c = exception.exceptionDetails.stackTrace) === null || _c === void 0 ? void 0 : _c.callFrames.length) !== null && _d !== void 0 ? _d : 0;
|
|
29
|
+
const split = errorMessage.split('\n');
|
|
30
|
+
return split.slice(0, Math.max(1, split.length - frames)).join('\n');
|
|
31
|
+
};
|
|
32
|
+
const removeDelayRenderStack = (message) => {
|
|
33
|
+
const index = message.indexOf(remotion_1.Internals.DELAY_RENDER_CALLSTACK_TOKEN);
|
|
34
|
+
if (index === -1) {
|
|
35
|
+
return message;
|
|
36
|
+
}
|
|
37
|
+
return message.substring(0, index);
|
|
38
|
+
};
|
|
39
|
+
const callFrameToStackFrame = (callFrame) => {
|
|
40
|
+
return {
|
|
41
|
+
columnNumber: callFrame.columnNumber,
|
|
42
|
+
fileName: callFrame.url,
|
|
43
|
+
functionName: callFrame.functionName,
|
|
44
|
+
lineNumber: callFrame.lineNumber,
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
const handleJavascriptException = ({ page, onError, frame, }) => {
|
|
48
|
+
const client = page._client();
|
|
49
|
+
const handler = (exception) => {
|
|
50
|
+
var _a, _b, _c;
|
|
51
|
+
const rawErrorMessage = (_a = exception.exceptionDetails.exception) === null || _a === void 0 ? void 0 : _a.description;
|
|
52
|
+
const cleanErrorMessage = cleanUpErrorMessage(exception);
|
|
53
|
+
if (!cleanErrorMessage) {
|
|
54
|
+
log_1.Log.error(exception);
|
|
55
|
+
const err = new Error(rawErrorMessage);
|
|
56
|
+
err.stack = rawErrorMessage;
|
|
57
|
+
onError(err);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (!exception.exceptionDetails.stackTrace) {
|
|
61
|
+
const err = new Error(removeDelayRenderStack(cleanErrorMessage));
|
|
62
|
+
err.stack = rawErrorMessage;
|
|
63
|
+
onError(err);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const errorType = (_b = exception.exceptionDetails.exception) === null || _b === void 0 ? void 0 : _b.className;
|
|
67
|
+
const symbolicatedErr = new symbolicateable_error_1.SymbolicateableError({
|
|
68
|
+
message: removeDelayRenderStack(cleanErrorMessage),
|
|
69
|
+
stackFrame: exception.exceptionDetails.stackTrace.callFrames.map((f) => callFrameToStackFrame(f)),
|
|
70
|
+
frame,
|
|
71
|
+
name: errorType,
|
|
72
|
+
stack: (_c = exception.exceptionDetails.exception) === null || _c === void 0 ? void 0 : _c.description,
|
|
73
|
+
});
|
|
74
|
+
onError(symbolicatedErr);
|
|
75
|
+
};
|
|
76
|
+
client.on('Runtime.exceptionThrown', handler);
|
|
77
|
+
return () => {
|
|
78
|
+
client.off('Runtime.exceptionThrown', handler);
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
exports.handleJavascriptException = handleJavascriptException;
|
package/dist/index.d.ts
CHANGED
|
@@ -78,6 +78,12 @@ export declare const CliInternals: {
|
|
|
78
78
|
logLevel: "verbose" | "info" | "warn" | "error";
|
|
79
79
|
}, message?: any, ...optionalParams: any[]) => void;
|
|
80
80
|
error: (message?: any, ...optionalParams: any[]) => void;
|
|
81
|
+
errorAdvanced: (options: {
|
|
82
|
+
indent: boolean;
|
|
83
|
+
logLevel: "verbose" | "info" | "warn" | "error";
|
|
84
|
+
} & {
|
|
85
|
+
tag?: string | undefined;
|
|
86
|
+
}, message?: any, ...optionalParams: any[]) => void;
|
|
81
87
|
};
|
|
82
88
|
getCliOptions: (options: {
|
|
83
89
|
isLambda: boolean;
|
package/dist/index.js
CHANGED
|
@@ -61,14 +61,17 @@ const cli = async () => {
|
|
|
61
61
|
if (command !== versions_1.VERSIONS_COMMAND) {
|
|
62
62
|
await (0, versions_1.validateVersionsBeforeCommand)(remotionRoot);
|
|
63
63
|
}
|
|
64
|
-
const
|
|
64
|
+
const isStudio = command === 'studio' || command === 'preview';
|
|
65
|
+
const errorSymbolicationLock = isStudio
|
|
66
|
+
? 0
|
|
67
|
+
: renderer_1.RenderInternals.registerErrorSymbolicationLock();
|
|
65
68
|
(0, cleanup_before_quit_1.handleCtrlC)();
|
|
66
69
|
await (0, initialize_cli_1.initializeCli)(remotionRoot);
|
|
67
70
|
try {
|
|
68
71
|
if (command === 'compositions') {
|
|
69
72
|
await (0, compositions_1.listCompositionsCommand)(remotionRoot, args);
|
|
70
73
|
}
|
|
71
|
-
else if (
|
|
74
|
+
else if (isStudio) {
|
|
72
75
|
await (0, studio_1.studioCommand)(remotionRoot, args);
|
|
73
76
|
}
|
|
74
77
|
else if (command === 'lambda') {
|
package/dist/log.d.ts
CHANGED
|
@@ -17,4 +17,10 @@ export declare const Log: {
|
|
|
17
17
|
logLevel: "verbose" | "info" | "warn" | "error";
|
|
18
18
|
}, message?: any, ...optionalParams: any[]) => void;
|
|
19
19
|
error: (message?: any, ...optionalParams: any[]) => void;
|
|
20
|
+
errorAdvanced: (options: {
|
|
21
|
+
indent: boolean;
|
|
22
|
+
logLevel: "verbose" | "info" | "warn" | "error";
|
|
23
|
+
} & {
|
|
24
|
+
tag?: string | undefined;
|
|
25
|
+
}, message?: any, ...optionalParams: any[]) => void;
|
|
20
26
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeRetryPayload = void 0;
|
|
4
|
-
const get_default_video_contexts_1 = require("./get-default-video-contexts");
|
|
5
4
|
const remotion_1 = require("remotion");
|
|
5
|
+
const get_default_video_contexts_1 = require("./get-default-video-contexts");
|
|
6
6
|
const makeRetryPayload = (job) => {
|
|
7
7
|
var _a, _b, _c;
|
|
8
8
|
const defaults = window.remotion_renderDefaults;
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.updateDefaultPropsHandler = void 0;
|
|
4
4
|
const node_fs_1 = require("node:fs");
|
|
5
|
+
const remotion_1 = require("remotion");
|
|
5
6
|
const update_default_props_1 = require("../../codemods/update-default-props");
|
|
6
7
|
const project_info_1 = require("../project-info");
|
|
7
8
|
const can_update_default_props_1 = require("./can-update-default-props");
|
|
8
|
-
const remotion_1 = require("remotion");
|
|
9
9
|
const updateDefaultPropsHandler = async ({ input: { compositionId, defaultProps, enumPaths }, remotionRoot }) => {
|
|
10
10
|
try {
|
|
11
11
|
const projectInfo = await (0, project_info_1.getProjectInfo)(remotionRoot);
|
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
|
}
|
|
@@ -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,7 +46,6 @@ 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 remotion_1 = require("remotion");
|
|
49
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, }) => {
|
|
50
50
|
var _a;
|
|
51
51
|
const downloads = [];
|
|
@@ -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,6 @@ 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 remotion_1 = require("remotion");
|
|
26
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, }) => {
|
|
27
27
|
var _a, _b;
|
|
28
28
|
const downloads = [];
|
|
@@ -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 {};
|
|
@@ -0,0 +1,135 @@
|
|
|
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.getSourceMapFromLocalFile = exports.getSourceMapFromRemoteFile = exports.symbolicateStackFrame = exports.symbolicateFromSources = exports.symbolicateStackTraceFromRemoteFrames = void 0;
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const source_map_1 = require("source-map");
|
|
10
|
+
const read_file_1 = require("./assets/read-file");
|
|
11
|
+
const truthy_1 = require("./truthy");
|
|
12
|
+
function extractSourceMapUrl(fileContents) {
|
|
13
|
+
const regex = /\/\/[#@] ?sourceMappingURL=([^\s'"]+)\s*$/gm;
|
|
14
|
+
let match = null;
|
|
15
|
+
for (;;) {
|
|
16
|
+
const next = regex.exec(fileContents);
|
|
17
|
+
if (next === null || next === undefined) {
|
|
18
|
+
break;
|
|
19
|
+
}
|
|
20
|
+
match = next;
|
|
21
|
+
}
|
|
22
|
+
if (!(match === null || match === void 0 ? void 0 : match[1])) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
return match[1].toString();
|
|
26
|
+
}
|
|
27
|
+
const getSourceMap = async (filePath, fileContents, type) => {
|
|
28
|
+
const sm = extractSourceMapUrl(fileContents);
|
|
29
|
+
if (sm === null) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
if (sm.indexOf('data:') === 0) {
|
|
33
|
+
const base64 = /^data:application\/json;([\w=:"-]+;)*base64,/;
|
|
34
|
+
const match2 = sm.match(base64);
|
|
35
|
+
if (!match2) {
|
|
36
|
+
throw new Error('Sorry, non-base64 inline source-map encoding is not supported.');
|
|
37
|
+
}
|
|
38
|
+
const converted = window.atob(sm.substring(match2[0].length));
|
|
39
|
+
return new source_map_1.SourceMapConsumer(JSON.parse(converted));
|
|
40
|
+
}
|
|
41
|
+
if (type === 'local') {
|
|
42
|
+
// Find adjacent file: bundle.js -> bundle.js.map
|
|
43
|
+
const newFilePath = path_1.default.join(path_1.default.dirname(filePath), sm);
|
|
44
|
+
return new source_map_1.SourceMapConsumer((0, fs_1.readFileSync)(newFilePath, 'utf8'));
|
|
45
|
+
}
|
|
46
|
+
const index = filePath.lastIndexOf('/');
|
|
47
|
+
const url = filePath.substring(0, index + 1) + sm;
|
|
48
|
+
const obj = await fetchUrl(url);
|
|
49
|
+
return new source_map_1.SourceMapConsumer(obj);
|
|
50
|
+
};
|
|
51
|
+
const fetchUrl = async (url) => {
|
|
52
|
+
const res = await (0, read_file_1.readFile)(url);
|
|
53
|
+
return new Promise((resolve, reject) => {
|
|
54
|
+
let downloaded = '';
|
|
55
|
+
res.on('data', (d) => {
|
|
56
|
+
downloaded += d;
|
|
57
|
+
});
|
|
58
|
+
res.on('end', () => {
|
|
59
|
+
resolve(downloaded);
|
|
60
|
+
});
|
|
61
|
+
res.on('error', (err) => reject(err));
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
function getLinesAround(line, count, lines) {
|
|
65
|
+
const result = [];
|
|
66
|
+
for (let index = Math.max(0, line - 1 - count) + 1; index <= Math.min(lines.length - 1, line - 1 + count); ++index) {
|
|
67
|
+
result.push({
|
|
68
|
+
lineNumber: index + 1,
|
|
69
|
+
content: lines[index],
|
|
70
|
+
highlight: index + 1 === line,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
const getOriginalPosition = (source_map, line, column) => {
|
|
76
|
+
const result = source_map.originalPositionFor({
|
|
77
|
+
line,
|
|
78
|
+
column,
|
|
79
|
+
});
|
|
80
|
+
return { line: result.line, column: result.column, source: result.source };
|
|
81
|
+
};
|
|
82
|
+
const symbolicateStackTraceFromRemoteFrames = async (frames) => {
|
|
83
|
+
const uniqueFileNames = [
|
|
84
|
+
...new Set(frames
|
|
85
|
+
.map((f) => f.fileName)
|
|
86
|
+
.filter((f) => f.startsWith('http://') || f.startsWith('https://'))
|
|
87
|
+
.filter(truthy_1.truthy)),
|
|
88
|
+
];
|
|
89
|
+
const maps = await Promise.all(uniqueFileNames.map((fileName) => {
|
|
90
|
+
return (0, exports.getSourceMapFromRemoteFile)(fileName);
|
|
91
|
+
}));
|
|
92
|
+
const mapValues = {};
|
|
93
|
+
for (let i = 0; i < uniqueFileNames.length; i++) {
|
|
94
|
+
mapValues[uniqueFileNames[i]] = maps[i];
|
|
95
|
+
}
|
|
96
|
+
return (0, exports.symbolicateFromSources)(frames, mapValues);
|
|
97
|
+
};
|
|
98
|
+
exports.symbolicateStackTraceFromRemoteFrames = symbolicateStackTraceFromRemoteFrames;
|
|
99
|
+
const symbolicateFromSources = (frames, mapValues) => {
|
|
100
|
+
return frames
|
|
101
|
+
.map((frame) => {
|
|
102
|
+
const map = mapValues[frame.fileName];
|
|
103
|
+
if (!map) {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
return (0, exports.symbolicateStackFrame)(frame, map);
|
|
107
|
+
})
|
|
108
|
+
.filter(truthy_1.truthy);
|
|
109
|
+
};
|
|
110
|
+
exports.symbolicateFromSources = symbolicateFromSources;
|
|
111
|
+
const symbolicateStackFrame = (frame, map) => {
|
|
112
|
+
const pos = getOriginalPosition(map, frame.lineNumber, frame.columnNumber);
|
|
113
|
+
const hasSource = pos.source ? map.sourceContentFor(pos.source, false) : null;
|
|
114
|
+
const scriptCode = hasSource && pos.line
|
|
115
|
+
? getLinesAround(pos.line, 3, hasSource.split('\n'))
|
|
116
|
+
: null;
|
|
117
|
+
return {
|
|
118
|
+
originalColumnNumber: pos.column,
|
|
119
|
+
originalFileName: pos.source,
|
|
120
|
+
originalFunctionName: frame.functionName,
|
|
121
|
+
originalLineNumber: pos.line,
|
|
122
|
+
originalScriptCode: scriptCode,
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
exports.symbolicateStackFrame = symbolicateStackFrame;
|
|
126
|
+
const getSourceMapFromRemoteFile = async (fileName) => {
|
|
127
|
+
const fileContents = await fetchUrl(fileName);
|
|
128
|
+
return getSourceMap(fileName, fileContents, 'remote');
|
|
129
|
+
};
|
|
130
|
+
exports.getSourceMapFromRemoteFile = getSourceMapFromRemoteFile;
|
|
131
|
+
const getSourceMapFromLocalFile = (fileName) => {
|
|
132
|
+
const fileContents = (0, fs_1.readFileSync)(fileName, 'utf8');
|
|
133
|
+
return getSourceMap(fileName, fileContents, 'local');
|
|
134
|
+
};
|
|
135
|
+
exports.getSourceMapFromLocalFile = getSourceMapFromLocalFile;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A symbolicateable error is an error that can be symolicated by fetching the original sources. By throwing a symbolicateable error, Remotion CLI will attempt to symplicate it
|
|
3
|
+
*/
|
|
4
|
+
import type { UnsymbolicatedStackFrame } from '../parse-browser-error-stack';
|
|
5
|
+
export declare class SymbolicateableError extends Error {
|
|
6
|
+
stackFrame: UnsymbolicatedStackFrame[] | null;
|
|
7
|
+
delayRenderCall: UnsymbolicatedStackFrame[] | null;
|
|
8
|
+
frame: number | null;
|
|
9
|
+
constructor({ message, stack, stackFrame, frame, name, }: {
|
|
10
|
+
message: string;
|
|
11
|
+
stack: string | undefined;
|
|
12
|
+
frame: number | null;
|
|
13
|
+
name: string;
|
|
14
|
+
stackFrame: UnsymbolicatedStackFrame[] | null;
|
|
15
|
+
});
|
|
16
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* A symbolicateable error is an error that can be symolicated by fetching the original sources. By throwing a symbolicateable error, Remotion CLI will attempt to symplicate it
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SymbolicateableError = void 0;
|
|
7
|
+
const delay_render_embedded_stack_1 = require("../delay-render-embedded-stack");
|
|
8
|
+
class SymbolicateableError extends Error {
|
|
9
|
+
constructor({ message, stack, stackFrame, frame, name, }) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.stack = stack;
|
|
12
|
+
this.stackFrame = stackFrame;
|
|
13
|
+
this.frame = frame;
|
|
14
|
+
this.name = name;
|
|
15
|
+
this.delayRenderCall = stack ? (0, delay_render_embedded_stack_1.parseDelayRenderEmbeddedStack)(stack) : null;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.SymbolicateableError = SymbolicateableError;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remotion/cli",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.6",
|
|
4
4
|
"description": "CLI for Remotion",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -35,11 +35,11 @@
|
|
|
35
35
|
"prompts": "2.4.1",
|
|
36
36
|
"semver": "7.5.3",
|
|
37
37
|
"source-map": "0.6.1",
|
|
38
|
-
"@remotion/
|
|
39
|
-
"@remotion/
|
|
40
|
-
"remotion": "4.0.
|
|
41
|
-
"@remotion/
|
|
42
|
-
"@remotion/
|
|
38
|
+
"@remotion/bundler": "4.0.6",
|
|
39
|
+
"@remotion/renderer": "4.0.6",
|
|
40
|
+
"remotion": "4.0.6",
|
|
41
|
+
"@remotion/media-utils": "4.0.6",
|
|
42
|
+
"@remotion/player": "4.0.6"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
45
|
"react": ">=16.8.0",
|
|
@@ -59,14 +59,14 @@
|
|
|
59
59
|
"eslint-plugin-react": "7.32.2",
|
|
60
60
|
"eslint-plugin-react-hooks": "4.4.0",
|
|
61
61
|
"prettier": "^2.7.1",
|
|
62
|
-
"prettier-plugin-organize-imports": "^2.
|
|
62
|
+
"prettier-plugin-organize-imports": "^3.2.2",
|
|
63
63
|
"react": "^18.0.0",
|
|
64
64
|
"react-dom": "^18.0.0",
|
|
65
65
|
"typescript": "4.9.5",
|
|
66
66
|
"vitest": "0.31.1",
|
|
67
67
|
"zod": "^3.21.4",
|
|
68
|
-
"@remotion/zod-types": "4.0.
|
|
69
|
-
"@remotion/tailwind": "4.0.
|
|
68
|
+
"@remotion/zod-types": "4.0.6",
|
|
69
|
+
"@remotion/tailwind": "4.0.6"
|
|
70
70
|
},
|
|
71
71
|
"keywords": [
|
|
72
72
|
"remotion",
|