trm-core 9.3.0 → 9.5.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 +14 -1
- package/dist/actions/install/addNamespace.js +34 -66
- package/dist/actions/install/checkAlreadyInstalled.js +6 -2
- package/dist/actions/install/checkTransports.js +23 -12
- package/dist/actions/install/importDevcTransport.js +8 -11
- package/dist/actions/install/importTadirTransport.js +7 -0
- package/dist/actions/install/index.js +0 -4
- package/dist/actions/install/readDevc.js +1 -1
- package/dist/actions/install/readTadir.js +1 -1
- package/dist/actions/install/setInstallDevclass.js +19 -8
- package/dist/registry/AbstractRegistry.d.ts +1 -1
- package/dist/registry/RegistryV2.d.ts +1 -1
- package/dist/registry/RegistryV2.js +4 -4
- package/dist/transport/Transport.js +0 -1
- package/dist/trmPackage/TrmArtifact.js +4 -1
- package/package.json +4 -4
- package/dist/actions/install/commit.d.ts +0 -3
- package/dist/actions/install/commit.js +0 -33
- package/dist/actions/install/setR3trans.d.ts +0 -3
- package/dist/actions/install/setR3trans.js +0 -29
package/changelog.txt
CHANGED
|
@@ -8,7 +8,20 @@ Legend
|
|
|
8
8
|
+ : added
|
|
9
9
|
- : removed
|
|
10
10
|
|
|
11
|
-
2026-
|
|
11
|
+
2026-05-07 v9.5.0
|
|
12
|
+
-------------------
|
|
13
|
+
* avoid usage of r3trans when entries are provided by registry
|
|
14
|
+
! registry return type on publish
|
|
15
|
+
! trm-commons ^4.2.0
|
|
16
|
+
|
|
17
|
+
2026-04-29 v9.4.0
|
|
18
|
+
-------------------
|
|
19
|
+
! trm-commons ^4.1.0
|
|
20
|
+
* upgrade of trm-server/trm-rest post /ATRM/ package replacements
|
|
21
|
+
! usage of temporary packages instead of namespace
|
|
22
|
+
! avoid usage of r3trans when entries are provided by registry
|
|
23
|
+
|
|
24
|
+
2026-04-21 v9.3.0
|
|
12
25
|
-------------------
|
|
13
26
|
* avoid useless transport unpack for reading transport number
|
|
14
27
|
! usage with devc transport import when replacements are like original
|
|
@@ -27,87 +27,55 @@ exports.addNamespace = {
|
|
|
27
27
|
context.runtime.installData.namespace = originalNamespace;
|
|
28
28
|
}
|
|
29
29
|
if (context.runtime.installData.namespace[0] !== '/') {
|
|
30
|
-
trm_commons_1.Logger.log(`Package install namespace is ${context.runtime.installData.namespace}`, true);
|
|
30
|
+
trm_commons_1.Logger.log(`Package install namespace is ${context.runtime.installData.namespace}, continue`, true);
|
|
31
31
|
return;
|
|
32
32
|
}
|
|
33
|
-
trm_commons_1.Logger.loading(`Checking namespace ${context.runtime.installData.namespace}...`);
|
|
34
|
-
var namespace;
|
|
33
|
+
trm_commons_1.Logger.loading(`Checking namespace ${context.runtime.installData.namespace} status in system...`);
|
|
35
34
|
const namespaceCheck = yield systemConnector_1.SystemConnector.getNamespace(context.runtime.installData.namespace);
|
|
36
|
-
if (namespaceCheck) {
|
|
37
|
-
namespace
|
|
38
|
-
}
|
|
39
|
-
if (namespace) {
|
|
40
|
-
trm_commons_1.Logger.log(`Namespace ${context.runtime.installData.namespace} already defined`, true);
|
|
35
|
+
if (namespaceCheck && namespaceCheck.trnspacet) {
|
|
36
|
+
trm_commons_1.Logger.log(`Namespace ${context.runtime.installData.namespace} exists in system, continue`, true);
|
|
41
37
|
return;
|
|
42
38
|
}
|
|
43
39
|
else {
|
|
44
|
-
if (context.
|
|
45
|
-
|
|
46
|
-
|
|
40
|
+
if (context.runtime.installData.namespace === originalNamespace) {
|
|
41
|
+
if (context.rawInput.installData.installDevclass.keepOriginal) {
|
|
42
|
+
trm_commons_1.Logger.warning(`Install will continue without importing namespace ${context.runtime.installData.namespace}. Run install with namespace import or manually add namespace in SE03.`, context.runtime.installData.namespace === '/ATRM/');
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (context.rawInput.installData.installDevclass.skipNamespace === undefined && !context.rawInput.contextData.noInquirer) {
|
|
46
|
+
context.rawInput.installData.installDevclass.skipNamespace = !(yield trm_commons_1.Inquirer.prompt({
|
|
47
|
+
message: `Package uses namespace ${context.runtime.installData.namespace}, do you want to import it (repair license)?`,
|
|
48
|
+
name: 'skipNamespace',
|
|
49
|
+
type: 'confirm',
|
|
50
|
+
default: true
|
|
51
|
+
})).skipNamespace;
|
|
52
|
+
}
|
|
53
|
+
if (context.rawInput.installData.installDevclass.skipNamespace) {
|
|
54
|
+
throw new Error(`Cannot generate packages without namespace ${context.runtime.installData.namespace}. Run install with namespace import or avoid renaming packages.`);
|
|
55
|
+
}
|
|
47
56
|
}
|
|
48
|
-
|
|
49
|
-
throw new Error(`
|
|
57
|
+
else {
|
|
58
|
+
throw new Error(`Namespace ${context.runtime.installData.namespace} doesn't exist in ${systemConnector_1.SystemConnector.getDest()}. Manually add namespace in SE03.`);
|
|
50
59
|
}
|
|
51
60
|
}
|
|
52
61
|
var replicense;
|
|
53
|
-
var text;
|
|
54
62
|
var aTexts = [];
|
|
55
|
-
if (context.runtime.
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
else {
|
|
66
|
-
return 'Invalid characters';
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
})).replicense;
|
|
70
|
-
text = yield trm_commons_1.Inquirer.prompt([{
|
|
71
|
-
message: `dummy`,
|
|
72
|
-
name: 'namespace',
|
|
73
|
-
type: 'input',
|
|
74
|
-
when: false,
|
|
75
|
-
default: context.runtime.installData.namespace
|
|
76
|
-
}, {
|
|
77
|
-
message: `Namespace owner`,
|
|
78
|
-
name: 'owner',
|
|
79
|
-
type: 'input'
|
|
80
|
-
}, {
|
|
81
|
-
message: `Namespace language`,
|
|
82
|
-
name: 'spras',
|
|
83
|
-
type: 'input',
|
|
84
|
-
default: systemConnector_1.SystemConnector.getLogonLanguage(true)
|
|
85
|
-
}, {
|
|
86
|
-
message: `Namespace description`,
|
|
87
|
-
name: 'descriptn',
|
|
88
|
-
type: 'input'
|
|
89
|
-
}]);
|
|
90
|
-
aTexts.push(text);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
if (context.runtime.remotePackageData.manifest.namespace) {
|
|
95
|
-
replicense = context.runtime.remotePackageData.manifest.namespace.replicense;
|
|
96
|
-
aTexts = context.runtime.remotePackageData.manifest.namespace.texts.map(o => {
|
|
97
|
-
return {
|
|
98
|
-
namespace: context.runtime.remotePackageData.manifest.namespace.ns || context.runtime.installData.namespace,
|
|
99
|
-
spras: o.language,
|
|
100
|
-
descriptn: o.description,
|
|
101
|
-
owner: o.owner
|
|
102
|
-
};
|
|
103
|
-
});
|
|
104
|
-
}
|
|
63
|
+
if (context.runtime.remotePackageData.manifest.namespace) {
|
|
64
|
+
replicense = context.runtime.remotePackageData.manifest.namespace.replicense;
|
|
65
|
+
aTexts = context.runtime.remotePackageData.manifest.namespace.texts.map(o => {
|
|
66
|
+
return {
|
|
67
|
+
namespace: context.runtime.remotePackageData.manifest.namespace.ns || context.runtime.installData.namespace,
|
|
68
|
+
spras: o.language,
|
|
69
|
+
descriptn: o.description,
|
|
70
|
+
owner: o.owner
|
|
71
|
+
};
|
|
72
|
+
});
|
|
105
73
|
}
|
|
106
74
|
if (!replicense) {
|
|
107
|
-
throw new Error(`Cannot use namespace ${context.runtime.installData.namespace}: repair license
|
|
75
|
+
throw new Error(`Cannot use namespace ${context.runtime.installData.namespace}: unknown repair license.`);
|
|
108
76
|
}
|
|
109
77
|
if (aTexts.length === 0) {
|
|
110
|
-
throw new Error(`Cannot use namespace ${context.runtime.installData.namespace}:
|
|
78
|
+
throw new Error(`Cannot use namespace ${context.runtime.installData.namespace}: unknown description.`);
|
|
111
79
|
}
|
|
112
80
|
if (!context.runtime.stopWarningShown) {
|
|
113
81
|
context.runtime.stopWarningShown = true;
|
|
@@ -8,12 +8,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
11
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
15
|
exports.checkAlreadyInstalled = void 0;
|
|
13
16
|
const trm_commons_1 = require("trm-commons");
|
|
14
17
|
const manifest_1 = require("../../manifest");
|
|
15
18
|
const semver_1 = require("semver");
|
|
16
19
|
const systemConnector_1 = require("../../systemConnector");
|
|
20
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
17
21
|
exports.checkAlreadyInstalled = {
|
|
18
22
|
name: 'check-already-installed',
|
|
19
23
|
run: (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -36,10 +40,10 @@ exports.checkAlreadyInstalled = {
|
|
|
36
40
|
}
|
|
37
41
|
else {
|
|
38
42
|
if ((0, semver_1.gt)(installVersion, installedVersion)) {
|
|
39
|
-
trm_commons_1.Logger.info(
|
|
43
|
+
trm_commons_1.Logger.info(`${chalk_1.default.bold('Upgrading')} ${installedVersion} -> ${installVersion}`);
|
|
40
44
|
}
|
|
41
45
|
else {
|
|
42
|
-
trm_commons_1.Logger.warning(
|
|
46
|
+
trm_commons_1.Logger.warning(`${chalk_1.default.bold('Downgrading')} ${installedVersion} -> ${installVersion}`);
|
|
43
47
|
}
|
|
44
48
|
}
|
|
45
49
|
if (context.runtime.installData.upgradingPackage.isDirty()) {
|
|
@@ -15,19 +15,29 @@ const transport_1 = require("../../transport");
|
|
|
15
15
|
const commons_1 = require("../../commons");
|
|
16
16
|
const trm_commons_2 = require("trm-commons");
|
|
17
17
|
const systemConnector_1 = require("../../systemConnector");
|
|
18
|
+
const node_r3trans_1 = require("node-r3trans");
|
|
18
19
|
exports.checkTransports = {
|
|
19
20
|
name: 'check-transports',
|
|
20
21
|
run: (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
21
22
|
trm_commons_1.Logger.log('Check transports step', true);
|
|
22
23
|
var checkExistance = [];
|
|
24
|
+
trm_commons_1.Logger.loading(`Reading transports contents...`);
|
|
23
25
|
try {
|
|
24
26
|
context.runtime.packageTransportsData = yield context.rawInput.packageData.registry.contents(context.rawInput.packageData.name, context.rawInput.packageData.version || 'latest');
|
|
25
27
|
context.runtime.remotePackageData.contents = true;
|
|
26
28
|
}
|
|
27
|
-
catch (
|
|
29
|
+
catch (e) {
|
|
28
30
|
context.runtime.remotePackageData.contents = false;
|
|
31
|
+
const options = context.rawInput.contextData.r3transOptions;
|
|
32
|
+
trm_commons_1.Logger.log(`Loading R3Trans with options ${JSON.stringify(options)}`, true);
|
|
33
|
+
trm_commons_1.Logger.log(`R3TRANS_HOME ${process.env.R3TRANS_HOME}`, true);
|
|
34
|
+
context.runtime.r3trans = new node_r3trans_1.R3trans(options);
|
|
35
|
+
const r3transVersion = yield context.runtime.r3trans.getVersion();
|
|
36
|
+
const unicode = yield context.runtime.r3trans.isUnicode();
|
|
37
|
+
trm_commons_1.Logger.info(r3transVersion, context.rawInput.contextData.noR3transInfo);
|
|
38
|
+
trm_commons_1.Logger.log(`R3Trans unicode?: ${unicode}`, true);
|
|
29
39
|
}
|
|
30
|
-
trm_commons_1.Logger.loading(`
|
|
40
|
+
trm_commons_1.Logger.loading(`Validating package transports...`);
|
|
31
41
|
const aTransports = yield context.runtime.remotePackageData.artifact.getTransportBinaries(context.rawInput.contextData.r3transOptions, context.runtime.remotePackageData.contents);
|
|
32
42
|
trm_commons_1.Logger.log(`Package content: ${aTransports.map(o => {
|
|
33
43
|
return {
|
|
@@ -35,14 +45,16 @@ exports.checkTransports = {
|
|
|
35
45
|
type: o.type
|
|
36
46
|
};
|
|
37
47
|
})}`, true);
|
|
38
|
-
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
48
|
+
if (!context.runtime.remotePackageData.contents) {
|
|
49
|
+
for (const transport of aTransports) {
|
|
50
|
+
const valid = yield context.runtime.r3trans.isTransportValid(transport.binaries.data);
|
|
51
|
+
if (valid) {
|
|
52
|
+
trm_commons_1.Logger.log(`Transport ${transport.trkorr} is valid.`, true);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
trm_commons_1.Logger.error(`Transport ${transport.trkorr} is invalid.`, true);
|
|
56
|
+
throw new Error(`Package contains invalid transports`);
|
|
57
|
+
}
|
|
46
58
|
}
|
|
47
59
|
}
|
|
48
60
|
const aDevcTransports = aTransports.filter(o => o.type === transport_1.TrmTransportIdentifier.DEVC);
|
|
@@ -144,8 +156,7 @@ exports.checkTransports = {
|
|
|
144
156
|
context.runtime.packageTransportsData.e071 = context.runtime.packageTransportsData.e071.concat(devcE071);
|
|
145
157
|
}
|
|
146
158
|
context.runtime.installData.entries = context.runtime.packageTransportsData.e071;
|
|
147
|
-
trm_commons_1.Logger.loading(`Checking package transports...`);
|
|
148
|
-
trm_commons_1.Logger.loading(`Checking if ${checkExistance.length} transports exist before importing them`, true);
|
|
159
|
+
trm_commons_1.Logger.loading(`Checking package transports in system...`);
|
|
149
160
|
for (const trkorr of checkExistance) {
|
|
150
161
|
const oTransport = new transport_1.Transport(trkorr);
|
|
151
162
|
const e070 = yield oTransport.getE070();
|
|
@@ -61,6 +61,13 @@ exports.importDevcTransport = {
|
|
|
61
61
|
trm_commons_1.Logger.setPrefix(originalLPrefix);
|
|
62
62
|
trm_commons_1.Inquirer.setPrefix(originalIPrefix);
|
|
63
63
|
trm_commons_1.Logger.loading(`Finalizing import...`);
|
|
64
|
+
if (!systemConnector_1.SystemConnector.isStateless()) {
|
|
65
|
+
trm_commons_1.Logger.loading(`Closing connection for reconnect...`, true);
|
|
66
|
+
yield systemConnector_1.SystemConnector.closeConnection();
|
|
67
|
+
trm_commons_1.Logger.loading(`Reopening connection...`, true);
|
|
68
|
+
yield systemConnector_1.SystemConnector.connect(true);
|
|
69
|
+
trm_commons_1.Logger.success(`OK, continue`, true);
|
|
70
|
+
}
|
|
64
71
|
if (rootDevclass && rootDevclass.parentcl) {
|
|
65
72
|
yield systemConnector_1.SystemConnector.setPackageSuperpackage(context.runtime.originalData.hierarchy.devclass, rootDevclass.parentcl);
|
|
66
73
|
}
|
|
@@ -76,17 +83,7 @@ exports.importDevcTransport = {
|
|
|
76
83
|
srcsystem: 'TRM'
|
|
77
84
|
};
|
|
78
85
|
trm_commons_1.Logger.log(`Running TADIR interface for object ${object.pgmid} ${object.object} ${object.objName}, devclass ${object.devclass} -> src system ${object.srcsystem}`, true);
|
|
79
|
-
|
|
80
|
-
yield systemConnector_1.SystemConnector.tadirInterface(object);
|
|
81
|
-
}
|
|
82
|
-
catch (e) {
|
|
83
|
-
if (e.sapMessage && e.sapMessage.class === 'TO' && e.sapMessage.no === '123') {
|
|
84
|
-
trm_commons_1.Logger.log(e.toString(), true);
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
throw e;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
86
|
+
yield systemConnector_1.SystemConnector.tadirInterface(object);
|
|
90
87
|
}
|
|
91
88
|
for (const tdevc of context.runtime.packageTransportsData.tdevc) {
|
|
92
89
|
trm_commons_1.Logger.log(`Running TDEVC interface for devclass ${tdevc.devclass} -> transport layer ${context.rawInput.installData.installDevclass.transportLayer}`, true);
|
|
@@ -54,6 +54,13 @@ exports.importTadirTransport = {
|
|
|
54
54
|
trm_commons_1.Logger.setPrefix(originalLPrefix);
|
|
55
55
|
trm_commons_1.Inquirer.setPrefix(originalIPrefix);
|
|
56
56
|
trm_commons_1.Logger.loading(`Finalizing import...`);
|
|
57
|
+
if (!systemConnector_1.SystemConnector.isStateless()) {
|
|
58
|
+
trm_commons_1.Logger.loading(`Closing connection for reconnect...`, true);
|
|
59
|
+
yield systemConnector_1.SystemConnector.closeConnection();
|
|
60
|
+
trm_commons_1.Logger.loading(`Reopening connection...`, true);
|
|
61
|
+
yield systemConnector_1.SystemConnector.connect(true);
|
|
62
|
+
trm_commons_1.Logger.success(`OK, continue`, true);
|
|
63
|
+
}
|
|
57
64
|
for (const tadir of context.runtime.packageTransportsData.tadir) {
|
|
58
65
|
var object = lodash_1.default.cloneDeep(tadir);
|
|
59
66
|
if (!context.rawInput.installData.installDevclass.keepOriginal) {
|
|
@@ -23,7 +23,6 @@ const checkAlreadyInstalled_1 = require("./checkAlreadyInstalled");
|
|
|
23
23
|
const checkSapEntries_1 = require("./checkSapEntries");
|
|
24
24
|
const checkDependencies_1 = require("./checkDependencies");
|
|
25
25
|
const installDependencies_1 = require("./installDependencies");
|
|
26
|
-
const setR3trans_1 = require("./setR3trans");
|
|
27
26
|
const checkTransports_1 = require("./checkTransports");
|
|
28
27
|
const readDevc_1 = require("./readDevc");
|
|
29
28
|
const setInstallDevclass_1 = require("./setInstallDevclass");
|
|
@@ -39,7 +38,6 @@ const updatePackageData_1 = require("./updatePackageData");
|
|
|
39
38
|
const generateInstallTransport_1 = require("./generateInstallTransport");
|
|
40
39
|
const refreshTmsTxt_1 = require("./refreshTmsTxt");
|
|
41
40
|
const executePostActivities_1 = require("./executePostActivities");
|
|
42
|
-
const commit_1 = require("./commit");
|
|
43
41
|
const checkObjectsLock_1 = require("./checkObjectsLock");
|
|
44
42
|
;
|
|
45
43
|
const WORKFLOW_NAME = 'install';
|
|
@@ -53,7 +51,6 @@ function install(inputData) {
|
|
|
53
51
|
checkAlreadyInstalled_1.checkAlreadyInstalled,
|
|
54
52
|
checkSapEntries_1.checkSapEntries,
|
|
55
53
|
checkDependencies_1.checkDependencies,
|
|
56
|
-
setR3trans_1.setR3trans,
|
|
57
54
|
installDependencies_1.installDependencies,
|
|
58
55
|
checkTransports_1.checkTransports,
|
|
59
56
|
checkObjectTypes_1.checkObjectTypes,
|
|
@@ -69,7 +66,6 @@ function install(inputData) {
|
|
|
69
66
|
importCustTransport_1.importCustTransport,
|
|
70
67
|
refreshTmsTxt_1.refreshTmsTxt,
|
|
71
68
|
generateInstallTransport_1.generateInstallTransport,
|
|
72
|
-
commit_1.commit,
|
|
73
69
|
updatePackageData_1.updatePackageData,
|
|
74
70
|
executePostActivities_1.executePostActivities
|
|
75
71
|
];
|
|
@@ -16,7 +16,7 @@ exports.readDevc = {
|
|
|
16
16
|
name: 'read-devc',
|
|
17
17
|
run: (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
18
|
trm_commons_1.Logger.log('Read DEVC step', true);
|
|
19
|
-
trm_commons_1.Logger.loading(`
|
|
19
|
+
trm_commons_1.Logger.loading(`Reading SAP package transport...`);
|
|
20
20
|
if (!context.runtime.remotePackageData.contents) {
|
|
21
21
|
context.runtime.packageTransportsData.tdevc = (0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(context.runtime.packageTransports.devc.binaries.binaries.data, 'TDEVC'));
|
|
22
22
|
}
|
|
@@ -17,7 +17,7 @@ exports.readTadir = {
|
|
|
17
17
|
name: 'read-tadir',
|
|
18
18
|
run: (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
19
19
|
trm_commons_1.Logger.log('Read tadir step', true);
|
|
20
|
-
trm_commons_1.Logger.loading(`
|
|
20
|
+
trm_commons_1.Logger.loading(`Reading objects transport...`);
|
|
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
|
}
|
|
@@ -14,13 +14,14 @@ const commons_1 = require("../../commons");
|
|
|
14
14
|
const systemConnector_1 = require("../../systemConnector");
|
|
15
15
|
const trm_commons_1 = require("trm-commons");
|
|
16
16
|
const registry_1 = require("../../registry");
|
|
17
|
-
function _validateDevclass(input,
|
|
17
|
+
function _validateDevclass(input, namespaces) {
|
|
18
18
|
const sInput = input.trim().toUpperCase();
|
|
19
|
+
namespaces = [...new Set(namespaces)];
|
|
19
20
|
if (sInput.length > 30) {
|
|
20
21
|
return `Package name must not exceede 30 characters limit.`;
|
|
21
22
|
}
|
|
22
|
-
if (!
|
|
23
|
-
return `Package name must use
|
|
23
|
+
if (!namespaces.some(ns => sInput.startsWith(ns))) {
|
|
24
|
+
return `Package name must use one of the following namespaces: ${namespaces.join(', ')}.`;
|
|
24
25
|
}
|
|
25
26
|
else {
|
|
26
27
|
return true;
|
|
@@ -56,14 +57,20 @@ exports.setInstallDevclass = {
|
|
|
56
57
|
trm_commons_1.Logger.loading(`Analyzing packages...`);
|
|
57
58
|
for (const t of context.runtime.packageTransportsData.tdevc) {
|
|
58
59
|
var adaptDevclassName = t.devclass;
|
|
60
|
+
const replacement = context.rawInput.installData.installDevclass.replacements.find(o => o.originalDevclass === t.devclass);
|
|
59
61
|
if (updateNamespace) {
|
|
60
|
-
|
|
62
|
+
if (!replacement && updateNamespace === '$' && (context.runtime.remotePackageData.data.name === systemConnector_1.TRM_SERVER_PACKAGE_NAME || context.runtime.remotePackageData.data.name === systemConnector_1.TRM_REST_PACKAGE_NAME) && context.runtime.registry.getRegistryType() === registry_1.RegistryType.PUBLIC) {
|
|
63
|
+
adaptDevclassName = adaptDevclassName.replace(new RegExp(`^/ATRM/SERVER`, 'gmi'), '$TRM');
|
|
64
|
+
adaptDevclassName = adaptDevclassName.replace(new RegExp(`^/ATRM/REST`, 'gmi'), '$TRM_REST');
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
adaptDevclassName = adaptDevclassName.replace(new RegExp(`^${originalNamespace}`, 'gmi'), updateNamespace);
|
|
68
|
+
}
|
|
61
69
|
}
|
|
62
|
-
const replacement = context.rawInput.installData.installDevclass.replacements.find(o => o.originalDevclass === t.devclass);
|
|
63
70
|
const packageExists = yield systemConnector_1.SystemConnector.getDevclass(adaptDevclassName);
|
|
64
71
|
if (!replacement) {
|
|
65
72
|
if (context.rawInput.contextData.noInquirer) {
|
|
66
|
-
const automaticValue = _validateDevclass(adaptDevclassName, updateNamespace || originalNamespace);
|
|
73
|
+
const automaticValue = _validateDevclass(adaptDevclassName, [updateNamespace || originalNamespace, '$', originalNamespace]);
|
|
67
74
|
if (automaticValue === true) {
|
|
68
75
|
context.rawInput.installData.installDevclass.replacements.push({
|
|
69
76
|
originalDevclass: t.devclass,
|
|
@@ -81,13 +88,13 @@ exports.setInstallDevclass = {
|
|
|
81
88
|
default: adaptDevclassName,
|
|
82
89
|
message: packageExists ? `Rename ABAP Package "${adaptDevclassName}"?` : `ABAP Package "${adaptDevclassName}" will be generated. Do you want to rename it?`,
|
|
83
90
|
validate: (input) => {
|
|
84
|
-
return _validateDevclass(input, updateNamespace || originalNamespace);
|
|
91
|
+
return _validateDevclass(input, [updateNamespace || originalNamespace, '$', originalNamespace]);
|
|
85
92
|
}
|
|
86
93
|
});
|
|
87
94
|
}
|
|
88
95
|
}
|
|
89
96
|
else {
|
|
90
|
-
const devclassValid = _validateDevclass(replacement.installDevclass, updateNamespace || originalNamespace);
|
|
97
|
+
const devclassValid = _validateDevclass(replacement.installDevclass, [updateNamespace || originalNamespace, '$', originalNamespace]);
|
|
91
98
|
if (devclassValid !== true) {
|
|
92
99
|
throw new Error(devclassValid);
|
|
93
100
|
}
|
|
@@ -103,6 +110,10 @@ exports.setInstallDevclass = {
|
|
|
103
110
|
});
|
|
104
111
|
});
|
|
105
112
|
}
|
|
113
|
+
const hasTemp = context.rawInput.installData.installDevclass.replacements.some(x => x.installDevclass.startsWith('$'));
|
|
114
|
+
if (hasTemp && !context.rawInput.installData.installDevclass.replacements.every(x => x.installDevclass.startsWith('$'))) {
|
|
115
|
+
throw new Error(`All packages must start with prefix $ if one (or more) packages are temporary!`);
|
|
116
|
+
}
|
|
106
117
|
trm_commons_1.Logger.loading(`Updating install data...`);
|
|
107
118
|
var installDevc = [];
|
|
108
119
|
var packageRegistry;
|
|
@@ -13,7 +13,7 @@ export declare abstract class AbstractRegistry {
|
|
|
13
13
|
abstract getPackage: (fullName: string, version: string) => Promise<Package>;
|
|
14
14
|
abstract downloadArtifact: (fullName: string, version: string) => Promise<TrmArtifact>;
|
|
15
15
|
abstract validatePublish: (fullName: string, version: string, isPrivate: boolean) => Promise<void>;
|
|
16
|
-
abstract publish: (fullName: string, version: string, artifact: TrmArtifact, readme?: string, tags?: string) => Promise<Package>;
|
|
16
|
+
abstract publish: (fullName: string, version: string, artifact: TrmArtifact, readme?: string, tags?: string) => Promise<Package | void>;
|
|
17
17
|
abstract unpublish: (fullName: string, version: string) => Promise<void>;
|
|
18
18
|
abstract deprecate: (fullName: string, version: string, deprecate: Deprecate) => Promise<void>;
|
|
19
19
|
abstract addDistTag: (fullName: string, distTag: DistTagAdd) => Promise<void>;
|
|
@@ -26,7 +26,7 @@ export declare class RegistryV2 implements AbstractRegistry {
|
|
|
26
26
|
getPackage(fullName: string, version?: string): Promise<Package>;
|
|
27
27
|
downloadArtifact(fullName: string, version?: string): Promise<TrmArtifact>;
|
|
28
28
|
validatePublish(fullName: string, version: string, isPrivate: boolean): Promise<void>;
|
|
29
|
-
publish(fullName: string, version: string, artifact: TrmArtifact, readme?: string, tags?: string): Promise<
|
|
29
|
+
publish(fullName: string, version: string, artifact: TrmArtifact, readme?: string, tags?: string): Promise<void>;
|
|
30
30
|
unpublish(fullName: string, version: string): Promise<void>;
|
|
31
31
|
deprecate(fullName: string, version: string, deprecate: Deprecate): Promise<void>;
|
|
32
32
|
addDistTag(fullName: string, distTag: DistTagAdd): Promise<void>;
|
|
@@ -402,7 +402,7 @@ class RegistryV2 {
|
|
|
402
402
|
const packageData = yield this.getPackage(fullName, version);
|
|
403
403
|
const chunks = [];
|
|
404
404
|
let buffer;
|
|
405
|
-
const logProgress = trm_commons_1.Logger.progressbar(
|
|
405
|
+
const logProgress = trm_commons_1.Logger.progressbar(`↓ ${fullName} ${version} [{bar}] {percentage}% | {value}/{total} bytes`, '>');
|
|
406
406
|
try {
|
|
407
407
|
const response = yield this._axiosInstance.get(packageData.download_link, {
|
|
408
408
|
headers: {
|
|
@@ -477,10 +477,10 @@ class RegistryV2 {
|
|
|
477
477
|
if (!tags) {
|
|
478
478
|
delete params.tags;
|
|
479
479
|
}
|
|
480
|
-
|
|
480
|
+
yield this._axiosInstance.post(`/publish/${fullName}`, formData, {
|
|
481
481
|
params,
|
|
482
482
|
headers: formData.getHeaders()
|
|
483
|
-
})
|
|
483
|
+
});
|
|
484
484
|
});
|
|
485
485
|
}
|
|
486
486
|
unpublish(fullName, version) {
|
|
@@ -525,7 +525,7 @@ class RegistryV2 {
|
|
|
525
525
|
return __awaiter(this, arguments, void 0, function* (fullName, version = 'latest') {
|
|
526
526
|
var _a;
|
|
527
527
|
const chunks = [];
|
|
528
|
-
const logProgress = trm_commons_1.Logger.progressbar(
|
|
528
|
+
const logProgress = trm_commons_1.Logger.progressbar(`↓ ${fullName} ${version} contents [{bar}] {percentage}% | {value}/{total} bytes`, '>');
|
|
529
529
|
try {
|
|
530
530
|
const response = yield this._axiosInstance.get(`/package/contents/${fullName}`, {
|
|
531
531
|
params: {
|
|
@@ -407,7 +407,6 @@ class Transport {
|
|
|
407
407
|
}
|
|
408
408
|
release(lock, skipLog, tmpFolder) {
|
|
409
409
|
return __awaiter(this, void 0, void 0, function* () {
|
|
410
|
-
trm_commons_1.Logger.loading(`${Transport.getTransportIcon()} Releasing transport...`, skipLog);
|
|
411
410
|
yield systemConnector_1.SystemConnector.releaseTrkorr(this.trkorr, lock);
|
|
412
411
|
yield systemConnector_1.SystemConnector.dequeueTransport(this.trkorr);
|
|
413
412
|
if (tmpFolder) {
|
|
@@ -105,7 +105,10 @@ class TrmArtifact {
|
|
|
105
105
|
const zipEntries = this._zip.getEntries();
|
|
106
106
|
const aTransportEntries = zipEntries.filter(o => (new RegExp(`^${distFolder}(/|\\\\)`)).test(o.entryName.trim().toLowerCase()));
|
|
107
107
|
var aResult = [];
|
|
108
|
-
|
|
108
|
+
var r3trans;
|
|
109
|
+
if (!noCheck) {
|
|
110
|
+
r3trans = new node_r3trans_1.R3trans(r3transOption);
|
|
111
|
+
}
|
|
109
112
|
for (const entry of aTransportEntries) {
|
|
110
113
|
try {
|
|
111
114
|
const type = entry.comment;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "trm-core",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.5.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": "^6.
|
|
37
|
+
"trm-server": "^6.2.0"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@esm2cjs/normalize-url": "^8.0.0",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"xml-js": "^1.6.11"
|
|
69
69
|
},
|
|
70
70
|
"peerDependencies": {
|
|
71
|
-
"trm-commons": "^4.
|
|
71
|
+
"trm-commons": "^4.1.0"
|
|
72
72
|
},
|
|
73
73
|
"devDependencies": {
|
|
74
74
|
"@types/adm-zip": "^0.5.0",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"@types/stack-trace": "^0.0.33",
|
|
85
85
|
"@types/uuid": "^9.0.8",
|
|
86
86
|
"rimraf": "^6.0.1",
|
|
87
|
-
"trm-commons": "^4.
|
|
87
|
+
"trm-commons": "^4.1.0",
|
|
88
88
|
"ts-node": "^10.9.2",
|
|
89
89
|
"typescript": "^5.8.2"
|
|
90
90
|
},
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.commit = void 0;
|
|
13
|
-
const trm_commons_1 = require("trm-commons");
|
|
14
|
-
const systemConnector_1 = require("../../systemConnector");
|
|
15
|
-
exports.commit = {
|
|
16
|
-
name: 'commit',
|
|
17
|
-
filter: (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
-
if (systemConnector_1.SystemConnector.isStateless()) {
|
|
19
|
-
return true;
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
}),
|
|
25
|
-
run: (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
26
|
-
trm_commons_1.Logger.log('Commit (connection not stateless) step', true);
|
|
27
|
-
trm_commons_1.Logger.loading(`Closing connection...`, true);
|
|
28
|
-
yield systemConnector_1.SystemConnector.closeConnection();
|
|
29
|
-
trm_commons_1.Logger.loading(`Opening connection...`, true);
|
|
30
|
-
yield systemConnector_1.SystemConnector.connect(true);
|
|
31
|
-
trm_commons_1.Logger.success(`OK, continue`, true);
|
|
32
|
-
})
|
|
33
|
-
};
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.setR3trans = void 0;
|
|
13
|
-
const trm_commons_1 = require("trm-commons");
|
|
14
|
-
const node_r3trans_1 = require("node-r3trans");
|
|
15
|
-
exports.setR3trans = {
|
|
16
|
-
name: 'set-r3trans',
|
|
17
|
-
run: (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
-
trm_commons_1.Logger.log('Set R3trans step', true);
|
|
19
|
-
trm_commons_1.Logger.loading(`Loading R3Trans...`);
|
|
20
|
-
const options = context.rawInput.contextData.r3transOptions;
|
|
21
|
-
trm_commons_1.Logger.log(`Loading R3Trans with options ${JSON.stringify(options)}`, true);
|
|
22
|
-
trm_commons_1.Logger.log(`R3TRANS_HOME ${process.env.R3TRANS_HOME}`, true);
|
|
23
|
-
context.runtime.r3trans = new node_r3trans_1.R3trans(options);
|
|
24
|
-
const r3transVersion = yield context.runtime.r3trans.getVersion();
|
|
25
|
-
const unicode = yield context.runtime.r3trans.isUnicode();
|
|
26
|
-
trm_commons_1.Logger.info(r3transVersion, context.rawInput.contextData.noR3transInfo);
|
|
27
|
-
trm_commons_1.Logger.log(`R3Trans unicode?: ${unicode}`, true);
|
|
28
|
-
})
|
|
29
|
-
};
|