Files
clawbot/skills/remotion-prompt-video/node_modules/@remotion/cli/dist/versions.js

193 lines
9.7 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.versionsCommand = exports.validateVersionsBeforeCommand = exports.VERSIONS_COMMAND = void 0;
const renderer_1 = require("@remotion/renderer");
const node_fs_1 = __importDefault(require("node:fs"));
const node_path_1 = __importDefault(require("node:path"));
const chalk_1 = require("./chalk");
const extra_packages_1 = require("./extra-packages");
const list_of_remotion_packages_1 = require("./list-of-remotion-packages");
const log_1 = require("./log");
const parse_command_line_1 = require("./parse-command-line");
const resolve_from_1 = require("./resolve-from");
const getVersion = async (remotionRoot, p) => {
try {
const remotionPkgJson = (0, resolve_from_1.resolveFrom)(remotionRoot, `${p}/package.json`);
const file = await node_fs_1.default.promises.readFile(remotionPkgJson, 'utf-8');
const packageJson = JSON.parse(file);
return { version: packageJson.version, path: remotionPkgJson };
}
catch (_a) {
return null;
}
};
const groupBy = (vals) => {
const groups = {};
for (const [pkg, version] of vals) {
if (!groups[version.version]) {
groups[version.version] = [];
}
groups[version.version].push({
pkg,
versionAndPath: version,
});
}
return groups;
};
const getAllVersions = async (remotionRoot) => {
return (await Promise.all(list_of_remotion_packages_1.listOfRemotionPackages.map(async (p) => [p, await getVersion(remotionRoot, p)]))).filter(([, version]) => version);
};
const getExtraPackagesStatus = async (remotionRoot) => {
const results = [];
for (const [pkg, requiredVersion] of Object.entries(extra_packages_1.EXTRA_PACKAGES)) {
const versionAndPath = await getVersion(remotionRoot, pkg);
if (versionAndPath) {
results.push({
pkg,
requiredVersion,
installedVersion: versionAndPath.version,
path: versionAndPath.path,
isCorrect: versionAndPath.version === requiredVersion,
});
}
else {
results.push({
pkg,
requiredVersion,
installedVersion: null,
path: null,
isCorrect: true, // Not installed is fine - only validate if installed
});
}
}
return results;
};
exports.VERSIONS_COMMAND = 'versions';
const validateVersionsBeforeCommand = async (remotionRoot, logLevel) => {
var _a;
const versions = await getAllVersions(remotionRoot);
const grouped = groupBy(versions);
const installedVersions = Object.keys(grouped);
const hasRemotionMismatch = installedVersions.length > 1 && installedVersions.length !== 0;
// Check extra packages
const extraPackagesStatus = await getExtraPackagesStatus(remotionRoot);
const incorrectExtraPackages = extraPackagesStatus.filter((status) => !status.isCorrect);
if (!hasRemotionMismatch && incorrectExtraPackages.length === 0) {
return;
}
// Could be a global install of @remotion/cli.
// If you render a bundle with a different version, it will give a warning accordingly.
if (installedVersions.length === 0 && incorrectExtraPackages.length === 0) {
return;
}
const logOptions = { indent: false, logLevel };
log_1.Log.warn(logOptions, '-------------');
log_1.Log.warn(logOptions, 'Version mismatch:');
if (hasRemotionMismatch) {
for (const version of installedVersions) {
log_1.Log.warn(logOptions, `- On version: ${version}`);
for (const pkg of (_a = grouped[version]) !== null && _a !== void 0 ? _a : []) {
log_1.Log.warn(logOptions, ` - ${pkg.pkg} ${chalk_1.chalk.gray(node_path_1.default.relative(remotionRoot, pkg.versionAndPath.path))}`);
}
log_1.Log.info({ indent: false, logLevel });
}
}
if (incorrectExtraPackages.length > 0) {
log_1.Log.warn(logOptions, 'Extra packages with wrong versions:');
for (const status of incorrectExtraPackages) {
const docLink = extra_packages_1.EXTRA_PACKAGES_DOCS[status.pkg];
log_1.Log.warn(logOptions, ` - ${status.pkg}: installed ${status.installedVersion}, required ${status.requiredVersion}`);
if (docLink) {
log_1.Log.warn(logOptions, ` See: ${docLink}`);
}
}
log_1.Log.info({ indent: false, logLevel });
}
log_1.Log.warn(logOptions, 'You may experience breakages such as:');
log_1.Log.warn(logOptions, '- React context and hooks not working');
log_1.Log.warn(logOptions, '- Type errors and feature incompatibilities');
log_1.Log.warn(logOptions, '- Failed renders and unclear errors');
log_1.Log.warn(logOptions);
log_1.Log.warn(logOptions, 'To resolve:');
log_1.Log.warn(logOptions, '- Make sure your package.json has all Remotion packages pointing to the same version.');
log_1.Log.warn(logOptions, '- Remove the `^` character in front of a version to pin a package.');
for (const incorrectPkg of incorrectExtraPackages) {
log_1.Log.warn(logOptions, `- For ${incorrectPkg.pkg}, install exact version ${incorrectPkg.requiredVersion} (run: npx remotion add ${incorrectPkg.pkg}).`);
}
if (!renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'verbose')) {
log_1.Log.warn(logOptions, '- Run `npx remotion versions --log=verbose` to see the path of the modules resolved.');
}
log_1.Log.warn(logOptions, '-------------');
log_1.Log.info({ indent: false, logLevel });
};
exports.validateVersionsBeforeCommand = validateVersionsBeforeCommand;
const versionsCommand = async (remotionRoot, logLevel) => {
var _a;
(0, parse_command_line_1.parseCommandLine)();
const versions = await getAllVersions(remotionRoot);
const grouped = groupBy(versions);
const installedVersions = Object.keys(grouped);
log_1.Log.info({ indent: false, logLevel }, `Node.JS = ${process.version}, OS = ${process.platform}`);
log_1.Log.info({ indent: false, logLevel });
for (const version of installedVersions) {
log_1.Log.info({ indent: false, logLevel }, `On version: ${version}`);
for (const pkg of (_a = grouped[version]) !== null && _a !== void 0 ? _a : []) {
log_1.Log.info({ indent: false, logLevel }, `- ${pkg.pkg}`);
log_1.Log.verbose({ indent: false, logLevel }, ` ${(0, resolve_from_1.resolveFrom)(remotionRoot, `${pkg.pkg}/package.json`)}`);
}
log_1.Log.info({ indent: false, logLevel });
}
// Check extra packages
const extraPackagesStatus = await getExtraPackagesStatus(remotionRoot);
const installedExtraPackages = extraPackagesStatus.filter((status) => status.installedVersion !== null);
if (installedExtraPackages.length > 0) {
log_1.Log.info({ indent: false, logLevel }, 'Extra packages:');
for (const status of installedExtraPackages) {
const versionStatus = status.isCorrect
? chalk_1.chalk.green(`${status.installedVersion}`)
: chalk_1.chalk.red(`${status.installedVersion} (required: ${status.requiredVersion})`);
log_1.Log.info({ indent: false, logLevel }, `- ${status.pkg}@${versionStatus}`);
if (status.path) {
log_1.Log.verbose({ indent: false, logLevel }, ` ${status.path}`);
}
}
log_1.Log.info({ indent: false, logLevel });
}
if (installedVersions.length === 0) {
log_1.Log.info({ indent: false, logLevel }, 'No Remotion packages found.');
log_1.Log.info({ indent: false, logLevel }, 'Maybe @remotion/cli is installed globally.');
log_1.Log.info({ indent: false, logLevel }, 'If you try to render a video that was bundled with a different version, you will get a warning.');
process.exit(1);
}
const incorrectExtraPackages = extraPackagesStatus.filter((status) => !status.isCorrect);
if (installedVersions.length === 1 && incorrectExtraPackages.length === 0) {
log_1.Log.info({ indent: false, logLevel }, `All packages have the correct version.`);
}
else {
if (installedVersions.length !== 1) {
log_1.Log.error({ indent: false, logLevel }, 'Version mismatch: Not all Remotion packages have the same version.');
log_1.Log.info({ indent: false, logLevel }, '- Make sure your package.json has all Remotion packages pointing to the same version.');
log_1.Log.info({ indent: false, logLevel }, '- Remove the `^` character in front of a version to pin a package.');
}
if (incorrectExtraPackages.length > 0) {
log_1.Log.error({ indent: false, logLevel }, 'Extra packages have incorrect versions:');
for (const status of incorrectExtraPackages) {
const docLink = extra_packages_1.EXTRA_PACKAGES_DOCS[status.pkg];
log_1.Log.info({ indent: false, logLevel }, `- ${status.pkg}: installed ${status.installedVersion}, required ${status.requiredVersion}`);
if (docLink) {
log_1.Log.info({ indent: false, logLevel }, ` See: ${docLink}`);
}
}
log_1.Log.info({ indent: false, logLevel }, `To fix, run: npx remotion add ${incorrectExtraPackages.map((s) => s.pkg).join(' ')}`);
}
if (!renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'verbose')) {
log_1.Log.info({ indent: false, logLevel }, '- Rerun this command with --log=verbose to see the path of the modules resolved.');
}
process.exit(1);
}
};
exports.versionsCommand = versionsCommand;