@alexaegis/workspace-tools
Version:
Tools for working with javascript workspaces
69 lines (68 loc) • 3.32 kB
JavaScript
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");
let _alexaegis_common = require("@alexaegis/common");
let node_path = require("node:path");
let _alexaegis_fs = require("@alexaegis/fs");
let _alexaegis_match = require("@alexaegis/match");
let globby = require("globby");
//#region src/monorepo/collect-workspace-packages.function.options.ts
var normalizeCollectWorkspacePackagesOptions = (options) => {
return {
...require_get_root_package_json_function.normalizeGetRootPackageJsonOptions(options),
onlyWorkspaceRoot: options?.onlyWorkspaceRoot ?? false,
skipWorkspaceRoot: options?.skipWorkspaceRoot ?? false,
dependencyCriteria: options?.dependencyCriteria?.map(_alexaegis_common.normalizeRegExpLikeToRegExp) ?? [],
packageJsonMatcher: options?.packageJsonMatcher
};
};
//#endregion
//#region src/monorepo/collect-workspace-packages.function.ts
var collectWorkspacePackages = async (rawOptions) => {
const options = normalizeCollectWorkspacePackagesOptions(rawOptions);
const rootPackage = await require_get_root_package_json_function.getRootPackageJson(options);
if (!rootPackage) {
options.logger.error("No package json was found! Cannot collect workspace packages!");
return [];
}
let result = [];
if (rootPackage.workspacePackagePatterns.length > 0) {
const subPackages = await (0, _alexaegis_common.asyncFilterMap)(await (0, globby.globby)(rootPackage.workspacePackagePatterns, {
gitignore: true,
onlyDirectories: true,
ignore: [require_get_workspace_root_function.NODE_MODULES_DIRECTORY_NAME],
absolute: true,
cwd: rootPackage.packagePath
}), (path) => {
const packageJsonPath = (0, node_path.join)(path, require_get_workspace_root_function.PACKAGE_JSON_NAME);
return (0, _alexaegis_fs.readJson)(packageJsonPath).catch(() => void 0).then((packageJson) => packageJson ? {
packageKind: "regular",
packageJson,
packagePath: path,
packagePathFromRootPackage: (0, node_path.relative)(rootPackage.packagePath, path),
packageJsonPath
} : void 0);
});
if (!options.onlyWorkspaceRoot) result.push(...subPackages);
}
if (!options.skipWorkspaceRoot || rootPackage.workspacePackagePatterns.length === 0) result.unshift(rootPackage);
if (options.packageJsonMatcher) result = result.filter((relativePackage) => (0, _alexaegis_match.match)(relativePackage.packageJson, options.packageJsonMatcher));
if (options.dependencyCriteria.length > 0) result = result.filter((relativePackage) => {
const packageDependencies = [...Object.keys(relativePackage.packageJson.dependencies ?? {}), ...Object.keys(relativePackage.packageJson.devDependencies ?? {})];
return options.dependencyCriteria.every((dependencyCriteria) => packageDependencies.some((dependency) => dependencyCriteria.test(dependency)));
});
return result;
};
//#endregion
Object.defineProperty(exports, "collectWorkspacePackages", {
enumerable: true,
get: function() {
return collectWorkspacePackages;
}
});
Object.defineProperty(exports, "normalizeCollectWorkspacePackagesOptions", {
enumerable: true,
get: function() {
return normalizeCollectWorkspacePackagesOptions;
}
});
//# sourceMappingURL=monorepo-BmQlwwyA.cjs.map