@sap-ux/project-access 1.12.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,6 +5,7 @@ export declare const FileName: {
5
5
  readonly ManifestAppDescrVar: "manifest.appdescr_variant";
6
6
  readonly MtaYaml: "mta.yaml";
7
7
  readonly Package: "package.json";
8
+ readonly Pom: "pom.xml";
8
9
  readonly Tsconfig: "tsconfig.json";
9
10
  readonly Ui5Yaml: "ui5.yaml";
10
11
  readonly Ui5LocalYaml: "ui5-local.yaml";
package/dist/constants.js CHANGED
@@ -8,6 +8,7 @@ exports.FileName = {
8
8
  ManifestAppDescrVar: 'manifest.appdescr_variant',
9
9
  MtaYaml: 'mta.yaml',
10
10
  Package: 'package.json',
11
+ Pom: 'pom.xml',
11
12
  Tsconfig: 'tsconfig.json',
12
13
  Ui5Yaml: 'ui5.yaml',
13
14
  Ui5LocalYaml: 'ui5-local.yaml',
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { FileName } from './constants';
2
- export { findAllApps, findFioriArtifacts, findProjectRoot, getAppRootFromWebappPath, getAppProgrammingLanguage, getCapCustomPaths, getCapEnvironment, getCapModelAndServices, getCapProjectType, getMtaPath, getNodeModulesPath, getWebappPath, isCapJavaProject, isCapNodeJsProject, loadModuleFromProject, readCapServiceMetadataEdmx, readUi5Yaml } from './project';
2
+ export { findAllApps, findCapProjects, findFioriArtifacts, findProjectRoot, getAppRootFromWebappPath, getAppProgrammingLanguage, getCapCustomPaths, getCapEnvironment, getCapModelAndServices, getCapProjectType, getMtaPath, getNodeModulesPath, getWebappPath, isCapJavaProject, isCapNodeJsProject, loadModuleFromProject, readCapServiceMetadataEdmx, readUi5Yaml } from './project';
3
3
  export { getFilePaths } from './file';
4
4
  export * from './types';
5
5
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -14,11 +14,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.getFilePaths = exports.readUi5Yaml = exports.readCapServiceMetadataEdmx = exports.loadModuleFromProject = exports.isCapNodeJsProject = exports.isCapJavaProject = exports.getWebappPath = exports.getNodeModulesPath = exports.getMtaPath = exports.getCapProjectType = exports.getCapModelAndServices = exports.getCapEnvironment = exports.getCapCustomPaths = exports.getAppProgrammingLanguage = exports.getAppRootFromWebappPath = exports.findProjectRoot = exports.findFioriArtifacts = exports.findAllApps = exports.FileName = void 0;
17
+ exports.getFilePaths = exports.readUi5Yaml = exports.readCapServiceMetadataEdmx = exports.loadModuleFromProject = exports.isCapNodeJsProject = exports.isCapJavaProject = exports.getWebappPath = exports.getNodeModulesPath = exports.getMtaPath = exports.getCapProjectType = exports.getCapModelAndServices = exports.getCapEnvironment = exports.getCapCustomPaths = exports.getAppProgrammingLanguage = exports.getAppRootFromWebappPath = exports.findProjectRoot = exports.findFioriArtifacts = exports.findCapProjects = exports.findAllApps = exports.FileName = void 0;
18
18
  var constants_1 = require("./constants");
19
19
  Object.defineProperty(exports, "FileName", { enumerable: true, get: function () { return constants_1.FileName; } });
20
20
  var project_1 = require("./project");
21
21
  Object.defineProperty(exports, "findAllApps", { enumerable: true, get: function () { return project_1.findAllApps; } });
22
+ Object.defineProperty(exports, "findCapProjects", { enumerable: true, get: function () { return project_1.findCapProjects; } });
22
23
  Object.defineProperty(exports, "findFioriArtifacts", { enumerable: true, get: function () { return project_1.findFioriArtifacts; } });
23
24
  Object.defineProperty(exports, "findProjectRoot", { enumerable: true, get: function () { return project_1.findProjectRoot; } });
24
25
  Object.defineProperty(exports, "getAppRootFromWebappPath", { enumerable: true, get: function () { return project_1.getAppRootFromWebappPath; } });
@@ -14,9 +14,10 @@ export declare function isCapNodeJsProject(packageJson: Package): boolean;
14
14
  * Returns true if the project is a CAP Java project.
15
15
  *
16
16
  * @param projectRoot - the root path of the project
17
+ * @param [capCustomPaths] - optional, relative CAP paths like app, db, srv
17
18
  * @returns - true if the project is a CAP project
18
19
  */
19
- export declare function isCapJavaProject(projectRoot: string): Promise<boolean>;
20
+ export declare function isCapJavaProject(projectRoot: string, capCustomPaths?: CapCustomPaths): Promise<boolean>;
20
21
  /**
21
22
  * Returns the CAP project type, undefined if it is not a CAP project.
22
23
  *
@@ -30,11 +30,13 @@ exports.isCapNodeJsProject = isCapNodeJsProject;
30
30
  * Returns true if the project is a CAP Java project.
31
31
  *
32
32
  * @param projectRoot - the root path of the project
33
+ * @param [capCustomPaths] - optional, relative CAP paths like app, db, srv
33
34
  * @returns - true if the project is a CAP project
34
35
  */
35
- function isCapJavaProject(projectRoot) {
36
+ function isCapJavaProject(projectRoot, capCustomPaths) {
37
+ var _a;
36
38
  return __awaiter(this, void 0, void 0, function* () {
37
- const { srv } = yield getCapCustomPaths(projectRoot);
39
+ const srv = (_a = capCustomPaths === null || capCustomPaths === void 0 ? void 0 : capCustomPaths.srv) !== null && _a !== void 0 ? _a : (yield getCapCustomPaths(projectRoot)).srv;
38
40
  return (0, file_1.fileExists)((0, path_1.join)(projectRoot, srv, 'src', 'main', 'resources', 'application.yaml'));
39
41
  });
40
42
  }
@@ -47,7 +49,11 @@ exports.isCapJavaProject = isCapJavaProject;
47
49
  */
48
50
  function getCapProjectType(projectRoot) {
49
51
  return __awaiter(this, void 0, void 0, function* () {
50
- if (yield isCapJavaProject(projectRoot)) {
52
+ const capCustomPaths = yield getCapCustomPaths(projectRoot);
53
+ if (!(yield (0, file_1.fileExists)((0, path_1.join)(projectRoot, capCustomPaths.srv)))) {
54
+ return undefined;
55
+ }
56
+ if (yield isCapJavaProject(projectRoot, capCustomPaths)) {
51
57
  return 'CAPJava';
52
58
  }
53
59
  let packageJson;
@@ -342,27 +348,29 @@ function loadGlobalCdsModule() {
342
348
  * @returns - result of call 'cds --version'
343
349
  */
344
350
  function getCdsVersionInfo(cwd) {
345
- return new Promise((resolve, reject) => {
346
- let out = '';
347
- const cdsVersionInfo = (0, child_process_1.spawn)('cds', ['--version'], { cwd, shell: true });
348
- cdsVersionInfo.stdout.on('data', (data) => {
349
- out += data.toString();
350
- });
351
- cdsVersionInfo.on('close', () => {
352
- if (out) {
353
- const versions = {};
354
- for (const line of out.split('\n').filter((v) => v)) {
355
- const [key, value] = line.split(': ');
356
- versions[key] = value;
351
+ return __awaiter(this, void 0, void 0, function* () {
352
+ return new Promise((resolve, reject) => {
353
+ let out = '';
354
+ const cdsVersionInfo = (0, child_process_1.spawn)('cds', ['--version'], { cwd, shell: true });
355
+ cdsVersionInfo.stdout.on('data', (data) => {
356
+ out += data.toString();
357
+ });
358
+ cdsVersionInfo.on('close', () => {
359
+ if (out) {
360
+ const versions = {};
361
+ for (const line of out.split('\n').filter((v) => v)) {
362
+ const [key, value] = line.split(': ');
363
+ versions[key] = value;
364
+ }
365
+ resolve(versions);
357
366
  }
358
- resolve(versions);
359
- }
360
- else {
361
- reject(new Error('Module path not found'));
362
- }
363
- });
364
- cdsVersionInfo.on('error', (error) => {
365
- reject(error);
367
+ else {
368
+ reject(new Error('Module path not found'));
369
+ }
370
+ });
371
+ cdsVersionInfo.on('error', (error) => {
372
+ reject(error);
373
+ });
366
374
  });
367
375
  });
368
376
  }
@@ -2,7 +2,7 @@ export { getCapCustomPaths, getCapModelAndServices, getCapProjectType, isCapJava
2
2
  export { getNodeModulesPath } from './dependencies';
3
3
  export { getAppProgrammingLanguage } from './info';
4
4
  export { loadModuleFromProject } from './module-loader';
5
- export { findAllApps, findFioriArtifacts, findProjectRoot, getAppRootFromWebappPath } from './search';
5
+ export { findAllApps, findCapProjects, findFioriArtifacts, findProjectRoot, getAppRootFromWebappPath } from './search';
6
6
  export { getWebappPath, readUi5Yaml } from './ui5-config';
7
7
  export { getMtaPath } from './mta';
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getMtaPath = exports.readUi5Yaml = exports.getWebappPath = exports.getAppRootFromWebappPath = exports.findProjectRoot = exports.findFioriArtifacts = exports.findAllApps = exports.loadModuleFromProject = exports.getAppProgrammingLanguage = exports.getNodeModulesPath = exports.readCapServiceMetadataEdmx = exports.getCapEnvironment = exports.isCapNodeJsProject = exports.isCapJavaProject = exports.getCapProjectType = exports.getCapModelAndServices = exports.getCapCustomPaths = void 0;
3
+ exports.getMtaPath = exports.readUi5Yaml = exports.getWebappPath = exports.getAppRootFromWebappPath = exports.findProjectRoot = exports.findFioriArtifacts = exports.findCapProjects = exports.findAllApps = exports.loadModuleFromProject = exports.getAppProgrammingLanguage = exports.getNodeModulesPath = exports.readCapServiceMetadataEdmx = exports.getCapEnvironment = exports.isCapNodeJsProject = exports.isCapJavaProject = exports.getCapProjectType = exports.getCapModelAndServices = exports.getCapCustomPaths = void 0;
4
4
  var cap_1 = require("./cap");
5
5
  Object.defineProperty(exports, "getCapCustomPaths", { enumerable: true, get: function () { return cap_1.getCapCustomPaths; } });
6
6
  Object.defineProperty(exports, "getCapModelAndServices", { enumerable: true, get: function () { return cap_1.getCapModelAndServices; } });
@@ -17,6 +17,7 @@ var module_loader_1 = require("./module-loader");
17
17
  Object.defineProperty(exports, "loadModuleFromProject", { enumerable: true, get: function () { return module_loader_1.loadModuleFromProject; } });
18
18
  var search_1 = require("./search");
19
19
  Object.defineProperty(exports, "findAllApps", { enumerable: true, get: function () { return search_1.findAllApps; } });
20
+ Object.defineProperty(exports, "findCapProjects", { enumerable: true, get: function () { return search_1.findCapProjects; } });
20
21
  Object.defineProperty(exports, "findFioriArtifacts", { enumerable: true, get: function () { return search_1.findFioriArtifacts; } });
21
22
  Object.defineProperty(exports, "findProjectRoot", { enumerable: true, get: function () { return search_1.findProjectRoot; } });
22
23
  Object.defineProperty(exports, "getAppRootFromWebappPath", { enumerable: true, get: function () { return search_1.getAppRootFromWebappPath; } });
@@ -36,4 +36,14 @@ export declare function findFioriArtifacts(options: {
36
36
  wsFolders?: readonly WorkspaceFolder[] | string[];
37
37
  artifacts: FioriArtifactTypes[];
38
38
  }): Promise<FoundFioriArtifacts>;
39
+ /**
40
+ * Find all CAP project roots by locating pom.xml or package.json in a given workspace.
41
+ *
42
+ * @param options - find options
43
+ * @param options.wsFolders - list of roots, either as vscode WorkspaceFolder[] or array of paths
44
+ * @returns - root file paths that may contain a CAP project
45
+ */
46
+ export declare function findCapProjects(options: {
47
+ readonly wsFolders: WorkspaceFolder[] | string[];
48
+ }): Promise<string[]>;
39
49
  //# sourceMappingURL=search.d.ts.map
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.findFioriArtifacts = exports.findAllApps = exports.getAppRootFromWebappPath = exports.findProjectRoot = void 0;
12
+ exports.findCapProjects = exports.findFioriArtifacts = exports.findAllApps = exports.getAppRootFromWebappPath = exports.findProjectRoot = void 0;
13
13
  const path_1 = require("path");
14
14
  const constants_1 = require("../constants");
15
15
  const file_1 = require("../file");
@@ -171,7 +171,7 @@ function findRootsForPath(path) {
171
171
  if (appPckJson.sapux) {
172
172
  return findRootsWithSapux(appPckJson.sapux, path, appRoot);
173
173
  }
174
- if ((0, cap_1.isCapNodeJsProject)(appPckJson) || (yield (0, cap_1.isCapJavaProject)(appRoot))) {
174
+ if ((yield (0, cap_1.getCapProjectType)(appRoot)) !== undefined) {
175
175
  // App is part of a CAP project, but doesn't have own package.json and is not mentioned in sapux array
176
176
  // in root -> not supported
177
177
  return null;
@@ -407,4 +407,34 @@ function findFioriArtifacts(options) {
407
407
  });
408
408
  }
409
409
  exports.findFioriArtifacts = findFioriArtifacts;
410
+ /**
411
+ * Find all CAP project roots by locating pom.xml or package.json in a given workspace.
412
+ *
413
+ * @param options - find options
414
+ * @param options.wsFolders - list of roots, either as vscode WorkspaceFolder[] or array of paths
415
+ * @returns - root file paths that may contain a CAP project
416
+ */
417
+ function findCapProjects(options) {
418
+ return __awaiter(this, void 0, void 0, function* () {
419
+ const result = new Set();
420
+ const excludeFolders = ['node_modules', 'dist', 'src', 'webapp', 'MDKModule', 'gen'];
421
+ const fileNames = [constants_1.FileName.Pom, constants_1.FileName.Package];
422
+ const wsRoots = wsFoldersToRootPaths(options.wsFolders);
423
+ for (const root of wsRoots) {
424
+ const filesToCheck = yield (0, file_1.findBy)({
425
+ fileNames,
426
+ root,
427
+ excludeFolders
428
+ });
429
+ const foldersToCheck = Array.from(new Set(filesToCheck.map((file) => (0, path_1.dirname)(file)))); //only directories without duplicates
430
+ for (const folderToCheck of foldersToCheck) {
431
+ if ((yield (0, cap_1.getCapProjectType)(folderToCheck)) !== undefined) {
432
+ result.add(folderToCheck);
433
+ }
434
+ }
435
+ }
436
+ return Array.from(result);
437
+ });
438
+ }
439
+ exports.findCapProjects = findCapProjects;
410
440
  //# sourceMappingURL=search.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sap-ux/project-access",
3
- "version": "1.12.0",
3
+ "version": "1.13.0",
4
4
  "description": "Library to access SAP Fiori tools projects",
5
5
  "repository": {
6
6
  "type": "git",