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
@@ -8,6 +8,10 @@ Legend
8
8
  + : added
9
9
  - : removed
10
10
 
11
+ 2026-02-17 v8.2.1
12
+ -------------------
13
+ ! object dependency structure
14
+
11
15
  2026-02-11 v8.2.0
12
16
  -------------------
13
17
  ! dependency detection moved to trm-server
@@ -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 = yield dependencies.getTrmDependencies();
67
- const trmLocalDependencies = trmDependencies.filter(o => o.registry.getRegistryType() === registry_1.RegistryType.LOCAL);
68
- const otherDependencies = yield dependencies.getOtherPackageDependencies();
69
- const sapDependencies = otherDependencies.filter(o => o.package.tpclass);
70
- const sapObjectsUsed = sapDependencies.flatMap(pkg => pkg.dependencies).reduce((sum, dep) => sum + dep.tabkey.length, 0);
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.package.devclass}`);
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.dependencies.forEach(d => {
111
- if (!context.runtime.trmPackage.manifest.sapEntries[d.tabname]) {
112
- context.runtime.trmPackage.manifest.sapEntries[d.tabname] = [];
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
- d.tabkey.forEach(k => {
115
- if (!context.runtime.trmPackage.manifest.sapEntries[d.tabname].find(c => _.isEqual(c, k))) {
116
- context.runtime.trmPackage.manifest.sapEntries[d.tabname].push(k);
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 { DependenciesGenericTable, ObjectDependencies } from "./ObjectDependencies";
4
- export type GenericPackageDependencies = {
5
- package: TDEVC;
6
- dependencies: DependenciesGenericTable[];
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 dependencies: ObjectDependencies[];
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.dependencies = [];
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.dependencies.push(yield (new ObjectDependencies_1.ObjectDependencies(d.object, d.objName).setDependencies(d.dependencies || [])));
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.0",
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.2"
72
+ "trm-commons": "^3.4.3"
73
73
  },
74
74
  "devDependencies": {
75
75
  "@types/adm-zip": "^0.5.0",