@alexaegis/workspace-tools
Version:
Tools for working with javascript workspaces
97 lines (96 loc) • 4.98 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const common = require("@alexaegis/common");
const promises = require("node:fs/promises");
const node_path = require("node:path");
const getWorkspaceRoot_function = require("./get-workspace-root.function-CMUtTfQo.cjs");
const fs = require("@alexaegis/fs");
require("@alexaegis/match");
require("globby");
require("@alexaegis/logging");
const collectWorkspacePackages_function = require("./collect-workspace-packages.function-B3ZKOmy6.cjs");
const getCurrentPackageRoot_function = require("./get-current-package-root.function-DIHUjdOv.cjs");
const normalizePackageJsonWorkspacesField_function = require("./normalize-package-json-workspaces-field.function-CRz5SkKY.cjs");
const normalizeJsonSortingPreference_function = require("./normalize-json-sorting-preference.function-DsIbJhip.cjs");
const GITIGNORE_FILENAME = ".gitignore";
const normalizeCollectIgnoreEntriesOptions = (options) => {
return {
...getWorkspaceRoot_function.normalizeCollectFileDirnamesUpDirectoryTreeOptions(options),
ignoreFileName: options?.ignoreFileName ?? GITIGNORE_FILENAME
};
};
const splitAndStripHashComments = (content) => {
return content.split(fs.NEWLINE).map((line) => line.replace(fs.HASH_COMMENT, "").trim()).filter((line) => !!line);
};
const collectIgnoreEntries = async (rawOptions) => {
const options = normalizeCollectIgnoreEntriesOptions(rawOptions);
const workspaceRoot = getWorkspaceRoot_function.getWorkspaceRoot();
if (!workspaceRoot) {
throw new Error("Not in a workspace!");
}
const ignoreFileDirnames = getWorkspaceRoot_function.collectFileDirnamePathsUpDirectoryTree(
options.ignoreFileName,
options
);
const ignoreFilePathsWithinWorkspace = ignoreFileDirnames.filter((ignoreFileDirname) => ignoreFileDirname.startsWith(workspaceRoot)).map((ignoreFileDirname) => node_path.join(ignoreFileDirname, options.ignoreFileName));
const ignoreFileLines = await common.asyncFilterMap(
ignoreFilePathsWithinWorkspace,
async (ignoreFile) => {
const gitIgnoreFile = await promises.readFile(ignoreFile, {
encoding: "utf8"
});
return splitAndStripHashComments(gitIgnoreFile);
}
);
return ignoreFileLines.flat();
};
const getPackageJsonTemplateVariables = (packageJson) => {
const packageName = packageJson.name ?? "";
let packageOrg;
let packageNameWithoutOrg = packageName;
if (packageName.includes("/")) {
const [splitPackageOrg, ...splitPackageName] = packageName.split("/");
packageOrg = splitPackageOrg;
packageNameWithoutOrg = splitPackageName.join("/");
}
return {
packageOrg: packageOrg ?? "",
packageName,
packageNameWithoutOrg
};
};
const isPackageJsonDependencyField = (field) => {
return getWorkspaceRoot_function.PACKAGE_JSON_DEPENDENCY_FIELDS.includes(field);
};
const getEncodedArchetype = (archetypeMatcher) => {
if (!archetypeMatcher || typeof archetypeMatcher === "function") {
return "";
}
const orderedValues = [
archetypeMatcher.platform,
archetypeMatcher.framework,
archetypeMatcher.language,
archetypeMatcher.kind,
archetypeMatcher.bundler,
archetypeMatcher.testing
];
return orderedValues.filter((value) => typeof value === "string").join("-");
};
exports.NODE_MODULES_DIRECTORY_NAME = getWorkspaceRoot_function.NODE_MODULES_DIRECTORY_NAME;
exports.PACKAGE_JSON_DEPENDENCY_FIELDS = getWorkspaceRoot_function.PACKAGE_JSON_DEPENDENCY_FIELDS;
exports.PACKAGE_JSON_NAME = getWorkspaceRoot_function.PACKAGE_JSON_NAME;
exports.PNPM_WORKSPACE_FILE_NAME = getWorkspaceRoot_function.PNPM_WORKSPACE_FILE_NAME;
exports.collectFileDirnamePathsUpDirectoryTree = getWorkspaceRoot_function.collectFileDirnamePathsUpDirectoryTree;
exports.getWorkspaceRoot = getWorkspaceRoot_function.getWorkspaceRoot;
exports.collectWorkspacePackages = collectWorkspacePackages_function.collectWorkspacePackages;
exports.normalizeCollectWorkspacePackagesOptions = collectWorkspacePackages_function.normalizeCollectWorkspacePackagesOptions;
exports.getCurrentPackageRoot = getCurrentPackageRoot_function.getCurrentPackageRoot;
exports.normalizePackageJsonWorkspacesField = normalizePackageJsonWorkspacesField_function.normalizePackageJsonWorkspacesField;
exports.DEFAULT_PACKAGE_JSON_SORTING_PREFERENCE = normalizeJsonSortingPreference_function.DEFAULT_PACKAGE_JSON_SORTING_PREFERENCE;
exports.createJsonSortingPreferenceNormalizer = normalizeJsonSortingPreference_function.createJsonSortingPreferenceNormalizer;
exports.normalizeSortingPreferenceForPackageJson = normalizeJsonSortingPreference_function.normalizeSortingPreferenceForPackageJson;
exports.collectIgnoreEntries = collectIgnoreEntries;
exports.getEncodedArchetype = getEncodedArchetype;
exports.getPackageJsonTemplateVariables = getPackageJsonTemplateVariables;
exports.isPackageJsonDependencyField = isPackageJsonDependencyField;
exports.splitAndStripHashComments = splitAndStripHashComments;