UNPKG

@alexaegis/workspace-tools

Version:

Tools for working with javascript workspaces

131 lines (130 loc) 6.22 kB
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