UNPKG

@wix/cli

Version:

CLI tool for building Wix sites and applications

252 lines (241 loc) 7.38 kB
import { createRequire as _createRequire } from 'node:module'; const require = _createRequire(import.meta.url); import { npmDependenciesLockFileResponseSchema, resolveNpmDependenciesSchema } from "./chunk-KB3GWH37.js"; import { httpRequest } from "./chunk-LU4JUEPY.js"; import { VELO_DEPENDENCIES_CONFIG_PATH, getVeloDependenciesConfigPath, veloDependenciesConfigSchema } from "./chunk-4BLGYECY.js"; import { getResolveNpmDependenciesResult, resolveNpmDependencies } from "./chunk-YLCFL3QA.js"; import { NPM, Yarn, createPackageManager, getRepoType } from "./chunk-7QJUAJW3.js"; import { isHttpError, pWaitFor } from "./chunk-CCWE4DS6.js"; import { DEPENDENCIES_METADATA_FILENAME, WIX_LOCK_FILENAME } from "./chunk-4UTFAKA5.js"; import { outputFile, pathExists, readJson, writeJson } from "./chunk-TLLAD5LU.js"; import { CliError, CliErrorCode } from "./chunk-CO5A7CZG.js"; import { init_esm_shims } from "./chunk-EXLZF52D.js"; // ../cli-site-old/src/velo-npm/any-npm-migration.ts init_esm_shims(); import { unlink } from "node:fs/promises"; // ../cli-site-old/src/files/package-json.ts init_esm_shims(); import { join } from "node:path"; async function getDependencies(projectFolder) { const packageJsonPath = join(projectFolder, "package.json"); const packageJson = await readJson(packageJsonPath); return Object.entries(packageJson.dependencies ?? {}).map( ([name, version]) => ({ name, version }) ); } async function addDependenciesToPackageJson(projectFolder, dependenciesConfig) { const packageJsonPath = join(projectFolder, "package.json"); const packageJson = await readJson(packageJsonPath); if (packageJson.dependencies && Object.keys(packageJson.dependencies).length > 0) { throw new CliError({ code: CliErrorCode.FailedMigrationToAnyNpm(), cause: null }); } packageJson.dependencies = {}; for (const dependencyPackageName of Object.keys( dependenciesConfig.dependencies )) { if (packageJson.devDependencies?.[dependencyPackageName]) { delete packageJson.devDependencies[dependencyPackageName]; } packageJson.dependencies[dependencyPackageName] = dependenciesConfig.dependencies[dependencyPackageName]; } await writeJson(packageJsonPath, packageJson); } // ../cli-site-old/src/files/velo.dependencies.ts init_esm_shims(); async function loadDependenciesConfig(projectFolder) { const configFile = await readJson( getVeloDependenciesConfigPath(projectFolder) ); try { return veloDependenciesConfigSchema.parse(configFile); } catch (e) { throw new CliError({ code: CliErrorCode.InvalidVeloConfigJson({ configFilename: VELO_DEPENDENCIES_CONFIG_PATH }), cause: e }); } } // ../cli-site-old/src/velo-npm/any-npm-migration.ts var migrateToAnyNpmIfNeeded = async (root, logger) => { const oldDependenciesFilePath = getVeloDependenciesConfigPath(root); if (await pathExists(oldDependenciesFilePath)) { try { logger.logMigratingToAnyNpm(); const oldVeloDeps = await loadDependenciesConfig(root); await addDependenciesToPackageJson(root, oldVeloDeps); await unlink(oldDependenciesFilePath); logger.logMigrationToAnyNpmCompletedSuccessfully(); } catch (ex) { logger.logMigrationToAnyNpmFailed(); throw ex; } } }; // ../cli-site-old/src/velo-npm/client.ts init_esm_shims(); // ../cli-site-old/src/files/wix.lock.ts init_esm_shims(); import { join as join2 } from "node:path"; async function saveWixLock(projectFolder, lockFileContent) { const wixLockPath = join2(projectFolder, WIX_LOCK_FILENAME); try { await outputFile(wixLockPath, lockFileContent); } catch (e) { throw new CliError({ code: CliErrorCode.FailedToWriteWixLock(), cause: e }); } } // ../cli-site-old/src/files/dependencies-metadata.ts init_esm_shims(); import { join as join3 } from "node:path"; async function saveDependenciesMetadata(projectFolder, metadataContent) { const metadataPath = join3(projectFolder, DEPENDENCIES_METADATA_FILENAME); try { await writeJson(metadataPath, metadataContent); } catch (e) { throw new CliError({ code: CliErrorCode.FailedToWriteDependenciesMetadata(), cause: e }); } } // ../cli-site-old/src/velo-npm/client.ts var waitForInstallationCompleted = async (jobId, { authState }) => { try { return await pWaitFor( async () => { try { const { data } = await httpRequest( { type: "editor", authState }, getResolveNpmDependenciesResult({ jobId }) ); const npmDependenciesLockFileResponse = npmDependenciesLockFileResponseSchema.parse(data); const { npmDependenciesLockFile, dependenciesMetadataUrl } = npmDependenciesLockFileResponse.result; return pWaitFor.resolveWith({ wixLockFileUrl: npmDependenciesLockFile, dependenciesMetadataUrl }); } catch (e) { if (isHttpError(e) && e.response?.status === 428) { return false; } throw e; } }, { // Poll each 3 seconds interval: 3 * 1e3, // Fail if 5 minutes passed timeout: 5 * 60 * 1e3 } ); } catch (e) { throw new CliError({ code: CliErrorCode.FailedToGetResolveNpmDependenciesResult(), cause: e, info: { jobId } }); } }; var fetchAndSaveWixLock = async (url, root) => { const wixLockContent = await httpRequest( { type: "standalone" }, { url } ); return saveWixLock(root, wixLockContent.data); }; var fetchDependenciesMetadata = async (url) => { const metadataResponse = await httpRequest( { type: "standalone" }, { url } ); return metadataResponse.data; }; var fetchAndSaveDependenciesMetadata = async (url, root) => { const metadata = await fetchDependenciesMetadata(url); return saveDependenciesMetadata(root, metadata); }; var resolveNpmDependencies2 = async (root, { authState }) => { try { const npmPackageInfos = await getDependencies(root); const { data: resolveNpmDependenciesResponse } = await httpRequest( { type: "editor", authState }, resolveNpmDependencies({ npmPackageInfos }) ); const { jobId } = resolveNpmDependenciesSchema.parse( resolveNpmDependenciesResponse ); const { wixLockFileUrl, dependenciesMetadataUrl } = await waitForInstallationCompleted(jobId, { authState }); await Promise.all([ fetchAndSaveWixLock(wixLockFileUrl, root), ...dependenciesMetadataUrl ? [fetchAndSaveDependenciesMetadata(dependenciesMetadataUrl, root)] : [] ]); } catch (e) { throw new CliError({ code: CliErrorCode.FailedToResolveNpmDependencies(), cause: e }); } }; // ../cli-site-old/src/velo-npm/package-manager.ts init_esm_shims(); async function resolvePackageManager(projectFolder, options) { const repoType = await getRepoType(projectFolder); if (options.yarn) { return new Yarn(repoType, "yarn"); } if (options.npm) { return new NPM(repoType); } return createPackageManager(repoType); } // ../cli-site-old/src/velo-npm/index.ts init_esm_shims(); export { migrateToAnyNpmIfNeeded, resolveNpmDependencies2 as resolveNpmDependencies, resolvePackageManager }; //# sourceMappingURL=chunk-TOVDGPFW.js.map