UNPKG

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