Skip to content

Commit 2340285

Browse files
committed
Refactor graph module structure
1 parent f460786 commit 2340285

File tree

10 files changed

+112
-93
lines changed

10 files changed

+112
-93
lines changed

lib/graph/projectGraphFromDirectory.js renamed to lib/generateProjectGraph.js

Lines changed: 39 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
const projectGraphBuilder = require("./projectGraphBuilder");
2-
const ui5Framework = require("./providers/ui5Framework");
3-
const log = require("@ui5/logger").getLogger("graph:projectGraphFromDirectory");
1+
const projectGraphBuilder = require("./graph/providers/projectGraphBuilder");
2+
const ui5Framework = require("./graph/helpers/ui5Framework");
3+
const log = require("@ui5/logger").getLogger("generateProjectGraph");
44

55
/**
66
* Helper module to create a [@ui5/project.graph.ProjectGraph]{@link module:@ui5/project.graph.ProjectGraph}
77
* from a directory
88
*
99
* @public
10-
* @alias module:@ui5/project.graph.projectGraphFromTree
10+
* @alias module:@ui5/project.generateProjectGraph
1111
* @param {TreeNode} tree Dependency tree as returned by a translator
1212
* @returns {module:@ui5/project.graph.ProjectGraph} A new project graph instance
1313
*/
14-
const projectGraphFromDirectory = {
14+
const generateProjectGraph = {
1515
/**
1616
* Generates a [@ui5/project.graph.ProjectGraph]{@link module:@ui5/project.graph.ProjectGraph} by resolving
1717
* dependencies from package.json files and configuring projects from ui5.yaml files
@@ -26,9 +26,9 @@ const projectGraphFromDirectory = {
2626
* @param {string} [options.versionOverride] Framework version to use instead of the one defined in the root project
2727
* @returns {Promise<module:@ui5/project.graph.ProjectGraph>} Promise resolving to a Project Graph instance
2828
*/
29-
usingNpm: async function({cwd = ".", rootConfiguration, rootConfigPath, versionOverride}) {
29+
usingNodePackageDependencies: async function({cwd = ".", rootConfiguration, rootConfigPath, versionOverride}) {
3030
log.verbose(`Creating project graph using npm provider...`);
31-
const NpmProvider = require("./providers/npm");
31+
const NpmProvider = require("./graph/providers/NodePackageDependencies");
3232

3333
const provider = new NpmProvider({
3434
cwd: cwd,
@@ -44,7 +44,7 @@ const projectGraphFromDirectory = {
4444
},
4545

4646
/**
47-
* Generates a [@ui5/project.graph.ProjectGraph]{@link module:@ui5/project.graph.ProjectGraph} from on a
47+
* Generates a [@ui5/project.graph.ProjectGraph]{@link module:@ui5/project.graph.ProjectGraph} from a
4848
* YAML file following the structure of the
4949
* [@ui5/project.graph.projectGraphFromTree]{@link module:@ui5/project.graph.projectGraphFromTree} API
5050
*
@@ -57,23 +57,49 @@ const projectGraphFromDirectory = {
5757
*/
5858
usingStaticFile: async function({cwd = ".", filePath, versionOverride}) {
5959
log.verbose(`Creating project graph using static file...`);
60-
const staticTranslator = require("../translators/static");
61-
const DependencyTreeProvider = require("./providers/DependencyTree");
60+
const staticTranslator = require("./translators/static");
6261

63-
const tree = await staticTranslator.generateDependencyTree(null, {
62+
const dependencyTree = await staticTranslator.generateDependencyTree(null, {
6463
parameters: [filePath] // *sigh*
6564
});
6665

66+
const DependencyTreeProvider = require("./graph/providers/DependencyTree");
6767
const provider = new DependencyTreeProvider({
68-
tree
68+
dependencyTree
6969
});
7070

7171
const projectGraph = await projectGraphBuilder(provider);
7272

7373
await ui5Framework.enrichProjectGraph(projectGraph, {versionOverride});
7474

75+
return projectGraph;
76+
},
77+
78+
/**
79+
* Generates a [@ui5/project.graph.ProjectGraph]{@link module:@ui5/project.graph.ProjectGraph} from a
80+
* YAML file following the structure of the
81+
* [@ui5/project.graph.projectGraphFromTree]{@link module:@ui5/project.graph.projectGraphFromTree} API
82+
*
83+
* @public
84+
* @param {object} options
85+
* @param {module:@ui5/project.graph.providers.DependencyTree.TreeNode} options.dependencyTree
86+
* @param {string} [options.versionOverride] Framework version to use instead of the one defined in the root project
87+
* @returns {Promise<module:@ui5/project.graph.ProjectGraph>} Promise resolving to a Project Graph instance
88+
*/
89+
usingObject: async function({dependencyTree, versionOverride}) {
90+
log.verbose(`Creating project graph using object...`);
91+
92+
const DependencyTreeProvider = require("./graph/providers/DependencyTree");
93+
const dependencyTreeProvider = new DependencyTreeProvider({
94+
dependencyTree
95+
});
96+
97+
const projectGraph = await projectGraphBuilder(dependencyTreeProvider);
98+
99+
await ui5Framework.enrichProjectGraph(projectGraph, {versionOverride});
100+
75101
return projectGraph;
76102
}
77103
};
78104

79-
module.exports = projectGraphFromDirectory;
105+
module.exports = generateProjectGraph;

lib/graph/providers/ui5Framework.js renamed to lib/graph/helpers/ui5Framework.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const Module = require("../Module");
22
const ProjectGraph = require("../ProjectGraph");
3-
const log = require("@ui5/logger").getLogger("graph:providers:ui5Framework");
3+
const log = require("@ui5/logger").getLogger("graph:helpers:ui5Framework");
44

55
class ProjectProcessor {
66
constructor({libraryMetadata}) {

lib/graph/projectGraphFromTree.js

Lines changed: 0 additions & 7 deletions
This file was deleted.

lib/graph/providers/DependencyTree.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,15 @@ class DependencyTree {
1717
* from a dependency tree as returned by translators.
1818
*
1919
* @public
20-
* @alias module:@ui5/project.graph.projectGraphFromTree
21-
* @param {TreeNode} tree Dependency tree as returned by a translator
20+
* @alias module:@ui5/project.graph.providers.DependencyTree
21+
* @param {object} parameters
22+
* @param {TreeNode} parameters.dependencyTree Dependency tree as returned by a translator
2223
*/
23-
constructor(tree) {
24-
if (!tree) {
25-
throw new Error(`Failed to instantiate DependencyTree provider: Missing parameter 'tree'`);
24+
constructor({dependencyTree}) {
25+
if (!dependencyTree) {
26+
throw new Error(`Failed to instantiate DependencyTree provider: Missing parameter 'dependencyTree'`);
2627
}
27-
this._tree= tree;
28+
this._tree = dependencyTree;
2829
}
2930

3031
async getRootNode() {

lib/graph/providers/npm.js renamed to lib/graph/providers/NodePackageDependencies.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ const {promisify} = require("util");
55
const fs = require("graceful-fs");
66
const realpath = promisify(fs.realpath);
77
const resolveModulePath = promisify(require("resolve"));
8-
const log = require("@ui5/logger").getLogger("graph:providers:npm");
8+
const log = require("@ui5/logger").getLogger("graph:providers:NodePackageDependencies");
99

1010
// Packages to consider:
1111
// * https://github.com/npm/read-package-json-fast
1212
// * https://github.com/npm/name-from-folder ?
1313

1414

15-
class Npm {
15+
class NodePackageDependencies {
1616
/**
1717
* Generates a project graph from npm modules
1818
*
@@ -145,4 +145,4 @@ class Npm {
145145
}
146146
}
147147

148-
module.exports = Npm;
148+
module.exports = NodePackageDependencies;

lib/graph/projectGraphBuilder.js renamed to lib/graph/providers/projectGraphBuilder.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
const path = require("path");
2-
const Module = require("./Module");
3-
const ProjectGraph = require("./ProjectGraph");
4-
const ShimCollection = require("./ShimCollection");
5-
const log = require("@ui5/logger").getLogger("graph:projectGraphBuilder");
2+
const Module = require("../Module");
3+
const ProjectGraph = require("../ProjectGraph");
4+
const ShimCollection = require("../ShimCollection");
5+
const log = require("@ui5/logger").getLogger("graph:providers:projectGraphBuilder");
66

77
function _handleExtensions(graph, shimCollection, extensions) {
88
extensions.forEach((extension) => {
@@ -64,8 +64,8 @@ function _handleExtensions(graph, shimCollection, extensions) {
6464
*/
6565

6666
/**
67-
* Helper module to create a [@ui5/project.graph.ProjectGraph]{@link module:@ui5/project.graph.ProjectGraph}
68-
* from a dependency tree as returned by translators.
67+
* Generic helper module to create a [@ui5/project.graph.ProjectGraph]{@link module:@ui5/project.graph.ProjectGraph}.
68+
* For example from a dependency tree as returned by the legacy "translators".
6969
*
7070
* @public
7171
* @alias module:@ui5/project.graph.projectGraphBuilder

lib/normalizer.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,20 +52,18 @@ const Normalizer = {
5252
* @param {object} [options]
5353
* @param {string} [options.cwd] Current working directory
5454
* @param {string} [options.configPath] Path to configuration file
55-
* @param {string} [options.translatorName] Translator to use
56-
* @param {object} [options.translatorOptions] Options to pass to translator
55+
* @param {object} [options.dependencyTree] Translator to use
56+
* @param {string} [options.dependencyTreeFilePath] Translator to use
5757
* @param {object} [options.frameworkOptions] Options to pass to the framework installer
5858
* @param {string} [options.frameworkOptions.versionOverride]
5959
* Framework version to use instead of the one defined in the root project
6060
* framework
6161
* @returns {Promise<module:@ui5/project.graph.ProjectGraph>} Promise resolving to a Project Graph instance
6262
*/
6363
generateProjectGraph: async function(options = {}) {
64-
// const projectGraphFromTree = require("./graph/projectGraphFromTree");
65-
// const tree = await Normalizer.generateDependencyTree(options);
66-
const projectGraphFromDirectory = require("./graph/projectGraphFromDirectory");
64+
const generateProjectGraph = require("./generateProjectGraph");
6765

68-
const projectGraph = await projectGraphFromDirectory.usingNpm({
66+
const projectGraph = await generateProjectGraph.usingNodePackageDependencies({
6967
rootConfigPath: options.configPath,
7068
versionOverride: options.versionOverride
7169
});

0 commit comments

Comments
 (0)