@alexaegis/workspace-tools
Version:
Tools for working with javascript workspaces
131 lines (130 loc) • 6.22 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const require_get_workspace_root_function = require("./get-workspace-root.function-BKR-FeN5.cjs");
const require_get_root_package_json_function = require("./get-root-package-json.function-DWdZuWlE.cjs");
const require_monorepo = require("./monorepo-BmQlwwyA.cjs");
const require_npm = require("./npm-B2FWU_xL.cjs");
const require_sort = require("./sort-DbdqyQxk.cjs");
let _alexaegis_common = require("@alexaegis/common");
let node_fs_promises = require("node:fs/promises");
let node_path = require("node:path");
let _alexaegis_fs = require("@alexaegis/fs");
//#region src/ignore/collect-ignore-entries.function.options.ts
var GITIGNORE_FILENAME = ".gitignore";
var normalizeCollectIgnoreEntriesOptions = (options) => {
return {
...require_get_workspace_root_function.normalizeCollectFileDirnamesUpDirectoryTreeOptions(options),
ignoreFileName: options?.ignoreFileName ?? ".gitignore"
};
};
//#endregion
//#region src/ignore/parse-ignore-file.function.ts
/**
* Strips out comments from lines, returns the then non-empty lines.
* It is meant for ignore files like `.gitignore` but all it does is split
* a string line by line and strip hash comments off so the name is more
* generic too
*
* @param content content of a file like .gitignore
*
* @example a file like
*
* ```text
* foo
* bar
*
* # comment
*
*
* zed # comment
* #
* ```
*
* will be parsed as ['foo', 'bar', 'zed'] by this function
*/
var splitAndStripHashComments = (content) => {
return content.split(_alexaegis_fs.NEWLINE).map((line) => line.replace(_alexaegis_fs.HASH_COMMENT, "").trim()).filter((line) => !!line);
};
//#endregion
//#region src/ignore/collect-ignore-entries.function.ts
/**
* Collects every ignore entry within a workspace affecting cwd
* It will only collect ignore
*
* @param rawOptions by default ignoreFile is `.gitignore`
*/
var collectIgnoreEntries = async (rawOptions) => {
const options = normalizeCollectIgnoreEntriesOptions(rawOptions);
const workspaceRoot = require_get_workspace_root_function.getWorkspaceRoot();
if (!workspaceRoot) throw new Error("Not in a workspace!");
return (await (0, _alexaegis_common.asyncFilterMap)(require_get_workspace_root_function.collectFileDirnamePathsUpDirectoryTree(options.ignoreFileName, options).filter((ignoreFileDirname) => ignoreFileDirname.startsWith(workspaceRoot)).map((ignoreFileDirname) => (0, node_path.join)(ignoreFileDirname, options.ignoreFileName)), async (ignoreFile) => {
return splitAndStripHashComments(await (0, node_fs_promises.readFile)(ignoreFile, { encoding: "utf8" }));
})).flat();
};
//#endregion
//#region src/package-json/get-package-json-template-variables.function.ts
var 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
};
};
//#endregion
//#region src/package-json/is-package-json-dependency-field.function.ts
/**
* Returns true for 'dependencies', 'devDependencies',
* 'optionalDependencies' and 'peerDependencies'
*/
var isPackageJsonDependencyField = (field) => {
return require_get_workspace_root_function.PACKAGE_JSON_DEPENDENCY_FIELDS.includes(field);
};
//#endregion
//#region src/package-json/package-archetype.interface.ts
/**
* This will return names for when you want to denote the archetype in a
* filename: `tsconfig.web-svelte-lib.json` or `tsconfig.node-lib.json`
*/
var getEncodedArchetype = (archetypeMatcher) => {
if (!archetypeMatcher || typeof archetypeMatcher === "function") return "";
return [
archetypeMatcher.platform,
archetypeMatcher.framework,
archetypeMatcher.language,
archetypeMatcher.kind,
archetypeMatcher.bundler,
archetypeMatcher.testing
].filter((value) => typeof value === "string").join("-");
};
//#endregion
exports.DEFAULT_PACKAGE_JSON_SORTING_PREFERENCE = require_sort.DEFAULT_PACKAGE_JSON_SORTING_PREFERENCE;
exports.GITIGNORE_FILENAME = GITIGNORE_FILENAME;
exports.NODE_MODULES_DIRECTORY_NAME = require_get_workspace_root_function.NODE_MODULES_DIRECTORY_NAME;
exports.PACKAGE_JSON_DEPENDENCY_FIELDS = require_get_workspace_root_function.PACKAGE_JSON_DEPENDENCY_FIELDS;
exports.PACKAGE_JSON_NAME = require_get_workspace_root_function.PACKAGE_JSON_NAME;
exports.PNPM_WORKSPACE_FILE_NAME = require_get_workspace_root_function.PNPM_WORKSPACE_FILE_NAME;
exports.collectFileDirnamePathsUpDirectoryTree = require_get_workspace_root_function.collectFileDirnamePathsUpDirectoryTree;
exports.collectIgnoreEntries = collectIgnoreEntries;
exports.collectWorkspacePackages = require_monorepo.collectWorkspacePackages;
exports.createJsonSortingPreferenceNormalizer = require_sort.createJsonSortingPreferenceNormalizer;
exports.getCurrentPackageRoot = require_npm.getCurrentPackageRoot;
exports.getEncodedArchetype = getEncodedArchetype;
exports.getPackageJsonTemplateVariables = getPackageJsonTemplateVariables;
exports.getRootPackageJson = require_get_root_package_json_function.getRootPackageJson;
exports.getWorkspaceRoot = require_get_workspace_root_function.getWorkspaceRoot;
exports.isPackageJsonDependencyField = isPackageJsonDependencyField;
exports.normalizeCollectFileDirnamesUpDirectoryTreeOptions = require_get_workspace_root_function.normalizeCollectFileDirnamesUpDirectoryTreeOptions;
exports.normalizeCollectIgnoreEntriesOptions = normalizeCollectIgnoreEntriesOptions;
exports.normalizeCollectWorkspacePackagesOptions = require_monorepo.normalizeCollectWorkspacePackagesOptions;
exports.normalizeGetRootPackageJsonOptions = require_get_root_package_json_function.normalizeGetRootPackageJsonOptions;
exports.normalizePackageJsonWorkspacesField = require_get_root_package_json_function.normalizePackageJsonWorkspacesField;
exports.normalizeSortingPreferenceForPackageJson = require_sort.normalizeSortingPreferenceForPackageJson;
exports.splitAndStripHashComments = splitAndStripHashComments;
//# sourceMappingURL=index.cjs.map