UNPKG

@storm-software/workspace-tools

Version:

Tools for managing a Storm workspace, including various Nx generators and executors for common development tasks.

131 lines (127 loc) 4.11 kB
import { __name } from "./chunk-2BPV2XV2.mjs"; // src/utils/lock-file.ts import { output, readJsonFile, workspaceRoot } from "@nx/devkit"; import { existsSync } from "node:fs"; import { join } from "node:path"; import { getNpmLockfileDependencies, getNpmLockfileNodes } from "nx/src/plugins/js/lock-file/npm-parser"; import { getPnpmLockfileDependencies, getPnpmLockfileNodes } from "nx/src/plugins/js/lock-file/pnpm-parser"; import { getYarnLockfileDependencies, getYarnLockfileNodes } from "nx/src/plugins/js/lock-file/yarn-parser"; var YARN_LOCK_FILE = "yarn.lock"; var NPM_LOCK_FILE = "package-lock.json"; var PNPM_LOCK_FILE = "pnpm-lock.yaml"; var LOCK_FILES = [ YARN_LOCK_FILE, NPM_LOCK_FILE, PNPM_LOCK_FILE ]; var YARN_LOCK_PATH = join(workspaceRoot, YARN_LOCK_FILE); var NPM_LOCK_PATH = join(workspaceRoot, NPM_LOCK_FILE); var PNPM_LOCK_PATH = join(workspaceRoot, PNPM_LOCK_FILE); function getLockFileNodes(packageManager, contents, lockFileHash, context) { try { if (packageManager === "yarn") { const packageJson = readJsonFile(join(context.workspaceRoot, "package.json")); return getYarnLockfileNodes(contents, lockFileHash, packageJson); } if (packageManager === "pnpm") { return getPnpmLockfileNodes(contents, lockFileHash); } if (packageManager === "npm") { return getNpmLockfileNodes(contents, lockFileHash); } } catch (e) { if (!isPostInstallProcess()) { output.error({ title: `Failed to parse ${packageManager} lockfile`, bodyLines: errorBodyLines(e) }); } throw e; } throw new Error(`Unknown package manager: ${packageManager}`); } __name(getLockFileNodes, "getLockFileNodes"); function getLockFileDependencies(packageManager, contents, lockFileHash, context) { try { if (packageManager === "yarn") { return getYarnLockfileDependencies(contents, lockFileHash, context); } if (packageManager === "pnpm") { return getPnpmLockfileDependencies(contents, lockFileHash, context); } if (packageManager === "npm") { return getNpmLockfileDependencies(contents, lockFileHash, context); } } catch (e) { if (!isPostInstallProcess()) { output.error({ title: `Failed to parse ${packageManager} lockfile`, bodyLines: errorBodyLines(e) }); } throw e; } throw new Error(`Unknown package manager: ${packageManager}`); } __name(getLockFileDependencies, "getLockFileDependencies"); function lockFileExists(packageManager) { if (packageManager === "yarn") { return existsSync(YARN_LOCK_PATH); } if (packageManager === "pnpm") { return existsSync(PNPM_LOCK_PATH); } if (packageManager === "npm") { return existsSync(NPM_LOCK_PATH); } throw new Error(`Unknown package manager ${packageManager} or lock file missing`); } __name(lockFileExists, "lockFileExists"); function getLockFileName(packageManager) { if (packageManager === "yarn") { return YARN_LOCK_FILE; } if (packageManager === "pnpm") { return PNPM_LOCK_FILE; } if (packageManager === "npm") { return NPM_LOCK_FILE; } throw new Error(`Unknown package manager: ${packageManager}`); } __name(getLockFileName, "getLockFileName"); function errorBodyLines(originalError, additionalInfo = []) { const result = [ "Please open an issue at `https://github.com/storm-software/storm-ops/issues/new?template=1-bug.yml` and provide a reproduction.", ...additionalInfo ]; if (originalError.message) { result.push(` Original error: ${originalError.message} `); } if (originalError.stack) { result.push(originalError.stack); } return result; } __name(errorBodyLines, "errorBodyLines"); function isPostInstallProcess() { return process.env.npm_command === "install" && process.env.npm_lifecycle_event === "postinstall"; } __name(isPostInstallProcess, "isPostInstallProcess"); export { YARN_LOCK_FILE, NPM_LOCK_FILE, PNPM_LOCK_FILE, LOCK_FILES, YARN_LOCK_PATH, NPM_LOCK_PATH, PNPM_LOCK_PATH, getLockFileNodes, getLockFileDependencies, lockFileExists, getLockFileName };