UNPKG

@storm-software/workspace-tools

Version:

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

103 lines (100 loc) 3.52 kB
import { __name } from "./chunk-2BPV2XV2.mjs"; // src/utils/project-tags.ts var ProjectTagConstants = { Language: { TAG_ID: "language", TYPESCRIPT: "typescript", RUST: "rust" }, ProjectType: { TAG_ID: "type", LIBRARY: "library", APPLICATION: "application" }, DistStyle: { TAG_ID: "dist-style", NORMAL: "normal", CLEAN: "clean" }, Provider: { TAG_ID: "provider" }, Platform: { TAG_ID: "platform", NODE: "node", BROWSER: "browser", NEUTRAL: "neutral", WORKER: "worker" }, Registry: { TAG_ID: "registry", CARGO: "cargo", NPM: "npm", CONTAINER: "container", CYCLONE: "cyclone" }, Plugin: { TAG_ID: "plugin" } }; var formatProjectTag = /* @__PURE__ */ __name((variant, value) => { return `${variant}:${value}`; }, "formatProjectTag"); var hasProjectTag = /* @__PURE__ */ __name((project, variant) => { project.tags = project.tags ?? []; const prefix = formatProjectTag(variant, ""); return project.tags.some((tag) => tag.startsWith(prefix) && tag.length > prefix.length); }, "hasProjectTag"); var getProjectTag = /* @__PURE__ */ __name((project, variant) => { if (!hasProjectTag(project, variant)) { return void 0; } project.tags = project.tags ?? []; const prefix = formatProjectTag(variant, ""); const tag = project.tags.find((tag2) => tag2.startsWith(prefix)); return tag?.replace(prefix, ""); }, "getProjectTag"); var isEqualProjectTag = /* @__PURE__ */ __name((project, variant, value) => { const tag = getProjectTag(project, variant); return !!(tag && tag?.toUpperCase() === value.toUpperCase()); }, "isEqualProjectTag"); var addProjectTag = /* @__PURE__ */ __name((project, variant, value, options = { overwrite: false }) => { project.tags = project.tags ?? []; if (options.overwrite || !hasProjectTag(project, variant)) { project.tags = project.tags.filter((tag) => !tag.startsWith(formatProjectTag(variant, ""))); project.tags.push(formatProjectTag(variant, value)); } }, "addProjectTag"); var addPluginProjectTag = /* @__PURE__ */ __name((project, plugin) => { project.tags = project.tags ?? []; project.tags.push(formatProjectTag(ProjectTagConstants.Plugin.TAG_ID, plugin)); }, "addPluginProjectTag"); var setDefaultProjectTags = /* @__PURE__ */ __name((project, plugin) => { project.tags = project.tags ?? []; addProjectTag(project, ProjectTagConstants.ProjectType.TAG_ID, project.projectType === "application" ? ProjectTagConstants.ProjectType.APPLICATION : ProjectTagConstants.ProjectType.LIBRARY, { overwrite: true }); addProjectTag(project, ProjectTagConstants.DistStyle.TAG_ID, project.targets && Object.keys(project.targets).includes("clean-package") ? ProjectTagConstants.DistStyle.CLEAN : ProjectTagConstants.DistStyle.NORMAL, { overwrite: true }); addProjectTag(project, ProjectTagConstants.Platform.TAG_ID, project.targets?.build?.options.platform === "node" ? ProjectTagConstants.Platform.NODE : project.targets?.build?.options.platform === "worker" ? ProjectTagConstants.Platform.WORKER : project.targets?.build?.options.platform === "browser" ? ProjectTagConstants.Platform.BROWSER : ProjectTagConstants.Platform.NEUTRAL, { overwrite: false }); if (plugin) { addPluginProjectTag(project, plugin); } }, "setDefaultProjectTags"); export { ProjectTagConstants, formatProjectTag, hasProjectTag, getProjectTag, isEqualProjectTag, addProjectTag, addPluginProjectTag, setDefaultProjectTags };