UNPKG

@alexaegis/workspace-tools

Version:

Tools for working with javascript workspaces

97 lines (96 loc) 4.98 kB
"use strict"; 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;