trm-core 6.9.0 → 7.0.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/changelog.txt CHANGED
@@ -8,6 +8,16 @@ Legend
8
8
  + : added
9
9
  - : removed
10
10
 
11
+ 2025-06-03 v7.0.0
12
+ -------------------
13
+ ! trm-server ^4.0.0
14
+ + change tr owner on install tr update
15
+
16
+ 2025-05-29 v6.9.1
17
+ -------------------
18
+ * remote function for updating server
19
+ + confirm if objects exists but no root sap package found
20
+
11
21
  2025-05-29 v6.9.0
12
22
  -------------------
13
23
  ! check server api auth before install and publish
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.generateInstallTransport = void 0;
13
13
  const trm_commons_1 = require("trm-commons");
14
14
  const commons_1 = require("../../commons");
15
+ const systemConnector_1 = require("../../systemConnector");
15
16
  const transport_1 = require("../../transport");
16
17
  exports.generateInstallTransport = {
17
18
  name: 'generate-install-transport',
@@ -39,6 +40,9 @@ exports.generateInstallTransport = {
39
40
  if (commons_1.TrmServerUpgrade.getInstance().removeComments()) {
40
41
  yield context.runtime.installData.transport.removeComments();
41
42
  }
43
+ if (commons_1.TrmServerUpgrade.getInstance().changeTrOwner()) {
44
+ yield context.runtime.installData.transport.changeOwner(systemConnector_1.SystemConnector.getLogonUser());
45
+ }
42
46
  }
43
47
  else {
44
48
  trm_commons_1.Logger.loading(`Generating install transport...`);
@@ -35,23 +35,41 @@ exports.readTadir = {
35
35
  const rootPackage = context.rawInput.contextData.systemPackages.find(o => o.packageName === context.rawInput.packageData.name);
36
36
  if (rootPackage) {
37
37
  const rootDevclass = rootPackage.getDevclass();
38
- const subpackages = (yield systemConnector_1.SystemConnector.getSubpackages(rootDevclass)).map(o => o.devclass);
39
- existingObjects.find(o => {
40
- if (subpackages.includes(o.devclass) || rootDevclass === o.devclass) {
41
- trm_commons_1.Logger.log(`${o.pgmid} ${o.object} ${o.objName} already in system but devclass ${o.devclass} is part of the same trm package in update`, true);
42
- }
43
- else {
44
- if (context.rawInput.installData.checks.noExistingObjects) {
45
- trm_commons_1.Logger.warning(`${o.pgmid} ${o.object} ${o.objName} already exist on target system ${systemConnector_1.SystemConnector.getDest()}`);
38
+ if (rootDevclass) {
39
+ const subpackages = (yield systemConnector_1.SystemConnector.getSubpackages(rootDevclass)).map(o => o.devclass);
40
+ existingObjects.find(o => {
41
+ if (subpackages.includes(o.devclass) || rootDevclass === o.devclass) {
42
+ trm_commons_1.Logger.log(`${o.pgmid} ${o.object} ${o.objName} already in system but devclass ${o.devclass} is part of the same trm package in update`, true);
46
43
  }
47
44
  else {
48
- trm_commons_1.Logger.error(`${o.pgmid} ${o.object} ${o.objName} already exist on target system ${systemConnector_1.SystemConnector.getDest()}`);
45
+ if (context.rawInput.installData.checks.noExistingObjects) {
46
+ trm_commons_1.Logger.warning(`${o.pgmid} ${o.object} ${o.objName} already exist on target system ${systemConnector_1.SystemConnector.getDest()}`);
47
+ }
48
+ else {
49
+ trm_commons_1.Logger.error(`${o.pgmid} ${o.object} ${o.objName} already exist on target system ${systemConnector_1.SystemConnector.getDest()}`);
50
+ }
51
+ throwExistingObjectsError = true;
52
+ }
53
+ });
54
+ if (throwExistingObjectsError && !context.rawInput.installData.checks.noExistingObjects) {
55
+ throw new Error(`Cannot overwrite existing objects.`);
56
+ }
57
+ }
58
+ else {
59
+ if (context.rawInput.installData.checks.noExistingObjects || context.rawInput.contextData.noInquirer) {
60
+ trm_commons_1.Logger.warning(`${existingObjects.length} object(s) already exist on target system ${systemConnector_1.SystemConnector.getDest()}:\n${sObjs}`);
61
+ }
62
+ else {
63
+ const ow = (yield trm_commons_1.Inquirer.prompt({
64
+ message: `Couldn't determine root SAP package for "${rootPackage.packageName}", ${existingObjects.length} object(s) already exist on target system ${systemConnector_1.SystemConnector.getDest()}. Continue?`,
65
+ type: 'confirm',
66
+ name: 'ow',
67
+ default: true
68
+ })).ow;
69
+ if (!ow) {
70
+ throw new Error(`${existingObjects.length} object(s) already exist on target system ${systemConnector_1.SystemConnector.getDest()}:\n${sObjs}`);
49
71
  }
50
- throwExistingObjectsError = true;
51
72
  }
52
- });
53
- if (throwExistingObjectsError && !context.rawInput.installData.checks.noExistingObjects) {
54
- throw new Error(`Cannot overwrite existing objects.`);
55
73
  }
56
74
  }
57
75
  else {
@@ -66,4 +66,5 @@ export declare class RESTClient implements IClient {
66
66
  }>;
67
67
  getInstalledPackagesBackend(): Promise<struct.ZTY_TRM_PACKAGE[]>;
68
68
  isServerApisAllowed(): Promise<true | RESTClientError>;
69
+ changeTrOwner(trkorr: components.TRKORR, owner: components.TR_AS4USER): Promise<void>;
69
70
  }
@@ -90,6 +90,12 @@ class RESTClient {
90
90
  return response;
91
91
  }, (error) => __awaiter(this, void 0, void 0, function* () {
92
92
  var axiosError;
93
+ var message;
94
+ var messageError;
95
+ var sapMessage = {
96
+ class: undefined,
97
+ no: undefined
98
+ };
93
99
  if (error.name === `Trm${AXIOS_CTX}Error`) {
94
100
  axiosError = error.axiosError;
95
101
  }
@@ -101,26 +107,29 @@ class RESTClient {
101
107
  throw error;
102
108
  }
103
109
  }
104
- var message;
105
- var messageError;
106
- const sapMessage = {
107
- no: `${axiosError.response.data.message.msgno}`,
108
- class: axiosError.response.data.message.msgid,
109
- v1: axiosError.response.data.message.msgv1,
110
- v2: axiosError.response.data.message.msgv2,
111
- v3: axiosError.response.data.message.msgv3,
112
- v4: axiosError.response.data.message.msgv4
113
- };
114
- try {
115
- message = yield this.getMessage(sapMessage);
110
+ if (axiosError.response.data.message) {
111
+ sapMessage = {
112
+ no: `${axiosError.response.data.message.msgno}`,
113
+ class: axiosError.response.data.message.msgid,
114
+ v1: axiosError.response.data.message.msgv1,
115
+ v2: axiosError.response.data.message.msgv2,
116
+ v3: axiosError.response.data.message.msgv3,
117
+ v4: axiosError.response.data.message.msgv4
118
+ };
119
+ try {
120
+ message = yield this.getMessage(sapMessage);
121
+ }
122
+ catch (k) {
123
+ messageError = k;
124
+ message = `Couldn't read error message ${axiosError.response.data.message.msgid} ${axiosError.response.data.message.msgno} ${axiosError.response.data.message.msgv1} ${axiosError.response.data.message.msgv2} ${axiosError.response.data.message.msgv3} ${axiosError.response.data.message.msgv4}`;
125
+ }
116
126
  }
117
- catch (k) {
118
- messageError = k;
119
- message = `Couldn't read error message ${axiosError.response.data.message.msgid} ${axiosError.response.data.message.msgno} ${axiosError.response.data.message.msgv1} ${axiosError.response.data.message.msgv2} ${axiosError.response.data.message.msgv3} ${axiosError.response.data.message.msgv4}`;
127
+ else {
128
+ throw error;
120
129
  }
121
130
  var rfcClientError = new _1.RESTClientError(error.message, sapMessage, axiosError, message);
122
131
  if (messageError) {
123
- rfcClientError.messageError = messageError;
132
+ rfcClientError.messageError = messageError.toString();
124
133
  }
125
134
  if (axiosError.response.data.log) {
126
135
  rfcClientError.messageLog = axiosError.response.data.log;
@@ -667,5 +676,13 @@ class RESTClient {
667
676
  }
668
677
  });
669
678
  }
679
+ changeTrOwner(trkorr, owner) {
680
+ return __awaiter(this, void 0, void 0, function* () {
681
+ yield this._axiosInstance.post('/change_tr_owner', {
682
+ trkorr,
683
+ new_owner: owner
684
+ });
685
+ });
686
+ }
670
687
  }
671
688
  exports.RESTClient = RESTClient;
@@ -66,4 +66,5 @@ export declare class RFCClient implements IClient {
66
66
  }>;
67
67
  getInstalledPackagesBackend(): Promise<struct.ZTY_TRM_PACKAGE[]>;
68
68
  isServerApisAllowed(): Promise<true | RFCClientError>;
69
+ changeTrOwner(trkorr: components.TRKORR, owner: components.TR_AS4USER): Promise<void>;
69
70
  }
@@ -668,9 +668,22 @@ class RFCClient {
668
668
  return true;
669
669
  }
670
670
  catch (e) {
671
- return e;
671
+ if (e.exceptionType !== 'CALL_FUNCTION_NOT_REMOTE') {
672
+ return e;
673
+ }
674
+ else {
675
+ return true;
676
+ }
672
677
  }
673
678
  });
674
679
  }
680
+ changeTrOwner(trkorr, owner) {
681
+ return __awaiter(this, void 0, void 0, function* () {
682
+ yield this._call("ZTRM_CHANGE_TR_OWNER", {
683
+ iv_trkorr: trkorr,
684
+ iv_new_owner: owner
685
+ });
686
+ });
687
+ }
675
688
  }
676
689
  exports.RFCClient = RFCClient;
@@ -0,0 +1 @@
1
+ export type TR_AS4USER = string;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -55,3 +55,4 @@ export * from "./SEOCLSNAME";
55
55
  export * from "./LANGU";
56
56
  export * from "./SEODESCR";
57
57
  export * from "./PROGNAME";
58
+ export * from "./TR_AS4USER";
@@ -71,3 +71,4 @@ __exportStar(require("./SEOCLSNAME"), exports);
71
71
  __exportStar(require("./LANGU"), exports);
72
72
  __exportStar(require("./SEODESCR"), exports);
73
73
  __exportStar(require("./PROGNAME"), exports);
74
+ __exportStar(require("./TR_AS4USER"), exports);
@@ -12,4 +12,5 @@ export declare class TrmServerUpgrade {
12
12
  executePostActivities(): boolean;
13
13
  removeComments(): boolean;
14
14
  refreshTmsTxt(): boolean;
15
+ changeTrOwner(): boolean;
15
16
  }
@@ -77,5 +77,13 @@ class TrmServerUpgrade {
77
77
  return !((0, semver_1.lt)(this.currentVersion, '2.2.0') && (0, semver_1.gte)(this.installVersion, '2.2.0'));
78
78
  }
79
79
  }
80
+ changeTrOwner() {
81
+ if (this.dummy) {
82
+ return true;
83
+ }
84
+ else {
85
+ return !((0, semver_1.lt)(this.currentVersion, '4.0.0') && (0, semver_1.gte)(this.installVersion, '4.0.0'));
86
+ }
87
+ }
80
88
  }
81
89
  exports.TrmServerUpgrade = TrmServerUpgrade;
@@ -59,4 +59,5 @@ export interface ISystemConnector extends ISystemConnectorBase {
59
59
  execute?: boolean;
60
60
  }>;
61
61
  isServerApisAllowed: () => Promise<true | ClientError>;
62
+ changeTrOwner: (trkorr: components.TRKORR, owner: components.TR_AS4USER) => Promise<void>;
62
63
  }
@@ -79,4 +79,5 @@ export declare class RESTSystemConnector extends SystemConnectorBase implements
79
79
  execute?: boolean;
80
80
  }>;
81
81
  isServerApisAllowed(): Promise<true | ClientError>;
82
+ changeTrOwner(trkorr: components.TRKORR, owner: components.TR_AS4USER): Promise<void>;
82
83
  }
@@ -327,5 +327,10 @@ class RESTSystemConnector extends SystemConnectorBase_1.SystemConnectorBase {
327
327
  return this._isServerApisAllowed;
328
328
  });
329
329
  }
330
+ changeTrOwner(trkorr, owner) {
331
+ return __awaiter(this, void 0, void 0, function* () {
332
+ return this._client.changeTrOwner(trkorr, owner);
333
+ });
334
+ }
330
335
  }
331
336
  exports.RESTSystemConnector = RESTSystemConnector;
@@ -78,4 +78,5 @@ export declare class RFCSystemConnector extends SystemConnectorBase implements I
78
78
  execute?: boolean;
79
79
  }>;
80
80
  isServerApisAllowed(): Promise<true | ClientError>;
81
+ changeTrOwner(trkorr: components.TRKORR, owner: components.TR_AS4USER): Promise<void>;
81
82
  }
@@ -303,5 +303,10 @@ class RFCSystemConnector extends SystemConnectorBase_1.SystemConnectorBase {
303
303
  return this._isServerApisAllowed;
304
304
  });
305
305
  }
306
+ changeTrOwner(trkorr, owner) {
307
+ return __awaiter(this, void 0, void 0, function* () {
308
+ return this._client.changeTrOwner(trkorr, owner);
309
+ });
310
+ }
306
311
  }
307
312
  exports.RFCSystemConnector = RFCSystemConnector;
@@ -92,4 +92,5 @@ export declare namespace SystemConnector {
92
92
  }>;
93
93
  function readClassDescriptions(clsname: components.SEOCLSNAME): Promise<struct.SEOCLASSTX[]>;
94
94
  function isServerApisAllowed(): Promise<true | ClientError>;
95
+ function changeTrOwner(trkorr: components.TRKORR, owner: components.TR_AS4USER): Promise<void>;
95
96
  }
@@ -527,4 +527,11 @@ var SystemConnector;
527
527
  });
528
528
  }
529
529
  SystemConnector.isServerApisAllowed = isServerApisAllowed;
530
+ function changeTrOwner(trkorr, owner) {
531
+ return __awaiter(this, void 0, void 0, function* () {
532
+ yield checkSystemConnector();
533
+ return SystemConnector.systemConnector.changeTrOwner(trkorr, owner);
534
+ });
535
+ }
536
+ SystemConnector.changeTrOwner = changeTrOwner;
530
537
  })(SystemConnector || (exports.SystemConnector = SystemConnector = {}));
@@ -6,7 +6,7 @@ import { TransportContent } from "./TransportContent";
6
6
  import { Documentation } from "./Documentation";
7
7
  import { TrmTransportIdentifier } from "./TrmTransportIdentifier";
8
8
  import { TrmPackage } from "../trmPackage";
9
- import { TROBJTYPE, E070, E071, TRKORR, TR_TARGET, DEVCLASS, TROBJ_NAME, AS4TEXT, PGMID, SOBJ_NAME, TMSSYSNAM, TDEVC } from "../client";
9
+ import { TROBJTYPE, E070, E071, TRKORR, TR_TARGET, DEVCLASS, TROBJ_NAME, AS4TEXT, PGMID, SOBJ_NAME, TMSSYSNAM, TDEVC, TR_AS4USER } from "../client";
10
10
  export declare const COMMENT_OBJ: TROBJTYPE;
11
11
  export declare class Transport {
12
12
  trkorr: TRKORR;
@@ -87,4 +87,5 @@ export declare class Transport {
87
87
  migrate(rollback?: boolean): Promise<Transport | void>;
88
88
  deleteFromTms(system: TMSSYSNAM): Promise<void>;
89
89
  refreshTmsTxt(): Promise<void>;
90
+ changeOwner(newOwner: TR_AS4USER): Promise<void>;
90
91
  }
@@ -827,5 +827,10 @@ class Transport {
827
827
  yield systemConnector_1.SystemConnector.refreshTransportTmsTxt(this.trkorr);
828
828
  });
829
829
  }
830
+ changeOwner(newOwner) {
831
+ return __awaiter(this, void 0, void 0, function* () {
832
+ yield systemConnector_1.SystemConnector.changeTrOwner(this.trkorr, newOwner);
833
+ });
834
+ }
830
835
  }
831
836
  exports.Transport = Transport;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trm-core",
3
- "version": "6.9.0",
3
+ "version": "7.0.0",
4
4
  "description": "TRM (Transport Request Manager) Core",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -34,7 +34,7 @@
34
34
  },
35
35
  "license": "MIT",
36
36
  "trmDependencies": {
37
- "trm-server": "^3.1.0"
37
+ "trm-server": "^4.0.0"
38
38
  },
39
39
  "dependencies": {
40
40
  "@esm2cjs/normalize-url": "^8.0.0",