@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
JavaScript
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
};