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