@storm-software/cloudflare-tools
Version:
A Nx plugin package that contains various executors, generators, and utilities that assist in managing Cloudflare services.
150 lines (143 loc) • 3.81 kB
JavaScript
// ../workspace-tools/src/utils/package-helpers.ts
import {
joinPathFragments,
readJsonFile
} from "@nx/devkit";
// ../config-tools/src/utilities/toml.ts
import TOML from "@ltd/j-toml";
function parseCargoToml(cargoString) {
if (!cargoString) {
throw new Error("Cargo.toml is empty");
}
return TOML.parse(cargoString, {
x: { comment: true }
});
}
// ../workspace-tools/src/utils/package-helpers.ts
import { execFileSync } from "child_process";
import { existsSync } from "node:fs";
import { readFile, writeFile } from "node:fs/promises";
import { dirname, resolve } from "path";
import { format } from "prettier";
// ../workspace-tools/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 = (variant, value) => {
return `${variant}:${value}`;
};
var hasProjectTag = (project, variant) => {
project.tags = project.tags ?? [];
const prefix = formatProjectTag(variant, "");
return project.tags.some(
(tag) => tag.startsWith(prefix) && tag.length > prefix.length
);
};
var getProjectTag = (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, "");
};
var isEqualProjectTag = (project, variant, value) => {
const tag = getProjectTag(project, variant);
return !!(tag && tag?.toUpperCase() === value.toUpperCase());
};
var addProjectTag = (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));
}
};
// ../workspace-tools/src/utils/package-helpers.ts
var getPackageInfo = (project) => {
if (isEqualProjectTag(
project,
ProjectTagConstants.Language.TAG_ID,
ProjectTagConstants.Language.RUST
) && existsSync(joinPathFragments(project.root, "Cargo.toml"))) {
return {
type: "Cargo.toml",
content: parseCargoToml(joinPathFragments(project.root, "Cargo.toml"))
};
} else if (isEqualProjectTag(
project,
ProjectTagConstants.Language.TAG_ID,
ProjectTagConstants.Language.TYPESCRIPT
) && existsSync(joinPathFragments(project.root, "package.json"))) {
return {
type: "package.json",
content: readJsonFile(
joinPathFragments(project.root, "package.json")
)
};
}
return null;
};
// ../workspace-tools/src/utils/create-cli-options.ts
import { names } from "@nx/devkit";
function createCliOptions(obj) {
const args = [];
for (const key in obj) {
const value = obj[key];
if (value) {
const arg = names(key).fileName;
if (Array.isArray(value)) {
args.push(
`--${arg.toLowerCase()}=${value.map((v) => v.trim()).join(",")}`
);
} else {
args.push(`--${arg.toLowerCase()}=${value}`);
}
}
}
return args;
}
export {
ProjectTagConstants,
addProjectTag,
getPackageInfo,
createCliOptions
};