@remotion/cli
Version:
Control Remotion features using the `npx remotion` command
65 lines (64 loc) • 2.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.printCodeFrameAndStack = void 0;
const renderer_1 = require("@remotion/renderer");
const chalk_1 = require("./chalk");
const log_1 = require("./log");
const printCodeFrame = (frame, logLevel) => {
const codeFrame = renderer_1.RenderInternals.formatStackFrameCodeFrame(frame);
if (codeFrame === null) {
return;
}
log_1.Log.info({ indent: false, logLevel });
log_1.Log.info({ indent: false, logLevel }, 'at', chalk_1.chalk.underline(renderer_1.RenderInternals.makeStackFrameFileName(frame)));
log_1.Log.info({ indent: false, logLevel }, codeFrame);
};
const logLine = (frame, logLevel) => {
const line = renderer_1.RenderInternals.formatStackFrameLocationLine(frame);
if (line === null) {
return;
}
log_1.Log.info({ indent: false, logLevel }, line);
};
const printCodeFrameAndStack = ({ symbolicated, logLevel, }) => {
var _a, _b, _c, _d, _e;
if (!symbolicated.symbolicatedStackFrames ||
symbolicated.symbolicatedStackFrames.length === 0) {
log_1.Log.error({ indent: false, logLevel }, symbolicated.stack);
return;
}
const firstFrame = symbolicated.symbolicatedStackFrames[0];
log_1.Log.error({ indent: false, logLevel }, chalk_1.chalk.bgRed(chalk_1.chalk.white(` ${symbolicated.name} `)), symbolicated.message);
printCodeFrame(firstFrame, logLevel);
log_1.Log.info({ indent: false, logLevel });
for (const frame of symbolicated.symbolicatedStackFrames) {
if (frame === firstFrame) {
continue;
}
const isUserCode = !((_a = frame.originalFileName) === null || _a === void 0 ? void 0 : _a.includes('node_modules')) &&
!((_b = frame.originalFileName) === null || _b === void 0 ? void 0 : _b.startsWith('webpack/'));
if (isUserCode) {
printCodeFrame(frame, logLevel);
}
else {
logLine(frame, logLevel);
}
}
if (symbolicated.delayRenderCall) {
log_1.Log.error({ indent: false, logLevel });
log_1.Log.error({ indent: false, logLevel }, '🕧 The delayRender() call is located at:');
for (const frame of symbolicated.delayRenderCall) {
const showCodeFrame = (!((_c = frame.originalFileName) === null || _c === void 0 ? void 0 : _c.includes('node_modules')) &&
!((_d = frame.originalFileName) === null || _d === void 0 ? void 0 : _d.startsWith('webpack/'))) ||
frame === symbolicated.delayRenderCall[0] ||
((_e = frame.originalScriptCode) === null || _e === void 0 ? void 0 : _e.map((c) => c.content).join('').includes('delayRender'));
if (showCodeFrame) {
printCodeFrame(frame, logLevel);
}
else {
logLine(frame, logLevel);
}
}
}
};
exports.printCodeFrameAndStack = printCodeFrameAndStack;