trm-core 7.5.6 → 8.0.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 +15 -0
- package/dist/actions/checkPackageDependencies/analyze.js +5 -51
- package/dist/actions/checkPackageDependencies/index.d.ts +2 -5
- package/dist/actions/checkPackageDependencies/init.js +5 -7
- package/dist/actions/checkSapEntries/analyze.js +2 -2
- package/dist/actions/checkSapEntries/index.d.ts +2 -2
- package/dist/actions/checkSapEntries/init.js +1 -4
- package/dist/actions/findDependencies/index.d.ts +0 -2
- package/dist/actions/findDependencies/setTrmDependencies.js +11 -55
- package/dist/actions/install/addNamespace.js +14 -9
- package/dist/actions/install/checkAlreadyInstalled.js +2 -2
- package/dist/actions/install/checkDependencies.js +2 -16
- package/dist/actions/install/checkSapEntries.js +1 -1
- package/dist/actions/install/checkTransports.js +2 -2
- package/dist/actions/install/executePostActivities.js +3 -3
- package/dist/actions/install/generateInstallTransport.js +40 -5
- package/dist/actions/install/index.d.ts +6 -10
- package/dist/actions/install/index.js +2 -4
- package/dist/actions/install/init.js +37 -45
- package/dist/actions/install/installDependencies.js +0 -1
- package/dist/actions/install/setPackageIntegrity.js +1 -1
- package/dist/actions/install/setTrmServerUpgradeService.js +1 -1
- package/dist/actions/installDependency/findInstallRelease.js +18 -18
- package/dist/actions/installDependency/index.d.ts +0 -1
- package/dist/actions/installDependency/init.js +0 -7
- package/dist/actions/installDependency/installRelease.js +0 -1
- package/dist/actions/publish/findDependencies.js +0 -12
- package/dist/actions/publish/generateCustTransport.js +0 -3
- package/dist/actions/publish/generateDevcTransport.js +0 -4
- package/dist/actions/publish/generateLangTransport.js +0 -3
- package/dist/actions/publish/getSourceCode.js +1 -1
- package/dist/actions/publish/index.d.ts +1 -1
- package/dist/actions/publish/init.js +71 -95
- package/dist/actions/publish/setManifestValues.js +4 -13
- package/dist/commons/getAxiosInstance.d.ts +1 -1
- package/dist/manifest/Manifest.d.ts +2 -0
- package/dist/manifest/Manifest.js +47 -17
- package/dist/manifest/TrmManifestDependency.d.ts +0 -1
- package/dist/registry/AbstractRegistry.d.ts +7 -7
- package/dist/registry/FileSystem.d.ts +7 -6
- package/dist/registry/FileSystem.js +35 -34
- package/dist/registry/RegistryProvider.js +4 -4
- package/dist/registry/{Registry.d.ts → RegistryV2.d.ts} +11 -10
- package/dist/registry/{Registry.js → RegistryV2.js} +146 -74
- package/dist/registry/index.d.ts +1 -1
- package/dist/registry/index.js +1 -1
- package/dist/systemConnector/ISystemConnectorBase.d.ts +1 -1
- package/dist/systemConnector/SystemConnector.d.ts +1 -1
- package/dist/systemConnector/SystemConnector.js +3 -3
- package/dist/systemConnector/SystemConnectorBase.d.ts +1 -1
- package/dist/systemConnector/SystemConnectorBase.js +33 -11
- package/dist/transport/Transport.d.ts +4 -1
- package/dist/transport/Transport.js +54 -31
- package/dist/trmPackage/TrmArtifact.js +3 -5
- package/dist/trmPackage/TrmPackage.d.ts +0 -16
- package/dist/trmPackage/TrmPackage.js +10 -133
- package/dist/validators/validatePackageVisibility.d.ts +1 -1
- package/dist/validators/validatePackageVisibility.js +2 -16
- package/package.json +4 -3
- package/dist/actions/install/checkIntegrity.d.ts +0 -3
- package/dist/actions/install/checkIntegrity.js +0 -42
|
@@ -20,7 +20,6 @@ const init_1 = require("./init");
|
|
|
20
20
|
const __1 = require("..");
|
|
21
21
|
const setSystemPackages_1 = require("../commons/setSystemPackages");
|
|
22
22
|
const checkAlreadyInstalled_1 = require("./checkAlreadyInstalled");
|
|
23
|
-
const checkIntegrity_1 = require("./checkIntegrity");
|
|
24
23
|
const checkSapEntries_1 = require("./checkSapEntries");
|
|
25
24
|
const checkDependencies_1 = require("./checkDependencies");
|
|
26
25
|
const installDependencies_1 = require("./installDependencies");
|
|
@@ -53,7 +52,6 @@ function install(inputData) {
|
|
|
53
52
|
setSystemPackages_1.setSystemPackages,
|
|
54
53
|
setTrmServerUpgradeService_1.setTrmServerUpgradeService,
|
|
55
54
|
checkAlreadyInstalled_1.checkAlreadyInstalled,
|
|
56
|
-
checkIntegrity_1.checkIntegrity,
|
|
57
55
|
checkSapEntries_1.checkSapEntries,
|
|
58
56
|
checkDependencies_1.checkDependencies,
|
|
59
57
|
setR3trans_1.setR3trans,
|
|
@@ -81,11 +79,11 @@ function install(inputData) {
|
|
|
81
79
|
rawInput: inputData
|
|
82
80
|
});
|
|
83
81
|
trm_commons_1.Logger.log(`Workflow ${WORKFLOW_NAME} result: ${(0, util_1.inspect)(result, { breakLength: Infinity, compact: true })}`, true);
|
|
84
|
-
const
|
|
82
|
+
const manifest = result.runtime.remotePackageData.manifest;
|
|
85
83
|
const registry = result.runtime.registry;
|
|
86
84
|
const installTransport = result.runtime.installData.transport;
|
|
87
85
|
return {
|
|
88
|
-
|
|
86
|
+
manifest,
|
|
89
87
|
registry,
|
|
90
88
|
installTransport
|
|
91
89
|
};
|
|
@@ -11,61 +11,59 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.init = void 0;
|
|
13
13
|
const trm_commons_1 = require("trm-commons");
|
|
14
|
-
const trmPackage_1 = require("../../trmPackage");
|
|
15
|
-
const commons_1 = require("../../commons");
|
|
16
14
|
const crypto_1 = require("crypto");
|
|
17
15
|
const systemConnector_1 = require("../../systemConnector");
|
|
18
16
|
const registry_1 = require("../../registry");
|
|
17
|
+
const semver_1 = require("semver");
|
|
19
18
|
exports.init = {
|
|
20
19
|
name: 'init',
|
|
21
20
|
run: (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
21
|
trm_commons_1.Logger.log('Init step', true);
|
|
23
22
|
const registry = context.rawInput.packageData.registry;
|
|
23
|
+
var artifact;
|
|
24
|
+
var manifest;
|
|
25
|
+
var packageData;
|
|
24
26
|
var actualRegistry;
|
|
25
|
-
var actualTrmPackage;
|
|
26
27
|
if (registry.getRegistryType() === registry_1.RegistryType.LOCAL) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
trm_commons_1.Logger.loading(`
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
28
|
+
try {
|
|
29
|
+
artifact = yield registry.downloadArtifact('dummy', 'dummy');
|
|
30
|
+
}
|
|
31
|
+
catch (_a) {
|
|
32
|
+
throw new Error(`Unable to read local package.`);
|
|
33
|
+
}
|
|
34
|
+
const oManifest = artifact.getManifest();
|
|
35
|
+
manifest = oManifest.get();
|
|
36
|
+
packageData.manifest = manifest;
|
|
37
|
+
actualRegistry = oManifest.getPackage().registry;
|
|
38
|
+
context.rawInput.packageData.name = manifest.name;
|
|
39
|
+
}
|
|
40
|
+
context.rawInput.packageData.version = (0, semver_1.valid)(context.rawInput.packageData.version);
|
|
41
|
+
if (registry.getRegistryType() !== registry_1.RegistryType.LOCAL) {
|
|
42
|
+
trm_commons_1.Logger.loading(`Fetching package in registry ${registry.name}...`);
|
|
43
|
+
packageData = yield registry.getPackage(context.rawInput.packageData.name, context.rawInput.packageData.version || 'latest');
|
|
44
|
+
artifact = yield registry.downloadArtifact(packageData.name, packageData.manifest.version);
|
|
45
|
+
const checksum = (0, crypto_1.createHash)("sha512").update(artifact.binary).digest("base64");
|
|
46
|
+
if (checksum !== packageData.checksum) {
|
|
47
|
+
var ping;
|
|
48
|
+
try {
|
|
49
|
+
ping = yield registry.ping();
|
|
50
|
+
}
|
|
51
|
+
catch (_b) { }
|
|
52
|
+
trm_commons_1.Logger.error(`SECURITY ISSUE! Release checksum does NOT match!`);
|
|
53
|
+
trm_commons_1.Logger.error(`SECURITY ISSUE! Expected SHA is ${packageData.checksum}, current SHA is ${checksum}`);
|
|
54
|
+
trm_commons_1.Logger.error(`SECURITY ISSUE! Please, report the issue to ${ping && ping.alert_email ? ping.alert_email : 'registry moderation team'}`);
|
|
55
|
+
throw new Error(`Cannot continue due to security issues.`);
|
|
56
|
+
}
|
|
57
|
+
manifest = artifact.getManifest().get();
|
|
57
58
|
}
|
|
59
|
+
trm_commons_1.Logger.info(`Ready to install ${manifest.name} v${manifest.version}.`);
|
|
58
60
|
context.runtime = {
|
|
59
61
|
registry: actualRegistry || registry,
|
|
60
62
|
update: undefined,
|
|
61
|
-
rollback: false,
|
|
62
63
|
remotePackageData: {
|
|
63
|
-
|
|
64
|
-
trmPackage: actualTrmPackage || trmPackage,
|
|
65
|
-
trmManifest,
|
|
66
|
-
manifest,
|
|
64
|
+
data: packageData,
|
|
67
65
|
artifact,
|
|
68
|
-
|
|
66
|
+
manifest
|
|
69
67
|
},
|
|
70
68
|
dependenciesToInstall: [],
|
|
71
69
|
r3trans: undefined,
|
|
@@ -163,11 +161,5 @@ exports.init = {
|
|
|
163
161
|
throw new Error(`Transport layer "${context.rawInput.installData.installDevclass.transportLayer}" doesn't exist.`);
|
|
164
162
|
}
|
|
165
163
|
}
|
|
166
|
-
}),
|
|
167
|
-
revert: (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
168
|
-
trm_commons_1.Logger.log('Rollback init step', true);
|
|
169
|
-
if (context.runtime && context.runtime.rollback) {
|
|
170
|
-
trm_commons_1.Logger.success(`Rollback executed.`);
|
|
171
|
-
}
|
|
172
164
|
})
|
|
173
165
|
};
|
|
@@ -105,7 +105,6 @@ exports.installDependencies = {
|
|
|
105
105
|
dependencyDataPackage: {
|
|
106
106
|
name: dependency.name,
|
|
107
107
|
versionRange: dependency.version,
|
|
108
|
-
integrity: dependency.integrity,
|
|
109
108
|
registry: registry_1.RegistryProvider.getRegistry(dependency.registry)
|
|
110
109
|
},
|
|
111
110
|
contextData: _.cloneDeep(context.rawInput.contextData),
|
|
@@ -22,7 +22,7 @@ exports.setPackageIntegrity = {
|
|
|
22
22
|
yield systemConnector_1.SystemConnector.setPackageIntegrity({
|
|
23
23
|
package_name: context.rawInput.packageData.name,
|
|
24
24
|
package_registry: packageRegistry,
|
|
25
|
-
integrity: context.runtime.remotePackageData.
|
|
25
|
+
integrity: context.runtime.remotePackageData.data.checksum
|
|
26
26
|
});
|
|
27
27
|
})
|
|
28
28
|
};
|
|
@@ -27,6 +27,6 @@ exports.setTrmServerUpgradeService = {
|
|
|
27
27
|
}),
|
|
28
28
|
run: (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
29
29
|
trm_commons_1.Logger.log('Set TRM Server upgrade service step', true);
|
|
30
|
-
commons_1.TrmServerUpgrade.createInstance(context.rawInput.contextData.systemPackages.find(o => o.compareName(systemConnector_1.TRM_SERVER_PACKAGE_NAME)).manifest.get().version, context.runtime.remotePackageData.
|
|
30
|
+
commons_1.TrmServerUpgrade.createInstance(context.rawInput.contextData.systemPackages.find(o => o.compareName(systemConnector_1.TRM_SERVER_PACKAGE_NAME)).manifest.get().version, context.runtime.remotePackageData.manifest.version);
|
|
31
31
|
})
|
|
32
32
|
};
|
|
@@ -12,35 +12,35 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.findInstallRelease = void 0;
|
|
13
13
|
const trm_commons_1 = require("trm-commons");
|
|
14
14
|
const semver_sort_1 = require("semver-sort");
|
|
15
|
-
const
|
|
16
|
-
const crypto_1 = require("crypto");
|
|
15
|
+
const semver_1 = require("semver");
|
|
17
16
|
exports.findInstallRelease = {
|
|
18
17
|
name: 'find-install-release',
|
|
19
18
|
run: (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
20
19
|
trm_commons_1.Logger.log('Find install release step', true);
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const fetchedIntegrity = (0, crypto_1.createHash)("sha512").update(oArtifact.binary).digest("hex");
|
|
32
|
-
if (context.rawInput.dependencyDataPackage.integrity === fetchedIntegrity) {
|
|
20
|
+
const packageData = yield context.rawInput.dependencyDataPackage.registry.getPackage(context.rawInput.dependencyDataPackage.name, 'latest');
|
|
21
|
+
const versions = packageData.versions.filter(v => (0, semver_1.satisfies)(v, context.rawInput.dependencyDataPackage.versionRange));
|
|
22
|
+
const yanked = packageData.yanked_versions.filter(v => (0, semver_1.satisfies)(v, context.rawInput.dependencyDataPackage.versionRange));
|
|
23
|
+
if (context.rawInput.dependencyDataPackage.integrity) {
|
|
24
|
+
const sortedVersions = (0, semver_sort_1.desc)(versions.concat(yanked));
|
|
25
|
+
for (const sortedVersion of sortedVersions) {
|
|
26
|
+
if (!context.runtime.installVersion) {
|
|
27
|
+
try {
|
|
28
|
+
const packageVersion = yield context.rawInput.dependencyDataPackage.registry.getPackage(context.rawInput.dependencyDataPackage.name, sortedVersion);
|
|
29
|
+
if (context.rawInput.dependencyDataPackage.integrity === packageVersion.checksum) {
|
|
33
30
|
context.runtime.installVersion = sortedVersion;
|
|
34
31
|
}
|
|
35
32
|
}
|
|
33
|
+
catch (_a) { }
|
|
36
34
|
}
|
|
37
35
|
}
|
|
38
|
-
else {
|
|
39
|
-
throw new Error(`Running in safe mode but no integrity was provided for dependency "${context.rawInput.dependencyDataPackage.name}" install.`);
|
|
40
|
-
}
|
|
41
36
|
}
|
|
42
37
|
else {
|
|
43
|
-
|
|
38
|
+
if (versions.length === 0) {
|
|
39
|
+
throw new Error(`Dependency "${context.rawInput.dependencyDataPackage.name}": releases not found in range ${context.rawInput.dependencyDataPackage.versionRange}.`);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
context.runtime.installVersion = (0, semver_sort_1.desc)(versions)[0];
|
|
43
|
+
}
|
|
44
44
|
}
|
|
45
45
|
})
|
|
46
46
|
};
|
|
@@ -29,7 +29,6 @@ exports.init = {
|
|
|
29
29
|
throw new Error(`Dependency "${context.rawInput.dependencyDataPackage.name}", invalid version range.`);
|
|
30
30
|
}
|
|
31
31
|
context.runtime = {
|
|
32
|
-
rollback: false,
|
|
33
32
|
installOutput: undefined,
|
|
34
33
|
installVersion: undefined
|
|
35
34
|
};
|
|
@@ -45,11 +44,5 @@ exports.init = {
|
|
|
45
44
|
if (!context.rawInput.installData.installDevclass) {
|
|
46
45
|
context.rawInput.installData.installDevclass = {};
|
|
47
46
|
}
|
|
48
|
-
}),
|
|
49
|
-
revert: (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
50
|
-
trm_commons_1.Logger.log('Rollback init step', true);
|
|
51
|
-
if (context.runtime && context.runtime.rollback) {
|
|
52
|
-
trm_commons_1.Logger.success(`Rollback executed.`);
|
|
53
|
-
}
|
|
54
47
|
})
|
|
55
48
|
};
|
|
@@ -24,7 +24,6 @@ exports.installRelease = {
|
|
|
24
24
|
packageData: {
|
|
25
25
|
name: context.rawInput.dependencyDataPackage.name,
|
|
26
26
|
registry: context.rawInput.dependencyDataPackage.registry,
|
|
27
|
-
integrity: context.rawInput.dependencyDataPackage.integrity,
|
|
28
27
|
version: context.runtime.installVersion,
|
|
29
28
|
overwrite: false
|
|
30
29
|
},
|
|
@@ -72,21 +72,9 @@ exports.findDependencies = {
|
|
|
72
72
|
const dependencyManifest = o.package.manifest.get();
|
|
73
73
|
const dependencyVersionRange = `^${dependencyManifest.version}`;
|
|
74
74
|
const dependencyRegistry = o.package.registry.getRegistryType() === registry_1.RegistryType.PUBLIC ? undefined : o.package.registry.endpoint;
|
|
75
|
-
if (!o.integrity) {
|
|
76
|
-
if (o.ignoreNoIntegrity) {
|
|
77
|
-
trm_commons_1.Logger.warning(` (${i + 1}/${result.trmPackageDependencies.withTrmPackage.length}) ${dependencyManifest.name}: ${dependencyVersionRange} (Integrity not found!)`);
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
throw new Error(` (${i + 1}/${result.trmPackageDependencies.withTrmPackage.length}) ${dependencyManifest.name}: Integrity not found!`);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
trm_commons_1.Logger.info(` (${i + 1}/${result.trmPackageDependencies.withTrmPackage.length}) ${dependencyManifest.name} ${dependencyVersionRange}`);
|
|
85
|
-
}
|
|
86
75
|
context.runtime.trmPackage.manifest.dependencies.push({
|
|
87
76
|
name: dependencyManifest.name,
|
|
88
77
|
version: dependencyVersionRange,
|
|
89
|
-
integrity: o.integrity,
|
|
90
78
|
registry: dependencyRegistry
|
|
91
79
|
});
|
|
92
80
|
}
|
|
@@ -52,9 +52,6 @@ exports.generateCustTransport = {
|
|
|
52
52
|
yield context.runtime.systemData.custTransport.delete();
|
|
53
53
|
trm_commons_1.Logger.success(`Executed rollback on transport ${context.runtime.systemData.custTransport.trkorr}`, true);
|
|
54
54
|
}
|
|
55
|
-
else {
|
|
56
|
-
throw new Error(`Transport ${context.runtime.systemData.custTransport.trkorr} cannot be deleted (released?)`);
|
|
57
|
-
}
|
|
58
55
|
}
|
|
59
56
|
catch (e) {
|
|
60
57
|
trm_commons_1.Logger.error(`Unable to rollback transport ${context.runtime.systemData.custTransport.trkorr}!`);
|
|
@@ -16,7 +16,6 @@ exports.generateDevcTransport = {
|
|
|
16
16
|
name: 'generate-devc-transport',
|
|
17
17
|
run: (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
18
|
trm_commons_1.Logger.log('Generate DEVC transport step', true);
|
|
19
|
-
context.runtime.rollback = true;
|
|
20
19
|
trm_commons_1.Logger.loading(`Generating transports...`);
|
|
21
20
|
trm_commons_1.Logger.loading(`Generating DEVC transport...`, true);
|
|
22
21
|
const aDevc = context.runtime.packageData.tadir.filter(o => o.pgmid === 'R3TR' && o.object === 'DEVC');
|
|
@@ -37,9 +36,6 @@ exports.generateDevcTransport = {
|
|
|
37
36
|
yield context.runtime.systemData.devcTransport.delete();
|
|
38
37
|
trm_commons_1.Logger.success(`Executed rollback on transport ${context.runtime.systemData.devcTransport.trkorr}`, true);
|
|
39
38
|
}
|
|
40
|
-
else {
|
|
41
|
-
throw new Error(`Transport ${context.runtime.systemData.devcTransport.trkorr} cannot be deleted (released?)`);
|
|
42
|
-
}
|
|
43
39
|
}
|
|
44
40
|
catch (e) {
|
|
45
41
|
trm_commons_1.Logger.error(`Unable to rollback transport ${context.runtime.systemData.devcTransport.trkorr}!`);
|
|
@@ -62,9 +62,6 @@ exports.generateLangTransport = {
|
|
|
62
62
|
yield context.runtime.systemData.langTransport.delete();
|
|
63
63
|
trm_commons_1.Logger.success(`Executed rollback on transport ${context.runtime.systemData.langTransport.trkorr}`, true);
|
|
64
64
|
}
|
|
65
|
-
else {
|
|
66
|
-
throw new Error(`Transport ${context.runtime.systemData.langTransport.trkorr} cannot be deleted (released?)`);
|
|
67
|
-
}
|
|
68
65
|
}
|
|
69
66
|
catch (e) {
|
|
70
67
|
trm_commons_1.Logger.error(`Unable to rollback transport ${context.runtime.systemData.langTransport.trkorr}!`);
|
|
@@ -43,7 +43,7 @@ exports.getSourceCode = {
|
|
|
43
43
|
}
|
|
44
44
|
catch (e) {
|
|
45
45
|
trm_commons_1.Logger.error(e.toString(), true);
|
|
46
|
-
trm_commons_1.Logger.info(`AbapGit Developer Version was not found, source code won't be exported
|
|
46
|
+
trm_commons_1.Logger.info(`AbapGit Developer Version was not found, source code won't be exported.`, true);
|
|
47
47
|
}
|
|
48
48
|
})
|
|
49
49
|
};
|
|
@@ -33,11 +33,11 @@ export interface PublishActionInput {
|
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
35
|
type WorkflowRuntime = {
|
|
36
|
-
rollback: boolean;
|
|
37
36
|
trmPackage: {
|
|
38
37
|
package: TrmPackage;
|
|
39
38
|
registry: AbstractRegistry;
|
|
40
39
|
latestReleaseManifest?: TrmManifest;
|
|
40
|
+
releasesInRegistry?: string[];
|
|
41
41
|
manifest: TrmManifest;
|
|
42
42
|
artifact?: TrmArtifact;
|
|
43
43
|
};
|
|
@@ -8,9 +8,6 @@ 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
|
-
};
|
|
14
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
12
|
exports.init = void 0;
|
|
16
13
|
const trm_commons_1 = require("trm-commons");
|
|
@@ -20,8 +17,6 @@ const semver_1 = require("semver");
|
|
|
20
17
|
const systemConnector_1 = require("../../systemConnector");
|
|
21
18
|
const registry_1 = require("../../registry");
|
|
22
19
|
const transport_1 = require("../../transport");
|
|
23
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
24
|
-
const validators_1 = require("../../validators");
|
|
25
20
|
exports.init = {
|
|
26
21
|
name: 'init',
|
|
27
22
|
run: (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -31,16 +26,9 @@ exports.init = {
|
|
|
31
26
|
fullName: context.rawInput.packageData.name
|
|
32
27
|
});
|
|
33
28
|
context.rawInput.packageData.name = parsedPackageName.fullName;
|
|
34
|
-
if (registry.getRegistryType() === registry_1.RegistryType.PUBLIC
|
|
29
|
+
if (registry.getRegistryType() === registry_1.RegistryType.PUBLIC) {
|
|
35
30
|
trm_commons_1.Logger.log(`Public registry, checking if logged in`, true);
|
|
36
31
|
yield registry.whoAmI();
|
|
37
|
-
trm_commons_1.Logger.log(`Public registry, checking if package name is ok`, true);
|
|
38
|
-
if (parsedPackageName.organization && parsedPackageName.organization.length > 20) {
|
|
39
|
-
throw new Error(`Invalid org "${parsedPackageName.organization}": length must be 20 characters long or less.`);
|
|
40
|
-
}
|
|
41
|
-
if (parsedPackageName.name.length > 20) {
|
|
42
|
-
throw new Error(`Invalid package name "${parsedPackageName.name}": length must be 20 characters long or less.`);
|
|
43
|
-
}
|
|
44
32
|
}
|
|
45
33
|
if (!context.rawInput.contextData) {
|
|
46
34
|
context.rawInput.contextData = {};
|
|
@@ -84,71 +72,89 @@ exports.init = {
|
|
|
84
72
|
}
|
|
85
73
|
});
|
|
86
74
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
var
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
75
|
+
trm_commons_1.Logger.loading(`Validating version...`);
|
|
76
|
+
var automaticVersion = false;
|
|
77
|
+
var releasesInRegistry;
|
|
78
|
+
var latestReleaseManifest;
|
|
79
|
+
context.rawInput.packageData.version = (0, semver_1.clean)(context.rawInput.packageData.version || '');
|
|
80
|
+
try {
|
|
81
|
+
trm_commons_1.Logger.loading(`Getting package latest release from registry...`, true);
|
|
82
|
+
const packageData = yield registry.getPackage(context.rawInput.packageData.name, 'latest');
|
|
83
|
+
latestReleaseManifest = packageData.manifest;
|
|
84
|
+
releasesInRegistry = packageData.versions;
|
|
85
|
+
}
|
|
86
|
+
catch (_a) { }
|
|
87
|
+
if (!latestReleaseManifest) {
|
|
88
|
+
if (!context.rawInput.packageData.version) {
|
|
89
|
+
context.rawInput.packageData.version = '1.0.0';
|
|
90
|
+
automaticVersion = true;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
if (!context.rawInput.packageData.version) {
|
|
95
|
+
context.rawInput.packageData.version = (0, semver_1.inc)(latestReleaseManifest.version, "patch");
|
|
96
|
+
automaticVersion = true;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
if (releasesInRegistry.includes(context.rawInput.packageData.version)) {
|
|
100
|
+
throw new Error(`Version "${context.rawInput.packageData.version}" already published.`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (registry.getRegistryType() === registry_1.RegistryType.PUBLIC) {
|
|
104
|
+
trm_commons_1.Logger.log(`Public registry, checking if visibility is the same as latest release`, true);
|
|
105
|
+
if (typeof (context.rawInput.publishData.private) === 'boolean' && context.rawInput.publishData.private !== latestReleaseManifest.private) {
|
|
106
|
+
throw new Error(`Cannot change package visibility to ${context.rawInput.publishData.private ? 'private' : 'public'}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (automaticVersion) {
|
|
111
|
+
trm_commons_1.Logger.info(`Automatically set publish version to "${context.rawInput.packageData.version}"`);
|
|
112
|
+
if (!context.rawInput.contextData.noInquirer) {
|
|
113
|
+
context.rawInput.packageData.version = (yield trm_commons_1.Inquirer.prompt([{
|
|
114
|
+
type: 'confirm',
|
|
115
|
+
message: `Continue publish as version "${context.rawInput.packageData.version}"?`,
|
|
116
|
+
default: true,
|
|
117
|
+
name: 'acceptDefaultVersion'
|
|
118
|
+
}, {
|
|
119
|
+
type: 'input',
|
|
120
|
+
message: `Input publish version`,
|
|
121
|
+
name: 'version',
|
|
122
|
+
default: context.rawInput.packageData.version,
|
|
123
|
+
when: (hash) => {
|
|
124
|
+
return !hash.acceptDefaultVersion;
|
|
125
|
+
},
|
|
126
|
+
validate: (v) => {
|
|
127
|
+
if ((0, semver_1.valid)(v)) {
|
|
128
|
+
if (releasesInRegistry.includes(v)) {
|
|
129
|
+
return `Version "${v}" already published.`;
|
|
113
130
|
}
|
|
114
131
|
else {
|
|
115
|
-
|
|
116
|
-
return true;
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
return (0, semver_1.clean)(input) ? true : false;
|
|
120
|
-
}
|
|
132
|
+
return true;
|
|
121
133
|
}
|
|
122
134
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
normalizeVersion = true;
|
|
130
|
-
context.rawInput.packageData.version = inq.inputVersion;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
normalizeVersion = false;
|
|
135
|
-
context.rawInput.packageData.version = normalizedVersion;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
normalizeVersion = false;
|
|
135
|
+
else {
|
|
136
|
+
return `Invalid version`;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}])).version || context.rawInput.packageData.version;
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
|
-
trm_commons_1.Logger.
|
|
142
|
+
trm_commons_1.Logger.loading(`Validating data...`);
|
|
143
|
+
yield registry.validatePublish(context.rawInput.packageData.name, context.rawInput.packageData.version);
|
|
144
|
+
if (!latestReleaseManifest) {
|
|
145
|
+
trm_commons_1.Logger.info(`First time publishing "${context.rawInput.packageData.name}". Congratulations!`, registry.getRegistryType() === registry_1.RegistryType.LOCAL);
|
|
146
|
+
}
|
|
147
|
+
trm_commons_1.Logger.info(`Ready to publish ${context.rawInput.packageData.name} v${context.rawInput.packageData.version}`);
|
|
143
148
|
context.runtime = {
|
|
144
|
-
rollback: false,
|
|
145
149
|
trmPackage: {
|
|
146
150
|
package: new trmPackage_1.TrmPackage(context.rawInput.packageData.name, registry),
|
|
147
151
|
registry,
|
|
152
|
+
latestReleaseManifest,
|
|
153
|
+
releasesInRegistry,
|
|
148
154
|
manifest: Object.assign(Object.assign({}, context.rawInput.packageData.manifest), {
|
|
149
155
|
name: context.rawInput.packageData.name,
|
|
150
156
|
version: context.rawInput.packageData.version,
|
|
151
|
-
private: context.rawInput.publishData.private
|
|
157
|
+
private: typeof (context.rawInput.publishData.private) === 'undefined' ? (latestReleaseManifest ? latestReleaseManifest.private : undefined) : context.rawInput.publishData.private
|
|
152
158
|
})
|
|
153
159
|
},
|
|
154
160
|
systemData: {
|
|
@@ -183,35 +189,5 @@ exports.init = {
|
|
|
183
189
|
if (context.rawInput.publishData.skipCustomizingTransports) {
|
|
184
190
|
context.rawInput.publishData.customizingTransports = [];
|
|
185
191
|
}
|
|
186
|
-
trm_commons_1.Logger.loading(`Checking package "${context.rawInput.packageData.name}"...`);
|
|
187
|
-
const packageExists = yield context.runtime.trmPackage.package.exists();
|
|
188
|
-
const canPublishReleases = yield context.runtime.trmPackage.package.canPublishReleases();
|
|
189
|
-
if (!canPublishReleases.canPublishReleases) {
|
|
190
|
-
if (canPublishReleases.cause) {
|
|
191
|
-
trm_commons_1.Logger.error(canPublishReleases.cause);
|
|
192
|
-
}
|
|
193
|
-
throw new Error(`You are not not authorized to publish "${context.rawInput.packageData.name}" releases.`);
|
|
194
|
-
}
|
|
195
|
-
if (!packageExists) {
|
|
196
|
-
trm_commons_1.Logger.info(`First time publishing "${context.rawInput.packageData.name}". Congratulations!`, registry.getRegistryType() === registry_1.RegistryType.LOCAL);
|
|
197
|
-
}
|
|
198
|
-
else {
|
|
199
|
-
context.runtime.trmPackage.latestReleaseManifest = (yield context.runtime.trmPackage.package.fetchRemoteManifest('latest')).get();
|
|
200
|
-
if (context.runtime.trmPackage.manifest.private === undefined) {
|
|
201
|
-
context.runtime.trmPackage.manifest.private = context.runtime.trmPackage.latestReleaseManifest.private;
|
|
202
|
-
}
|
|
203
|
-
else {
|
|
204
|
-
const validateVisibility = (0, validators_1.validatePackageVisibility)(context.rawInput.packageData.registry.getRegistryType(), context.rawInput.packageData.name, context.runtime.trmPackage.manifest.private, context.runtime.trmPackage.latestReleaseManifest ? context.runtime.trmPackage.latestReleaseManifest.private : undefined);
|
|
205
|
-
if (validateVisibility !== true) {
|
|
206
|
-
throw new Error(validateVisibility);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
}),
|
|
211
|
-
revert: (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
212
|
-
trm_commons_1.Logger.log('Rollback init step', true);
|
|
213
|
-
if (context.runtime && context.runtime.rollback) {
|
|
214
|
-
trm_commons_1.Logger.success(`Rollback executed.`);
|
|
215
|
-
}
|
|
216
192
|
})
|
|
217
193
|
};
|
|
@@ -20,8 +20,6 @@ const chalk_1 = __importDefault(require("chalk"));
|
|
|
20
20
|
const FileSystem_1 = require("../../registry/FileSystem");
|
|
21
21
|
const validators_1 = require("../../validators");
|
|
22
22
|
const lodash_1 = __importDefault(require("lodash"));
|
|
23
|
-
const systemConnector_1 = require("../../systemConnector");
|
|
24
|
-
const trmPackage_1 = require("../../trmPackage");
|
|
25
23
|
exports.setManifestValues = {
|
|
26
24
|
name: 'set-manifest-values',
|
|
27
25
|
run: (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -174,10 +172,12 @@ exports.setManifestValues = {
|
|
|
174
172
|
value: true
|
|
175
173
|
}],
|
|
176
174
|
when: () => {
|
|
177
|
-
|
|
175
|
+
const r = context.rawInput.packageData.registry.getRegistryType();
|
|
176
|
+
const hasLatest = !!context.runtime.trmPackage.latestReleaseManifest;
|
|
177
|
+
return r !== registry_1.RegistryType.LOCAL && (r !== registry_1.RegistryType.PUBLIC || !hasLatest);
|
|
178
178
|
},
|
|
179
179
|
validate: (input) => {
|
|
180
|
-
return (0, validators_1.validatePackageVisibility)(context.rawInput.packageData.registry.getRegistryType(),
|
|
180
|
+
return (0, validators_1.validatePackageVisibility)(context.rawInput.packageData.registry.getRegistryType(), input, context.runtime.trmPackage.latestReleaseManifest ? context.runtime.trmPackage.latestReleaseManifest.private : undefined);
|
|
181
181
|
},
|
|
182
182
|
}, {
|
|
183
183
|
type: "input",
|
|
@@ -427,15 +427,6 @@ exports.setManifestValues = {
|
|
|
427
427
|
context.runtime.trmPackage.manifest.sapEntries = JSON.parse(inq.sapEntries);
|
|
428
428
|
}
|
|
429
429
|
}
|
|
430
|
-
trm_commons_1.Logger.loading(`Reading manifest...`);
|
|
431
|
-
for (var dependency of (context.runtime.trmPackage.manifest.dependencies || [])) {
|
|
432
|
-
if (!dependency.integrity) {
|
|
433
|
-
dependency.integrity = yield systemConnector_1.SystemConnector.getPackageIntegrity(new trmPackage_1.TrmPackage(dependency.name, registry_1.RegistryProvider.getRegistry(dependency.registry)));
|
|
434
|
-
if (!dependency.integrity) {
|
|
435
|
-
trm_commons_1.Logger.warning(`Dependency ${dependency.name} has no integrity match: registry might reject this!`);
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
430
|
context.runtime.trmPackage.manifest = manifest_1.Manifest.normalize(context.runtime.trmPackage.manifest, false);
|
|
440
431
|
})
|
|
441
432
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AxiosInstance, CreateAxiosDefaults } from "axios";
|
|
2
2
|
export declare const AXIOS_SESSION_HEADER = "X-TRM-SESSION-ID";
|
|
3
3
|
export declare const AXIOS_INTERNAL_HEADER = "X-TRM-REQUEST-ID";
|
|
4
|
-
export type AxiosCtx = '
|
|
4
|
+
export type AxiosCtx = 'RegistryV2' | 'RestServer';
|
|
5
5
|
export declare function getAxiosInstance(config: CreateAxiosDefaults<any>, sCtx: AxiosCtx, inj?: AxiosInstance): AxiosInstance;
|
|
@@ -13,6 +13,7 @@ export declare class Manifest {
|
|
|
13
13
|
setLinkedTransport(transport: Transport): Manifest;
|
|
14
14
|
getLinkedTransport(): Transport | null;
|
|
15
15
|
setRegistryEndpoint(endpoint: string): void;
|
|
16
|
+
getJSON(ignoredKeys?: string[]): string;
|
|
16
17
|
getAbapXml(): string;
|
|
17
18
|
getPackage(): TrmPackage;
|
|
18
19
|
static normalize(manifest: TrmManifest, keepRuntimeValues: boolean): TrmManifest;
|
|
@@ -22,4 +23,5 @@ export declare class Manifest {
|
|
|
22
23
|
static compare(o1: Manifest, o2: Manifest, checkVersion?: boolean): boolean;
|
|
23
24
|
static stringAuthorsToArray(sAuthors: string): TrmManifestAuthor[];
|
|
24
25
|
static stringKeywordsToArray(sKeywords: string): string[];
|
|
26
|
+
private jsonStringifyWithKeyOrder;
|
|
25
27
|
}
|