| ; | |
| var __importDefault = (this && this.__importDefault) || function (mod) { | |
| return (mod && mod.__esModule) ? mod : { "default": mod }; | |
| }; | |
| Object.defineProperty(exports, "__esModule", { value: true }); | |
| exports.addCommand = void 0; | |
| const node_child_process_1 = require("node:child_process"); | |
| const node_fs_1 = __importDefault(require("node:fs")); | |
| const renderer_1 = require("@remotion/renderer"); | |
| const studio_server_1 = require("@remotion/studio-server"); | |
| 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 resolve_from_1 = require("./resolve-from"); | |
| const getInstalledVersion = (remotionRoot, pkg) => { | |
| try { | |
| const pkgJsonPath = (0, resolve_from_1.resolveFrom)(remotionRoot, `${pkg}/package.json`); | |
| const file = node_fs_1.default.readFileSync(pkgJsonPath, 'utf-8'); | |
| const packageJson = JSON.parse(file); | |
| return packageJson.version; | |
| } | |
| catch (_a) { | |
| return null; | |
| } | |
| }; | |
| const addCommand = async ({ remotionRoot, packageManager, packageNames, logLevel, args, }) => { | |
| // Validate that all package names are Remotion packages | |
| const invalidPackages = packageNames.filter((pkg) => !list_of_remotion_packages_1.listOfRemotionPackages.includes(pkg) && !extra_packages_1.EXTRA_PACKAGES[pkg]); | |
| if (invalidPackages.length > 0) { | |
| throw new Error(`The following packages are not Remotion packages: ${invalidPackages.join(', ')}. Must be one of the Remotion packages or one of the supported extra packages: ${Object.keys(extra_packages_1.EXTRA_PACKAGES).join(', ')}.`); | |
| } | |
| const { dependencies, devDependencies, optionalDependencies, peerDependencies, } = studio_server_1.StudioServerInternals.getInstalledDependencies(remotionRoot); | |
| // Check if packages are already installed | |
| const allDeps = [ | |
| ...dependencies, | |
| ...devDependencies, | |
| ...optionalDependencies, | |
| ...peerDependencies, | |
| ]; | |
| const alreadyInstalled = []; | |
| const toInstall = []; | |
| const toUpgrade = []; | |
| for (const pkg of packageNames) { | |
| const isInstalled = allDeps.includes(pkg); | |
| const requiredVersion = extra_packages_1.EXTRA_PACKAGES[pkg]; | |
| if (!isInstalled) { | |
| toInstall.push(pkg); | |
| } | |
| else if (requiredVersion) { | |
| // For extra packages, check if the version is correct | |
| const installedVersion = getInstalledVersion(remotionRoot, pkg); | |
| if (installedVersion !== requiredVersion) { | |
| toUpgrade.push({ | |
| pkg, | |
| from: installedVersion !== null && installedVersion !== void 0 ? installedVersion : 'unknown', | |
| to: requiredVersion, | |
| }); | |
| toInstall.push(pkg); | |
| } | |
| else { | |
| alreadyInstalled.push(pkg); | |
| } | |
| } | |
| else { | |
| alreadyInstalled.push(pkg); | |
| } | |
| } | |
| // Log already installed packages | |
| for (const pkg of alreadyInstalled) { | |
| log_1.Log.info({ indent: false, logLevel }, `○ ${pkg} ${chalk_1.chalk.gray('(already installed)')}`); | |
| } | |
| // Log packages that will be upgraded | |
| for (const { pkg, from, to } of toUpgrade) { | |
| log_1.Log.info({ indent: false, logLevel }, `↑ ${pkg} ${chalk_1.chalk.yellow(`${from} → ${to}`)}`); | |
| } | |
| // If nothing to install, return early | |
| if (toInstall.length === 0) { | |
| return; | |
| } | |
| const installedRemotionPackages = list_of_remotion_packages_1.listOfRemotionPackages.filter((pkg) => allDeps.includes(pkg)); | |
| // Get the version from the first installed Remotion package | |
| const packageJsonPath = `${remotionRoot}/node_modules/${installedRemotionPackages[0]}/package.json`; | |
| let targetVersion = null; | |
| if (installedRemotionPackages.length > 0) { | |
| try { | |
| const packageJson = require(packageJsonPath); | |
| targetVersion = packageJson.version; | |
| const packageList = toInstall.length === 1 | |
| ? toInstall[0] | |
| : `${toInstall.length} packages (${toInstall.join(', ')})`; | |
| log_1.Log.info({ indent: false, logLevel }, `Installing ${packageList}`); | |
| } | |
| catch (err) { | |
| throw new Error(`Could not determine version of installed Remotion packages: ${err.message}`); | |
| } | |
| } | |
| else { | |
| // If no Remotion packages are installed, we can only install extra packages | |
| const notExtraPackages = toInstall.filter((pkg) => !extra_packages_1.EXTRA_PACKAGES[pkg]); | |
| if (notExtraPackages.length > 0) { | |
| throw new Error('No Remotion packages found in your project. Install Remotion first.'); | |
| } | |
| } | |
| const manager = studio_server_1.StudioServerInternals.getPackageManager({ | |
| remotionRoot, | |
| packageManager, | |
| dirUp: 0, | |
| logLevel, | |
| }); | |
| if (manager === 'unknown') { | |
| throw new Error(`No lockfile was found in your project (one of ${studio_server_1.StudioServerInternals.lockFilePaths | |
| .map((p) => p.path) | |
| .join(', ')}). Install dependencies using your favorite manager!`); | |
| } | |
| const packagesWithVersions = toInstall.map((pkg) => { | |
| if (extra_packages_1.EXTRA_PACKAGES[pkg]) { | |
| return `${pkg}@${extra_packages_1.EXTRA_PACKAGES[pkg]}`; | |
| } | |
| const localPackageOverride = studio_server_1.StudioServerInternals.getLocalPackageOverride({ | |
| remotionRoot, | |
| packageName: pkg, | |
| }); | |
| if (localPackageOverride !== null) { | |
| return `${pkg}@${localPackageOverride}`; | |
| } | |
| return `${pkg}@${targetVersion}`; | |
| }); | |
| const command = studio_server_1.StudioServerInternals.getInstallCommand({ | |
| manager: manager.manager, | |
| packages: packagesWithVersions, | |
| version: '', | |
| additionalArgs: args, | |
| }); | |
| log_1.Log.info({ indent: false, logLevel }, chalk_1.chalk.gray(`$ ${manager.manager} ${command.join(' ')}`)); | |
| const task = (0, node_child_process_1.spawn)(manager.manager, command, { | |
| env: { | |
| ...process.env, | |
| ADBLOCK: '1', | |
| DISABLE_OPENCOLLECTIVE: '1', | |
| npm_config_loglevel: 'error', | |
| }, | |
| stdio: renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'info') | |
| ? 'inherit' | |
| : 'ignore', | |
| ...studio_server_1.StudioServerInternals.getPackageManagerSpawnOptions(), | |
| }); | |
| await new Promise((resolve, reject) => { | |
| task.on('error', (err) => { | |
| reject(err); | |
| }); | |
| task.on('close', (code) => { | |
| if (code === 0) { | |
| resolve(); | |
| } | |
| else if (renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'info')) { | |
| reject(new Error(`Failed to install packages, see logs above`)); | |
| } | |
| else { | |
| reject(new Error(`Failed to install packages, run with --log=info to see logs`)); | |
| } | |
| }); | |
| }); | |
| const upgradedPkgs = new Set(toUpgrade.map((u) => u.pkg)); | |
| for (const pkg of toInstall) { | |
| if (upgradedPkgs.has(pkg)) { | |
| // Already logged as upgrade | |
| continue; | |
| } | |
| if (extra_packages_1.EXTRA_PACKAGES[pkg]) { | |
| log_1.Log.info({ indent: false, logLevel }, `+ ${pkg}@${extra_packages_1.EXTRA_PACKAGES[pkg]}`); | |
| } | |
| else { | |
| log_1.Log.info({ indent: false, logLevel }, `+ ${pkg}@${targetVersion}`); | |
| } | |
| } | |
| }; | |
| exports.addCommand = addCommand; | |
Xet Storage Details
- Size:
- 7.66 kB
- Xet hash:
- f2da26a99e456530e1d7f74b78df8f1bb390407ebb0751235187dc480c54a6d6
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.