trm-core 7.2.0 → 7.3.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.
package/README.md CHANGED
@@ -14,6 +14,10 @@ This module contains the core functionalities of [TRM (Transport Request Manager
14
14
 
15
15
  TRM is a software designed to make transports between SAP ECC/S4 systems easy.
16
16
 
17
+ # Requirements
18
+
19
+ - [Node ^22.12.0](https://github.com/nodejs/node/releases/tag/v22.12.0)
20
+
17
21
  # Documentation <!-- {docsify-remove} -->
18
22
 
19
23
  Full documentation can be seen at [https://docs.trmregistry.com/](https://docs.trmregistry.com).
package/changelog.txt CHANGED
@@ -8,6 +8,15 @@ Legend
8
8
  + : added
9
9
  - : removed
10
10
 
11
+ 2025-07-08 v7.3.0
12
+ + enforce node engine ^22.12.0 with post install script
13
+ * install package hierarchy
14
+
15
+ 2025-06-04 v7.2.1
16
+ -------------------
17
+ * inquirer/logger prefix on install dependency
18
+ + removed useless wb transport find on package first install
19
+
11
20
  2025-06-03 v7.2.0
12
21
  -------------------
13
22
  * find dependency with custom object not found without devc reference
@@ -69,10 +69,11 @@ exports.generateDevclass = {
69
69
  }
70
70
  trm_commons_1.Logger.loading(`Updating ABAP packages hierarchy...`);
71
71
  const aDummyTdevc = [];
72
+ var parentcl;
72
73
  const originalPackageHierarchy = (0, commons_1.getPackageHierarchy)(context.runtime.packageTransportsData.tdevc);
73
74
  for (const packageReplacement of context.rawInput.installData.installDevclass.replacements) {
75
+ parentcl = '';
74
76
  const originalRoot = originalPackageHierarchy.devclass === packageReplacement.originalDevclass;
75
- var parentcl;
76
77
  if (!originalRoot) {
77
78
  const originalParentCl = context.runtime.packageTransportsData.tdevc.find(o => o.devclass === packageReplacement.originalDevclass).parentcl;
78
79
  if (originalParentCl) {
@@ -81,7 +82,7 @@ exports.generateDevclass = {
81
82
  }
82
83
  aDummyTdevc.push({
83
84
  devclass: packageReplacement.installDevclass,
84
- parentcl: parentcl || ''
85
+ parentcl: parentcl
85
86
  });
86
87
  }
87
88
  const installPackageHierarchy = (0, commons_1.getPackageHierarchy)(aDummyTdevc);
@@ -33,7 +33,9 @@ exports.generateInstallTransport = {
33
33
  return;
34
34
  }
35
35
  trm_commons_1.Logger.loading(`Checking install transport...`);
36
- context.runtime.installData.transport = yield context.runtime.remotePackageData.trmPackage.getWbTransport();
36
+ if (context.runtime.update) {
37
+ context.runtime.installData.transport = yield context.runtime.remotePackageData.trmPackage.getWbTransport();
38
+ }
37
39
  if (context.runtime.installData.transport) {
38
40
  trm_commons_1.Logger.log(`Install transport (${context.runtime.installData.transport.trkorr}) already exists, won't create a new one.`, true);
39
41
  trm_commons_1.Logger.loading(`Updating install transport...`);
@@ -41,11 +41,26 @@ exports.importCustTransport = {
41
41
  r3transOption: context.rawInput.contextData.r3transOptions
42
42
  });
43
43
  yield context.runtime.packageTransports.cust.instance.deleteFromTms(systemConnector_1.SystemConnector.getDest());
44
+ const originalLPrefix = trm_commons_1.Logger.getPrefix();
45
+ const originalIPrefix = trm_commons_1.Inquirer.getPrefix();
46
+ const prefix = `(Customizing) `;
47
+ if (originalLPrefix) {
48
+ trm_commons_1.Logger.setPrefix(`${originalLPrefix}-> ${prefix}`);
49
+ }
50
+ else {
51
+ trm_commons_1.Logger.setPrefix(prefix);
52
+ }
53
+ if (originalIPrefix) {
54
+ trm_commons_1.Inquirer.setPrefix(`${originalIPrefix}-> ${prefix}`);
55
+ }
56
+ else {
57
+ trm_commons_1.Inquirer.setPrefix(prefix);
58
+ }
44
59
  trm_commons_1.Logger.loading(`Importing ${context.runtime.packageTransports.cust.binaries.trkorr}`, true);
45
- trm_commons_1.Logger.setPrefix(`(Customizing) `);
46
60
  yield context.runtime.packageTransports.cust.instance.import(importTimeout);
47
- trm_commons_1.Logger.removePrefix();
48
61
  trm_commons_1.Logger.success(`Transport ${context.runtime.packageTransports.cust.binaries.trkorr} imported`, true);
62
+ trm_commons_1.Logger.setPrefix(originalLPrefix);
63
+ trm_commons_1.Inquirer.setPrefix(originalIPrefix);
49
64
  }),
50
65
  revert: (context) => __awaiter(void 0, void 0, void 0, function* () {
51
66
  trm_commons_1.Logger.log('Rollback CUST Transport step', true);
@@ -37,11 +37,26 @@ exports.importDevcTransport = {
37
37
  r3transOption: context.rawInput.contextData.r3transOptions
38
38
  });
39
39
  yield context.runtime.packageTransports.devc.instance.deleteFromTms(systemConnector_1.SystemConnector.getDest());
40
+ const originalLPrefix = trm_commons_1.Logger.getPrefix();
41
+ const originalIPrefix = trm_commons_1.Inquirer.getPrefix();
42
+ const prefix = `(SAP Package) `;
43
+ if (originalLPrefix) {
44
+ trm_commons_1.Logger.setPrefix(`${originalLPrefix}-> ${prefix}`);
45
+ }
46
+ else {
47
+ trm_commons_1.Logger.setPrefix(prefix);
48
+ }
49
+ if (originalIPrefix) {
50
+ trm_commons_1.Inquirer.setPrefix(`${originalIPrefix}-> ${prefix}`);
51
+ }
52
+ else {
53
+ trm_commons_1.Inquirer.setPrefix(prefix);
54
+ }
40
55
  trm_commons_1.Logger.loading(`Importing ${context.runtime.packageTransports.devc.binaries.trkorr}`, true);
41
- trm_commons_1.Logger.setPrefix(`(SAP Package) `);
42
56
  yield context.runtime.packageTransports.devc.instance.import(importTimeout);
43
- trm_commons_1.Logger.removePrefix();
44
57
  trm_commons_1.Logger.success(`Transport ${context.runtime.packageTransports.devc.binaries.trkorr} imported`, true);
58
+ trm_commons_1.Logger.setPrefix(originalLPrefix);
59
+ trm_commons_1.Inquirer.setPrefix(originalIPrefix);
45
60
  trm_commons_1.Logger.loading(`Finalizing import...`);
46
61
  if (rootDevclass && rootDevclass.parentcl) {
47
62
  yield systemConnector_1.SystemConnector.setPackageSuperpackage(context.runtime.originalData.hierarchy.devclass, rootDevclass.parentcl);
@@ -41,11 +41,26 @@ exports.importLangTransport = {
41
41
  r3transOption: context.rawInput.contextData.r3transOptions
42
42
  });
43
43
  yield context.runtime.packageTransports.lang.instance.deleteFromTms(systemConnector_1.SystemConnector.getDest());
44
+ const originalLPrefix = trm_commons_1.Logger.getPrefix();
45
+ const originalIPrefix = trm_commons_1.Inquirer.getPrefix();
46
+ const prefix = `(Translations) `;
47
+ if (originalLPrefix) {
48
+ trm_commons_1.Logger.setPrefix(`${originalLPrefix}-> ${prefix}`);
49
+ }
50
+ else {
51
+ trm_commons_1.Logger.setPrefix(prefix);
52
+ }
53
+ if (originalIPrefix) {
54
+ trm_commons_1.Inquirer.setPrefix(`${originalIPrefix}-> ${prefix}`);
55
+ }
56
+ else {
57
+ trm_commons_1.Inquirer.setPrefix(prefix);
58
+ }
44
59
  trm_commons_1.Logger.loading(`Importing ${context.runtime.packageTransports.lang.binaries.trkorr}`, true);
45
- trm_commons_1.Logger.setPrefix(`(Translations) `);
46
60
  yield context.runtime.packageTransports.lang.instance.import(importTimeout);
47
- trm_commons_1.Logger.removePrefix();
48
61
  trm_commons_1.Logger.success(`Transport ${context.runtime.packageTransports.lang.binaries.trkorr} imported`, true);
62
+ trm_commons_1.Logger.setPrefix(originalLPrefix);
63
+ trm_commons_1.Inquirer.setPrefix(originalIPrefix);
49
64
  }),
50
65
  revert: (context) => __awaiter(void 0, void 0, void 0, function* () {
51
66
  trm_commons_1.Logger.log('Rollback LANG Transport step', true);
@@ -33,11 +33,26 @@ exports.importTadirTransport = {
33
33
  if (commons_1.TrmServerUpgrade.getInstance().deleteFromTms()) {
34
34
  yield context.runtime.packageTransports.tadir.instance.deleteFromTms(systemConnector_1.SystemConnector.getDest());
35
35
  }
36
+ const originalLPrefix = trm_commons_1.Logger.getPrefix();
37
+ const originalIPrefix = trm_commons_1.Inquirer.getPrefix();
38
+ const prefix = `(Workbench) `;
39
+ if (originalLPrefix) {
40
+ trm_commons_1.Logger.setPrefix(`${originalLPrefix}-> ${prefix}`);
41
+ }
42
+ else {
43
+ trm_commons_1.Logger.setPrefix(prefix);
44
+ }
45
+ if (originalIPrefix) {
46
+ trm_commons_1.Inquirer.setPrefix(`${originalIPrefix}-> ${prefix}`);
47
+ }
48
+ else {
49
+ trm_commons_1.Inquirer.setPrefix(prefix);
50
+ }
36
51
  trm_commons_1.Logger.loading(`Importing ${context.runtime.packageTransports.tadir.binaries.trkorr}`, true);
37
- trm_commons_1.Logger.setPrefix(`(Workbench) `);
38
52
  yield context.runtime.packageTransports.tadir.instance.import(importTimeout);
39
- trm_commons_1.Logger.removePrefix();
40
53
  trm_commons_1.Logger.success(`Transport ${context.runtime.packageTransports.tadir.binaries.trkorr} imported`, true);
54
+ trm_commons_1.Logger.setPrefix(originalLPrefix);
55
+ trm_commons_1.Inquirer.setPrefix(originalIPrefix);
41
56
  trm_commons_1.Logger.loading(`Finalizing import...`);
42
57
  for (const tadir of context.runtime.packageTransportsData.tadir) {
43
58
  var object = lodash_1.default.cloneDeep(tadir);
@@ -83,15 +83,24 @@ exports.installDependencies = {
83
83
  throw new Error(`Install aborted`);
84
84
  }
85
85
  var counter = 0;
86
+ const originalLPrefix = trm_commons_1.Logger.getPrefix();
87
+ const originalIPrefix = trm_commons_1.Inquirer.getPrefix();
86
88
  for (const dependency of context.runtime.dependenciesToInstall) {
87
89
  counter++;
88
90
  trm_commons_1.Logger.loading(`Getting ready to install missing dependency "${dependency.name}"...`);
89
- var prefix = ` (${counter}/${context.runtime.dependenciesToInstall.length}) `;
90
- if (trm_commons_1.Logger.getPrefix()) {
91
- prefix = `${trm_commons_1.Logger.getPrefix()} -> ${prefix}`;
91
+ var prefix = `(${counter}/${context.runtime.dependenciesToInstall.length}) `;
92
+ if (originalLPrefix) {
93
+ trm_commons_1.Logger.setPrefix(`${originalLPrefix}-> ${prefix}`);
94
+ }
95
+ else {
96
+ trm_commons_1.Logger.setPrefix(` ${prefix}`);
97
+ }
98
+ if (originalIPrefix) {
99
+ trm_commons_1.Inquirer.setPrefix(`${originalIPrefix}-> ${prefix}`);
100
+ }
101
+ else {
102
+ trm_commons_1.Inquirer.setPrefix(` ${prefix}`);
92
103
  }
93
- trm_commons_1.Logger.setPrefix(prefix);
94
- trm_commons_1.Inquirer.setPrefix(prefix);
95
104
  var inputData = {
96
105
  dependencyDataPackage: {
97
106
  name: dependency.name,
@@ -108,8 +117,8 @@ exports.installDependencies = {
108
117
  trm_commons_1.Logger.log(`Ready to execute sub-workflow ${SUBWORKFLOW_NAME}, input data: ${(0, trm_commons_1.inspect)(inputData, { breakLength: Infinity, compact: true })}`, true);
109
118
  const result = yield (0, __1.installDependency)(inputData);
110
119
  trm_commons_1.Logger.log(`Workflow ${SUBWORKFLOW_NAME} result: ${(0, trm_commons_1.inspect)(result, { breakLength: Infinity, compact: true })}`, true);
111
- trm_commons_1.Logger.removePrefix();
112
- trm_commons_1.Inquirer.removePrefix();
120
+ trm_commons_1.Logger.setPrefix(originalLPrefix);
121
+ trm_commons_1.Inquirer.setPrefix(originalIPrefix);
113
122
  }
114
123
  })
115
124
  };
@@ -20,7 +20,10 @@ function getPackageHierarchy(input) {
20
20
  roots.push(child);
21
21
  }
22
22
  });
23
- if (roots.length > 1) {
23
+ if (roots.length === 0) {
24
+ throw new Error(`No root found in package hierarchy.`);
25
+ }
26
+ else if (roots.length > 1) {
24
27
  throw new Error(`Multiple roots found in package hierarchy.`);
25
28
  }
26
29
  return roots[0];
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const fs_1 = require("fs");
4
+ const path_1 = require("path");
5
+ const semver_1 = require("semver");
6
+ const currentVersion = process.version;
7
+ const pkgPath = (0, path_1.resolve)(__dirname, '../../package.json');
8
+ const pkg = JSON.parse((0, fs_1.readFileSync)(pkgPath, 'utf8'));
9
+ const requiredRange = pkg.engines && pkg.engines.node;
10
+ if (!requiredRange) {
11
+ console.warn('No "engines.node" field in package.json. Skipping Node version check.');
12
+ process.exit(0);
13
+ }
14
+ if (!(0, semver_1.satisfies)(currentVersion, requiredRange)) {
15
+ console.error(`\nERROR: This package requires Node.js ${requiredRange}, but you are using ${currentVersion}.\n`);
16
+ process.exit(1);
17
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trm-core",
3
- "version": "7.2.0",
3
+ "version": "7.3.0",
4
4
  "description": "TRM (Transport Request Manager) Core",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -17,7 +17,8 @@
17
17
  "cleanBuild": "rimraf dist/",
18
18
  "build": "npm run cleanBuild && tsc --sourceMap false",
19
19
  "test": "jest",
20
- "prepublishOnly": "npm run build"
20
+ "prepublishOnly": "npm run build",
21
+ "postinstall": "node dist/scripts/checkEngine.js"
21
22
  },
22
23
  "keywords": [
23
24
  "trm",
@@ -26,7 +27,7 @@
26
27
  "homepage": "https://www.trmregistry.com",
27
28
  "repository": {
28
29
  "type": "git",
29
- "url": "https://github.com/RegestaItalia/trm-core.git"
30
+ "url": "git+https://github.com/RegestaItalia/trm-core.git"
30
31
  },
31
32
  "author": {
32
33
  "name": "Simone Gaffurini",
@@ -86,5 +87,8 @@
86
87
  "ts-jest": "^29.1.2",
87
88
  "ts-node": "^10.9.2",
88
89
  "typescript": "^5.8.2"
90
+ },
91
+ "engines": {
92
+ "node": "^22.12.0"
89
93
  }
90
94
  }