trm-core 9.6.0 → 9.8.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 +14 -0
- package/changelog.txt +7 -1
- package/dist/actions/install/importDevcTransport.js +4 -4
- package/dist/actions/install/readTadir.js +11 -3
- package/dist/actions/install/setInstallDevclass.js +1 -2
- package/dist/client/RESTClient.js +2 -2
- package/dist/client/RFCClient.js +5 -4
- package/dist/commons/adjustTrmServerRestDevclass.d.ts +1 -0
- package/dist/commons/adjustTrmServerRestDevclass.js +6 -0
- package/dist/commons/index.d.ts +1 -0
- package/dist/commons/index.js +1 -0
- package/dist/systemConnector/SystemConnectorBase.js +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -29,6 +29,20 @@ TRM introduces **package-based software delivery** to the SAP ecosystem, bringin
|
|
|
29
29
|
|
|
30
30
|
Full documentation can be seen at [https://docs.trmregistry.com/](https://docs.trmregistry.com).
|
|
31
31
|
|
|
32
|
+
# Usage
|
|
33
|
+
|
|
34
|
+
`trm-core` is a low-level library and is **not intended to be used directly** by end users.
|
|
35
|
+
|
|
36
|
+
In order to interact with SAP systems, `trm-core` must be consumed by a compatible client implementation.
|
|
37
|
+
|
|
38
|
+
## CLI Client
|
|
39
|
+
|
|
40
|
+
Install the official CLI client via npm:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npm install trm-client -g
|
|
44
|
+
```
|
|
45
|
+
|
|
32
46
|
# Contributing
|
|
33
47
|
Like every other TRM open-source projects, contributions are always welcomed ❤️.
|
|
34
48
|
|
package/changelog.txt
CHANGED
|
@@ -8,8 +8,14 @@ Legend
|
|
|
8
8
|
+ : added
|
|
9
9
|
- : removed
|
|
10
10
|
|
|
11
|
-
2026-
|
|
11
|
+
2026-06-15 v9.8.0
|
|
12
12
|
-------------------
|
|
13
|
+
! guard table read result fields order
|
|
14
|
+
! sanitize package contents from registry
|
|
15
|
+
|
|
16
|
+
2026-05-26 v9.7.0
|
|
17
|
+
-------------------
|
|
18
|
+
* install of trm-server and trm-rest
|
|
13
19
|
! trm-commons ^5.0.0
|
|
14
20
|
|
|
15
21
|
2026-05-08 v9.5.1
|
|
@@ -68,6 +68,10 @@ exports.importDevcTransport = {
|
|
|
68
68
|
yield systemConnector_1.SystemConnector.connect(true);
|
|
69
69
|
trm_commons_1.Logger.success(`OK, continue`, true);
|
|
70
70
|
}
|
|
71
|
+
for (const tdevc of context.runtime.packageTransportsData.tdevc) {
|
|
72
|
+
trm_commons_1.Logger.log(`Running TDEVC interface for devclass ${tdevc.devclass} -> transport layer ${context.rawInput.installData.installDevclass.transportLayer}`, true);
|
|
73
|
+
yield systemConnector_1.SystemConnector.setPackageTransportLayer(tdevc.devclass, context.rawInput.installData.installDevclass.transportLayer);
|
|
74
|
+
}
|
|
71
75
|
if (rootDevclass && rootDevclass.parentcl) {
|
|
72
76
|
yield systemConnector_1.SystemConnector.setPackageSuperpackage(context.runtime.originalData.hierarchy.devclass, rootDevclass.parentcl);
|
|
73
77
|
}
|
|
@@ -85,9 +89,5 @@ exports.importDevcTransport = {
|
|
|
85
89
|
trm_commons_1.Logger.log(`Running TADIR interface for object ${object.pgmid} ${object.object} ${object.objName}, devclass ${object.devclass} -> src system ${object.srcsystem}`, true);
|
|
86
90
|
yield systemConnector_1.SystemConnector.tadirInterface(object);
|
|
87
91
|
}
|
|
88
|
-
for (const tdevc of context.runtime.packageTransportsData.tdevc) {
|
|
89
|
-
trm_commons_1.Logger.log(`Running TDEVC interface for devclass ${tdevc.devclass} -> transport layer ${context.rawInput.installData.installDevclass.transportLayer}`, true);
|
|
90
|
-
yield systemConnector_1.SystemConnector.setPackageTransportLayer(tdevc.devclass, context.rawInput.installData.installDevclass.transportLayer);
|
|
91
|
-
}
|
|
92
92
|
})
|
|
93
93
|
};
|
|
@@ -21,13 +21,21 @@ exports.readTadir = {
|
|
|
21
21
|
if (!context.runtime.remotePackageData.contents) {
|
|
22
22
|
context.runtime.packageTransportsData.tadir = (0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(context.runtime.packageTransports.tadir.binaries.binaries.data, 'TADIR'));
|
|
23
23
|
}
|
|
24
|
+
else {
|
|
25
|
+
context.runtime.packageTransportsData.tadir = context.runtime.packageTransportsData.tadir.filter(o => o.pgmid === 'R3TR' && !(o.pgmid === 'R3TR' && o.object === 'DEVC'));
|
|
26
|
+
}
|
|
24
27
|
trm_commons_1.Logger.log(`TADIR TADIR: ${JSON.stringify(context.runtime.packageTransportsData.tadir)}`, true);
|
|
25
28
|
var existingObjects = [];
|
|
29
|
+
const checkTadir = context.runtime.packageTransportsData.tadir.map(o => {
|
|
30
|
+
return Object.assign(Object.assign({}, o), {
|
|
31
|
+
devclass: context.runtime.isTrmServerRest ? (0, commons_1.adjustTrmServerRestDevclass)(o.devclass) : o.devclass
|
|
32
|
+
});
|
|
33
|
+
});
|
|
26
34
|
if (!systemConnector_1.SystemConnector.getSupportedBulk().getTransportObjects) {
|
|
27
|
-
existingObjects = yield systemConnector_1.SystemConnector.getExistingObjects(
|
|
35
|
+
existingObjects = yield systemConnector_1.SystemConnector.getExistingObjects(checkTadir);
|
|
28
36
|
}
|
|
29
37
|
else {
|
|
30
|
-
existingObjects = yield systemConnector_1.SystemConnector.getExistingObjectsBulk(
|
|
38
|
+
existingObjects = yield systemConnector_1.SystemConnector.getExistingObjectsBulk(checkTadir);
|
|
31
39
|
}
|
|
32
40
|
trm_commons_1.Logger.log(`TADIR object that already exist in system: ${JSON.stringify(existingObjects)}`, true);
|
|
33
41
|
var throwExistingObjectsError = false;
|
|
@@ -39,7 +47,7 @@ exports.readTadir = {
|
|
|
39
47
|
const rootDevclass = rootPackage.getDevclass();
|
|
40
48
|
if (rootDevclass) {
|
|
41
49
|
const subpackages = (yield systemConnector_1.SystemConnector.getSubpackages(rootDevclass)).map(o => o.devclass);
|
|
42
|
-
existingObjects.
|
|
50
|
+
existingObjects.forEach(o => {
|
|
43
51
|
if (subpackages.includes(o.devclass) || rootDevclass === o.devclass) {
|
|
44
52
|
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);
|
|
45
53
|
}
|
|
@@ -60,8 +60,7 @@ exports.setInstallDevclass = {
|
|
|
60
60
|
const replacement = context.rawInput.installData.installDevclass.replacements.find(o => o.originalDevclass === t.devclass);
|
|
61
61
|
if (updateNamespace) {
|
|
62
62
|
if (!replacement && updateNamespace === '$' && context.runtime.isTrmServerRest) {
|
|
63
|
-
adaptDevclassName =
|
|
64
|
-
adaptDevclassName = adaptDevclassName.replace(new RegExp(`^/ATRM/REST`, 'gmi'), '$TRM_REST');
|
|
63
|
+
adaptDevclassName = (0, commons_1.adjustTrmServerRestDevclass)(adaptDevclassName);
|
|
65
64
|
}
|
|
66
65
|
else {
|
|
67
66
|
adaptDevclassName = adaptDevclassName.replace(new RegExp(`^${originalNamespace}`, 'gmi'), updateNamespace);
|
|
@@ -215,8 +215,8 @@ class RESTClient {
|
|
|
215
215
|
data.forEach(tab512 => {
|
|
216
216
|
var sqlLine = {};
|
|
217
217
|
const waSplit = tab512.wa.split(delimiter);
|
|
218
|
-
fields.forEach((field, index) => {
|
|
219
|
-
sqlLine[field.
|
|
218
|
+
result.data.fields.forEach((field, index) => {
|
|
219
|
+
sqlLine[field.fieldname] = waSplit[index].trim();
|
|
220
220
|
});
|
|
221
221
|
sqlOutput.push(sqlLine);
|
|
222
222
|
});
|
package/dist/client/RFCClient.js
CHANGED
|
@@ -250,6 +250,7 @@ class RFCClient {
|
|
|
250
250
|
var sqlOutput = [];
|
|
251
251
|
const delimiter = '|';
|
|
252
252
|
var aOptions = [];
|
|
253
|
+
tableName = tableName.toUpperCase();
|
|
253
254
|
if (options) {
|
|
254
255
|
const aSplit = options.split(/\s+AND\s+/);
|
|
255
256
|
if (aSplit.length > 1) {
|
|
@@ -271,17 +272,17 @@ class RFCClient {
|
|
|
271
272
|
}
|
|
272
273
|
try {
|
|
273
274
|
const result = yield this._call("RFC_READ_TABLE", {
|
|
274
|
-
query_table: tableName
|
|
275
|
+
query_table: tableName,
|
|
275
276
|
delimiter,
|
|
276
277
|
options: aOptions,
|
|
277
|
-
fields
|
|
278
|
+
fields
|
|
278
279
|
}, undefined, noErrorParsing);
|
|
279
280
|
const data = result['data'];
|
|
280
281
|
data.forEach(tab512 => {
|
|
281
282
|
var sqlLine = {};
|
|
282
283
|
const waSplit = tab512.wa.split(delimiter);
|
|
283
|
-
fields.forEach((field, index) => {
|
|
284
|
-
sqlLine[field
|
|
284
|
+
result.fields.forEach((field, index) => {
|
|
285
|
+
sqlLine[field.fieldname] = waSplit[index].trim();
|
|
285
286
|
});
|
|
286
287
|
sqlOutput.push(sqlLine);
|
|
287
288
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function adjustTrmServerRestDevclass(devclass: string): string;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.adjustTrmServerRestDevclass = adjustTrmServerRestDevclass;
|
|
4
|
+
function adjustTrmServerRestDevclass(devclass) {
|
|
5
|
+
return devclass.replace(new RegExp(`^/ATRM/SERVER`, 'gmi'), '$TRM').replace(new RegExp(`^/ATRM/REST`, 'gmi'), '$TRM_REST');
|
|
6
|
+
}
|
package/dist/commons/index.d.ts
CHANGED
package/dist/commons/index.js
CHANGED
|
@@ -30,3 +30,4 @@ __exportStar(require("./getNodePackage"), exports);
|
|
|
30
30
|
__exportStar(require("./getCoreTrmDependencies"), exports);
|
|
31
31
|
__exportStar(require("./checkCoreTrmDependencies"), exports);
|
|
32
32
|
__exportStar(require("./jsonStringifyWithKeyOrder"), exports);
|
|
33
|
+
__exportStar(require("./adjustTrmServerRestDevclass"), exports);
|