@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.
Files changed (49) hide show
  1. package/dist/benchmark.js +1 -1
  2. package/dist/compositions.js +1 -1
  3. package/dist/config/log.d.ts +1 -1
  4. package/dist/editor/components/CanvasOrLoading.js +4 -4
  5. package/dist/editor/components/GlobalKeybindings.js +1 -1
  6. package/dist/editor/components/PlaybackRateSelector.js +1 -1
  7. package/dist/editor/components/RenderModal/DataEditor.js +1 -3
  8. package/dist/editor/components/RenderModal/RenderModalBasic.d.ts +1 -1
  9. package/dist/editor/components/RenderModal/RenderModalJSONPropsEditor.d.ts +1 -2
  10. package/dist/editor/components/RenderModal/RenderModalJSONPropsEditor.js +9 -10
  11. package/dist/editor/components/RenderModal/SchemaEditor/SchemaLabel.js +1 -2
  12. package/dist/editor/components/RenderModal/SchemaEditor/ZodArrayEditor.js +7 -7
  13. package/dist/editor/components/RenderModal/SchemaEditor/ZodBooleanEditor.d.ts +1 -1
  14. package/dist/editor/components/RenderModal/SchemaEditor/ZodBooleanEditor.js +1 -1
  15. package/dist/editor/components/RenderModal/SchemaEditor/ZodColorEditor.js +1 -1
  16. package/dist/editor/components/RenderModal/SchemaEditor/ZodDateEditor.js +1 -1
  17. package/dist/editor/components/RenderModal/SchemaEditor/ZodEffectEditor.js +2 -2
  18. package/dist/editor/components/RenderModal/SchemaEditor/ZodEnumEditor.js +1 -1
  19. package/dist/editor/components/RenderModal/SchemaEditor/ZodFieldValidation.js +1 -1
  20. package/dist/editor/components/RenderModal/SchemaEditor/ZodNonEditableValue.js +1 -1
  21. package/dist/editor/components/RenderModal/SchemaEditor/ZodNumberEditor.js +1 -1
  22. package/dist/editor/components/RenderModal/SchemaEditor/ZodObjectEditor.js +29 -10
  23. package/dist/editor/components/RenderModal/SchemaEditor/ZodOrNullishEditor.js +2 -2
  24. package/dist/editor/components/RenderModal/SchemaEditor/ZodStaticFileEditor.js +1 -1
  25. package/dist/editor/components/RenderModal/SchemaEditor/ZodStringEditor.js +1 -1
  26. package/dist/editor/components/Timeline/TimelineDragHandler.js +1 -1
  27. package/dist/editor/helpers/colors.d.ts +1 -1
  28. package/dist/error-with-stack-frame.d.ts +19 -0
  29. package/dist/error-with-stack-frame.js +81 -0
  30. package/dist/get-composition-id.js +1 -1
  31. package/dist/handle-javascript-error.d.ts +20 -0
  32. package/dist/handle-javascript-error.js +81 -0
  33. package/dist/index.d.ts +6 -0
  34. package/dist/index.js +5 -2
  35. package/dist/log.d.ts +6 -0
  36. package/dist/preview-server/render-queue/make-retry-payload.js +1 -1
  37. package/dist/preview-server/routes/update-default-props.js +1 -1
  38. package/dist/print-error.js +6 -3
  39. package/dist/render-flows/render.js +1 -1
  40. package/dist/render-flows/still.js +1 -1
  41. package/dist/symbolicate-error.d.ts +3 -0
  42. package/dist/symbolicate-error.js +24 -0
  43. package/dist/symbolicate-errors.d.ts +7 -0
  44. package/dist/symbolicate-errors.js +90 -0
  45. package/dist/symbolicate-stacktrace.d.ts +28 -0
  46. package/dist/symbolicate-stacktrace.js +135 -0
  47. package/dist/symbolicateable-error.d.ts +16 -0
  48. package/dist/symbolicateable-error.js +18 -0
  49. 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;
@@ -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) {
@@ -1 +1 @@
1
- export declare const getLogLevel: () => "verbose" | "info" | "warn" | "error", setLogLevel: (newLogLevel: "verbose" | "info" | "warn" | "error") => void;
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,
@@ -43,7 +43,7 @@ const GlobalKeybindings = () => {
43
43
  callback: () => {
44
44
  setCheckerboard((c) => !c);
45
45
  },
46
- commandCtrlKey: true,
46
+ commandCtrlKey: false,
47
47
  preventDefault: true,
48
48
  triggerIfInputFieldFocused: false,
49
49
  });
@@ -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, valBeforeSafe: valBeforeSafe, showSaveButton: showSaveButton, serializedJSON: serializedJSON, defaultProps: unresolvedComposition.defaultProps, schema: schema }))] }));
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, valBeforeSafe, showSaveButton, serializedJSON, schema, }) => {
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 value && JSON.stringify(value) !== JSON.stringify(valBeforeSafe);
96
- }, [valBeforeSafe, value]);
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
- }, [defaultProps, schema, serializedJSON.serializedString, setValue]);
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 : colors_2.FAIL_COLOR,
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 SchemaVerticalGuide_1 = require("./SchemaVerticalGuide");
36
- const layout_1 = require("../layout");
36
+ const local_state_1 = require("./local-state");
37
+ const SchemaLabel_1 = require("./SchemaLabel");
37
38
  const SchemaSeparationLine_1 = require("./SchemaSeparationLine");
38
- const InlineAction_1 = require("../../InlineAction");
39
- const plus_1 = require("../../../icons/plus");
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 __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
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 local_state_1 = require("./local-state");
12
- const ZodSwitch_1 = require("./ZodSwitch");
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 SchemaLabel_1 = require("./SchemaLabel");
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)(react_2.default.Fragment, { children: [(0, jsx_runtime_1.jsx)(ZodSwitch_1.ZodSwitch, { mayPad: true, jsonPath: [...jsonPath, key], schema: shape[key], value: localValue.value[key],
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)" | "hsla(0, 0%, 100%, 0.25)" | "rgba(255, 255, 255, 0.06)";
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 errorSymbolicationLock = renderer_1.RenderInternals.registerErrorSymbolicationLock();
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 (command === 'preview' || command === 'studio') {
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);
@@ -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: (0, should_use_non_overlaying_logger_1.shouldUseNonOverlayingLogger)({ logLevel }),
16
+ updatesDontOverwrite: !updatesDoOverwrite,
16
17
  indent: false,
17
18
  });
18
- output.update(chalk_1.chalk.red('Symbolicating minified error message...\n' + err.message), false);
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('(Error occurred symbolicating stack trace - printing minified stack trace)'), true);
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,3 @@
1
+ import { ErrorWithStackFrame } from './handle-javascript-exception';
2
+ import type { SymbolicateableError } from './symbolicateable-error';
3
+ export declare const symbolicateError: (symbolicateableError: SymbolicateableError) => Promise<ErrorWithStackFrame>;
@@ -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.4",
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/renderer": "4.0.4",
39
- "@remotion/bundler": "4.0.4",
40
- "remotion": "4.0.4",
41
- "@remotion/player": "4.0.4",
42
- "@remotion/media-utils": "4.0.4"
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.3.4",
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.4",
69
- "@remotion/tailwind": "4.0.4"
68
+ "@remotion/zod-types": "4.0.6",
69
+ "@remotion/tailwind": "4.0.6"
70
70
  },
71
71
  "keywords": [
72
72
  "remotion",