trm-core 8.2.0 → 8.2.1
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.
package/changelog.txt
CHANGED
|
@@ -63,23 +63,22 @@ exports.findDependencies = {
|
|
|
63
63
|
trm_commons_1.Logger.log('Find dependencies step', true);
|
|
64
64
|
trm_commons_1.Logger.loading(`Searching for dependencies in package "${context.rawInput.packageData.devclass}"...`);
|
|
65
65
|
const dependencies = yield systemConnector_1.SystemConnector.getPackageDependencies(context.rawInput.packageData.devclass, true);
|
|
66
|
-
const trmDependencies =
|
|
67
|
-
const trmLocalDependencies = trmDependencies.filter(o => o.registry.getRegistryType() === registry_1.RegistryType.LOCAL);
|
|
68
|
-
const
|
|
69
|
-
const
|
|
70
|
-
const
|
|
71
|
-
const customDependencies = otherDependencies.filter(o => !o.package.tpclass);
|
|
66
|
+
const trmDependencies = dependencies.trmPackageDependencies;
|
|
67
|
+
const trmLocalDependencies = trmDependencies.filter(o => o.trmPackage.registry.getRegistryType() === registry_1.RegistryType.LOCAL);
|
|
68
|
+
const sapDependencies = dependencies.abapPackageDependencies.filter(o => !o.isCustomerPackage);
|
|
69
|
+
const sapObjectsUsed = sapDependencies.reduce((sum, dep) => sum + dep.entries.reduce((s, e) => s + e.dependency.length, 0), 0);
|
|
70
|
+
const customDependencies = dependencies.abapPackageDependencies.filter(o => o.isCustomerPackage);
|
|
72
71
|
if (customDependencies.length > 0) {
|
|
73
72
|
trm_commons_1.Logger.error(`Package "${context.rawInput.packageData.devclass}" has dependencies with ${customDependencies.length} non-TRM ${customDependencies.length === 1 ? 'package' : 'packages'}:`);
|
|
74
73
|
customDependencies.forEach((d, i) => {
|
|
75
|
-
trm_commons_1.Logger.error(` (${i + 1}/${customDependencies.length}) ${d.
|
|
74
|
+
trm_commons_1.Logger.error(` (${i + 1}/${customDependencies.length}) ${d.abapPackage.devclass}`);
|
|
76
75
|
});
|
|
77
76
|
throw new Error(`Consider publishing them as TRM packages or refactor your development to avoid the dependency.`);
|
|
78
77
|
}
|
|
79
78
|
if (trmLocalDependencies.length > 0) {
|
|
80
79
|
trm_commons_1.Logger.error(`Package "${context.rawInput.packageData.devclass}" has dependencies with ${trmLocalDependencies.length} TRM local ${customDependencies.length === 1 ? 'package' : 'packages'}:`);
|
|
81
80
|
trmLocalDependencies.forEach((d, i) => {
|
|
82
|
-
trm_commons_1.Logger.error(` (${i + 1}/${customDependencies.length}) ${d.packageName}`);
|
|
81
|
+
trm_commons_1.Logger.error(` (${i + 1}/${customDependencies.length}) ${d.trmPackage.packageName}`);
|
|
83
82
|
});
|
|
84
83
|
throw new Error(`Cannot deliver to registry a TRM package with a local TRM package.`);
|
|
85
84
|
}
|
|
@@ -88,32 +87,32 @@ exports.findDependencies = {
|
|
|
88
87
|
trm_commons_1.Logger.log(`Adding TRM package dependencies to manifest`, true);
|
|
89
88
|
trm_commons_1.Logger.info(`Updating "${context.rawInput.packageData.name}" manifest with dependencies:`);
|
|
90
89
|
trmDependencies.forEach((o, i) => {
|
|
91
|
-
if (o.manifest) {
|
|
92
|
-
const dependencyManifest = o.manifest.get();
|
|
90
|
+
if (o.trmPackage.manifest) {
|
|
91
|
+
const dependencyManifest = o.trmPackage.manifest.get();
|
|
93
92
|
const dependencyVersionRange = `^${dependencyManifest.version}`;
|
|
94
|
-
const dependencyRegistry = o.registry.getRegistryType() === registry_1.RegistryType.PUBLIC ? undefined : o.registry.endpoint;
|
|
93
|
+
const dependencyRegistry = o.trmPackage.registry.getRegistryType() === registry_1.RegistryType.PUBLIC ? undefined : o.trmPackage.registry.endpoint;
|
|
95
94
|
context.runtime.trmPackage.manifest.dependencies.push({
|
|
96
95
|
name: dependencyManifest.name,
|
|
97
96
|
version: dependencyVersionRange,
|
|
98
97
|
registry: dependencyRegistry
|
|
99
98
|
});
|
|
100
|
-
trm_commons_1.Logger.info(` (${i + 1}/${trmDependencies.length}) ${dependencyManifest.name}${dependencyRegistry ? ' (' + o.registry.name + ')' : ''} ${dependencyVersionRange}`);
|
|
99
|
+
trm_commons_1.Logger.info(` (${i + 1}/${trmDependencies.length}) ${dependencyManifest.name}${dependencyRegistry ? ' (' + o.trmPackage.registry.name + ')' : ''} ${dependencyVersionRange}`);
|
|
101
100
|
}
|
|
102
101
|
else {
|
|
103
|
-
trm_commons_1.Logger.error(` (${i + 1}/${trmDependencies.length}) Cannot find manifest of dependency in ABAP package "${o.getDevclass()}"`);
|
|
102
|
+
trm_commons_1.Logger.error(` (${i + 1}/${trmDependencies.length}) Cannot find manifest of dependency in ABAP package "${o.trmPackage.getDevclass()}"`);
|
|
104
103
|
}
|
|
105
104
|
});
|
|
106
105
|
}
|
|
107
106
|
if (sapDependencies.length > 0) {
|
|
108
107
|
trm_commons_1.Logger.log(`Adding SAP objects dependencies to manifest`, true);
|
|
109
108
|
sapDependencies.forEach(o => {
|
|
110
|
-
o.
|
|
111
|
-
if (!context.runtime.trmPackage.manifest.sapEntries[
|
|
112
|
-
context.runtime.trmPackage.manifest.sapEntries[
|
|
109
|
+
o.entries.forEach(e => {
|
|
110
|
+
if (!context.runtime.trmPackage.manifest.sapEntries[e.tableName]) {
|
|
111
|
+
context.runtime.trmPackage.manifest.sapEntries[e.tableName] = [];
|
|
113
112
|
}
|
|
114
|
-
|
|
115
|
-
if (!context.runtime.trmPackage.manifest.sapEntries[d.
|
|
116
|
-
context.runtime.trmPackage.manifest.sapEntries[
|
|
113
|
+
e.dependency.forEach(d => {
|
|
114
|
+
if (!context.runtime.trmPackage.manifest.sapEntries[d.tableKey].find(c => _.isEqual(c, d.tableKey))) {
|
|
115
|
+
context.runtime.trmPackage.manifest.sapEntries[e.tableName].push(d.tableKey);
|
|
117
116
|
}
|
|
118
117
|
});
|
|
119
118
|
});
|
|
@@ -1,18 +1,34 @@
|
|
|
1
1
|
import { DEVCLASS, TDEVC, ZTRM_OBJECT_DEPENDENCIES } from "../client";
|
|
2
2
|
import { TrmPackage } from "../trmPackage";
|
|
3
|
-
import {
|
|
4
|
-
export type
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
import { ObjectDependencies } from "./ObjectDependencies";
|
|
4
|
+
export type TrmPackageDependency = {
|
|
5
|
+
trmPackage: TrmPackage;
|
|
6
|
+
foundIn: {
|
|
7
|
+
object: string;
|
|
8
|
+
objName: string;
|
|
9
|
+
}[];
|
|
10
|
+
};
|
|
11
|
+
export type AbapPackageDependency = {
|
|
12
|
+
abapPackage: TDEVC;
|
|
13
|
+
isCustomerPackage: boolean;
|
|
14
|
+
entries: {
|
|
15
|
+
tableName: string;
|
|
16
|
+
dependency: {
|
|
17
|
+
tableKey: any;
|
|
18
|
+
foundIn: {
|
|
19
|
+
object: string;
|
|
20
|
+
objName: string;
|
|
21
|
+
}[];
|
|
22
|
+
}[];
|
|
23
|
+
}[];
|
|
7
24
|
};
|
|
8
25
|
export declare class PackageDependencies {
|
|
9
26
|
readonly devclass: DEVCLASS;
|
|
10
|
-
readonly
|
|
27
|
+
readonly allDependencies: ObjectDependencies[];
|
|
28
|
+
readonly trmPackageDependencies: TrmPackageDependency[];
|
|
29
|
+
readonly abapPackageDependencies: AbapPackageDependency[];
|
|
11
30
|
private devclasses;
|
|
12
31
|
constructor(devclass: DEVCLASS);
|
|
13
32
|
setDependencies(packageDependencies: ZTRM_OBJECT_DEPENDENCIES[], log?: boolean): Promise<PackageDependencies>;
|
|
14
33
|
private getDevclasses;
|
|
15
|
-
getAllDependencies(): any;
|
|
16
|
-
getTrmDependencies(): Promise<TrmPackage[]>;
|
|
17
|
-
getOtherPackageDependencies(): Promise<GenericPackageDependencies[]>;
|
|
18
34
|
}
|
|
@@ -1,4 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
36
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
37
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -13,10 +46,13 @@ exports.PackageDependencies = void 0;
|
|
|
13
46
|
const trm_commons_1 = require("trm-commons");
|
|
14
47
|
const systemConnector_1 = require("../systemConnector");
|
|
15
48
|
const ObjectDependencies_1 = require("./ObjectDependencies");
|
|
49
|
+
const _ = __importStar(require("lodash"));
|
|
16
50
|
class PackageDependencies {
|
|
17
51
|
constructor(devclass) {
|
|
18
52
|
this.devclass = devclass;
|
|
19
|
-
this.
|
|
53
|
+
this.allDependencies = [];
|
|
54
|
+
this.trmPackageDependencies = [];
|
|
55
|
+
this.abapPackageDependencies = [];
|
|
20
56
|
}
|
|
21
57
|
setDependencies(packageDependencies, log) {
|
|
22
58
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -26,7 +62,63 @@ class PackageDependencies {
|
|
|
26
62
|
trm_commons_1.Logger.loading(`Analyzing dependencies (${(((i + 1) / packageDependencies.length) * 100).toFixed(1)}%)...`, !log);
|
|
27
63
|
trm_commons_1.Logger.loading(`Analyzing dependencies (${(((i + 1) / packageDependencies.length) * 100).toFixed(1)}%) > ${d.pgmid}${d.object}${d.objName}...`, true);
|
|
28
64
|
i++;
|
|
29
|
-
this.
|
|
65
|
+
this.allDependencies.push(yield (new ObjectDependencies_1.ObjectDependencies(d.object, d.objName).setDependencies(d.dependencies || [])));
|
|
66
|
+
}
|
|
67
|
+
trm_commons_1.Logger.loading(`Building dependency tree...`, !log);
|
|
68
|
+
for (const o of this.allDependencies) {
|
|
69
|
+
for (const trmPackage of o.trmPackages) {
|
|
70
|
+
if (trmPackage.trmPackage.getDevclass() !== this.devclass) {
|
|
71
|
+
var depIndex = this.trmPackageDependencies.findIndex(k => k.trmPackage.compareName(trmPackage.trmPackage.packageName) && k.trmPackage.compareRegistry(trmPackage.trmPackage.registry));
|
|
72
|
+
if (depIndex < 0) {
|
|
73
|
+
depIndex = this.trmPackageDependencies.push({
|
|
74
|
+
trmPackage: trmPackage.trmPackage,
|
|
75
|
+
foundIn: []
|
|
76
|
+
}) - 1;
|
|
77
|
+
}
|
|
78
|
+
if (!this.trmPackageDependencies[depIndex].foundIn.find(f => f.object === o.object && f.objName === f.objName)) {
|
|
79
|
+
this.trmPackageDependencies[depIndex].foundIn.push({
|
|
80
|
+
object: o.object,
|
|
81
|
+
objName: o.objName
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
for (const sapPackage of o.sapPackages) {
|
|
87
|
+
for (const dep of sapPackage.dependencies) {
|
|
88
|
+
if (!(yield this.getDevclasses()).includes(sapPackage.package)) {
|
|
89
|
+
const root = yield systemConnector_1.SystemConnector.getRootDevclass(sapPackage.package);
|
|
90
|
+
var packageIndex = this.abapPackageDependencies.findIndex(k => k.abapPackage.devclass === root);
|
|
91
|
+
if (packageIndex < 0) {
|
|
92
|
+
const abapPackage = yield systemConnector_1.SystemConnector.getDevclass(root);
|
|
93
|
+
packageIndex = this.abapPackageDependencies.push({
|
|
94
|
+
abapPackage: abapPackage,
|
|
95
|
+
isCustomerPackage: !!abapPackage.tpclass,
|
|
96
|
+
entries: []
|
|
97
|
+
}) - 1;
|
|
98
|
+
}
|
|
99
|
+
var tabIndex = this.abapPackageDependencies[packageIndex].entries.findIndex(k => k.tableName === dep.tabname);
|
|
100
|
+
if (tabIndex < 0) {
|
|
101
|
+
tabIndex = this.abapPackageDependencies[packageIndex].entries.push({
|
|
102
|
+
tableName: dep.tabname,
|
|
103
|
+
dependency: []
|
|
104
|
+
}) - 1;
|
|
105
|
+
}
|
|
106
|
+
dep.tabkey.forEach(tableKey => {
|
|
107
|
+
var tableKeyIndex = this.abapPackageDependencies[packageIndex].entries[tabIndex].dependency.findIndex(k => _.isEqual(k.tableKey, tableKey));
|
|
108
|
+
if (tableKeyIndex < 0) {
|
|
109
|
+
tableKeyIndex = this.abapPackageDependencies[packageIndex].entries[tabIndex].dependency.push({
|
|
110
|
+
tableKey,
|
|
111
|
+
foundIn: []
|
|
112
|
+
}) - 1;
|
|
113
|
+
}
|
|
114
|
+
this.abapPackageDependencies[packageIndex].entries[tabIndex].dependency[tableKeyIndex].foundIn.push({
|
|
115
|
+
object: o.object,
|
|
116
|
+
objName: o.objName
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
30
122
|
}
|
|
31
123
|
return this;
|
|
32
124
|
});
|
|
@@ -39,49 +131,5 @@ class PackageDependencies {
|
|
|
39
131
|
return this.devclasses;
|
|
40
132
|
});
|
|
41
133
|
}
|
|
42
|
-
getAllDependencies() {
|
|
43
|
-
var all = {};
|
|
44
|
-
this.dependencies.forEach(d => {
|
|
45
|
-
Object.keys(d.tables).forEach(table => {
|
|
46
|
-
if (!all[table]) {
|
|
47
|
-
all[table] = [];
|
|
48
|
-
}
|
|
49
|
-
all[table] = all[table].concat(d.tables[table]);
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
return all;
|
|
53
|
-
}
|
|
54
|
-
getTrmDependencies() {
|
|
55
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
56
|
-
var trmPackages = [];
|
|
57
|
-
const devclasses = yield this.getDevclasses();
|
|
58
|
-
this.dependencies.forEach(d => {
|
|
59
|
-
d.trmPackages.forEach(p => {
|
|
60
|
-
if (!devclasses.includes(p.trmPackage.getDevclass())) {
|
|
61
|
-
trmPackages.push(p.trmPackage);
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
return trmPackages;
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
getOtherPackageDependencies() {
|
|
69
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
70
|
-
var sapPackages = [];
|
|
71
|
-
for (const d of this.dependencies) {
|
|
72
|
-
for (const p of d.sapPackages) {
|
|
73
|
-
var index = sapPackages.findIndex(o => o.package.devclass === p.package);
|
|
74
|
-
if (index < 0) {
|
|
75
|
-
index = sapPackages.push({
|
|
76
|
-
package: yield systemConnector_1.SystemConnector.getDevclass(p.package),
|
|
77
|
-
dependencies: []
|
|
78
|
-
}) - 1;
|
|
79
|
-
}
|
|
80
|
-
sapPackages[index].dependencies = sapPackages[index].dependencies.concat(p.dependencies);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return sapPackages;
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
134
|
}
|
|
87
135
|
exports.PackageDependencies = PackageDependencies;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "trm-core",
|
|
3
|
-
"version": "8.2.
|
|
3
|
+
"version": "8.2.1",
|
|
4
4
|
"description": "TRM (Transport Request Manager) Core",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"xml-js": "^1.6.11"
|
|
70
70
|
},
|
|
71
71
|
"peerDependencies": {
|
|
72
|
-
"trm-commons": "^3.4.
|
|
72
|
+
"trm-commons": "^3.4.3"
|
|
73
73
|
},
|
|
74
74
|
"devDependencies": {
|
|
75
75
|
"@types/adm-zip": "^0.5.0",
|