@storm-software/workspace-tools
Version:
Tools for managing a Storm workspace, including various Nx generators and executors for common development tasks.
74 lines (71 loc) • 3.09 kB
JavaScript
import {
ProjectTagConstants,
getProjectTag
} from "./chunk-HUVBVDJ7.mjs";
import {
__name
} from "./chunk-2BPV2XV2.mjs";
// src/utils/plugin-helpers.ts
import { readJsonFile } from "@nx/devkit";
import defu from "defu";
import { existsSync } from "node:fs";
import { dirname, join } from "node:path";
var getProjectPlatform = /* @__PURE__ */ __name((project, ignoreTags = false) => {
const tsconfigJson = readJsonFile(join(project.root, "tsconfig.json"));
if (!tsconfigJson) {
throw new Error(`No tsconfig.json found in project root: ${project.root}`);
}
const packageJson = readJsonFile(join(project.root, "package.json"));
if (!packageJson) {
throw new Error(`No package.json found in project root: ${project.root}`);
}
let platformTag = void 0;
if (!ignoreTags) {
platformTag = getProjectTag(project, ProjectTagConstants.Platform.TAG_ID);
}
if (platformTag !== ProjectTagConstants.Platform.NEUTRAL) {
const types = Array.isArray(tsconfigJson.compilerOptions?.types) ? tsconfigJson.compilerOptions.types : [];
if (platformTag === ProjectTagConstants.Platform.WORKER || types.some((type) => type.toLowerCase() === "@cloudflare/workers-types") || packageJson.devDependencies?.["@cloudflare/workers-types"] || packageJson.devDependencies?.["wrangler"]) {
return "worker";
}
if (platformTag === ProjectTagConstants.Platform.NODE || types?.some((type) => type.toLowerCase() === "node") || packageJson.devDependencies?.["@types/node"]) {
return "node";
}
if (platformTag === ProjectTagConstants.Platform.BROWSER || types?.some((type) => type.toLowerCase() === "dom") || packageJson.dependencies && Object.keys(packageJson.dependencies).some((dependency) => dependency.includes("react")) || packageJson.devDependencies && Object.keys(packageJson.devDependencies).some((devDependency) => devDependency.includes("react"))) {
return "browser";
}
}
return "neutral";
}, "getProjectPlatform");
var getProjectConfigFromProjectJsonPath = /* @__PURE__ */ __name((projectJsonPath, packageJson) => {
return getProjectConfigFromProjectRoot(dirname(projectJsonPath), packageJson);
}, "getProjectConfigFromProjectJsonPath");
var getProjectConfigFromProjectRoot = /* @__PURE__ */ __name((projectRoot, packageJson) => {
const { nx, name } = packageJson;
const projectJson = readJsonFile(join(projectRoot, "project.json"));
return defu(nx ?? {}, projectJson, {
targets: {},
tags: [],
name,
root: projectRoot
});
}, "getProjectConfigFromProjectRoot");
var getProjectRoot = /* @__PURE__ */ __name((configPath, workspaceRoot) => {
try {
const root = dirname(configPath);
const projectRoot = join(workspaceRoot, root);
if (!existsSync(join(projectRoot, "package.json")) && !existsSync(join(projectRoot, "project.json"))) {
return null;
}
return projectRoot;
} catch (error_) {
console.error(error_);
return null;
}
}, "getProjectRoot");
export {
getProjectPlatform,
getProjectConfigFromProjectJsonPath,
getProjectConfigFromProjectRoot,
getProjectRoot
};