trm-core 7.5.4 → 8.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/LICENSE +20 -20
- package/README.md +35 -35
- package/changelog.txt +186 -171
- 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 +53 -30
- 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 +98 -97
- package/dist/actions/install/checkIntegrity.d.ts +0 -3
- package/dist/actions/install/checkIntegrity.js +0 -42
|
@@ -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
|
}
|
|
@@ -91,6 +91,32 @@ class Manifest {
|
|
|
91
91
|
setRegistryEndpoint(endpoint) {
|
|
92
92
|
this._manifest.registry = endpoint;
|
|
93
93
|
}
|
|
94
|
+
getJSON(ignoredKeys = []) {
|
|
95
|
+
const KEYS_ORDER = [
|
|
96
|
+
"name",
|
|
97
|
+
"version",
|
|
98
|
+
"registry",
|
|
99
|
+
"private",
|
|
100
|
+
"description",
|
|
101
|
+
"backwardsCompatible",
|
|
102
|
+
"distFolder",
|
|
103
|
+
"srcFolder",
|
|
104
|
+
"namespace",
|
|
105
|
+
"website",
|
|
106
|
+
"git",
|
|
107
|
+
"license",
|
|
108
|
+
"authors",
|
|
109
|
+
"keywords",
|
|
110
|
+
"dependencies",
|
|
111
|
+
"sapEntries",
|
|
112
|
+
"postActivities",
|
|
113
|
+
];
|
|
114
|
+
var obj = this.get(false);
|
|
115
|
+
ignoredKeys.forEach(k => {
|
|
116
|
+
delete obj[k];
|
|
117
|
+
});
|
|
118
|
+
return this.jsonStringifyWithKeyOrder(obj, KEYS_ORDER, 2);
|
|
119
|
+
}
|
|
94
120
|
getAbapXml() {
|
|
95
121
|
const manifest = this.get();
|
|
96
122
|
var oAbapXml = {
|
|
@@ -246,11 +272,6 @@ class Manifest {
|
|
|
246
272
|
"_text": o.registry
|
|
247
273
|
};
|
|
248
274
|
}
|
|
249
|
-
if (o.integrity) {
|
|
250
|
-
obj['INTEGRITY'] = {
|
|
251
|
-
"_text": o.integrity
|
|
252
|
-
};
|
|
253
|
-
}
|
|
254
275
|
if (Object.keys(obj).length > 0) {
|
|
255
276
|
dependencies.push(obj);
|
|
256
277
|
}
|
|
@@ -508,10 +529,6 @@ class Manifest {
|
|
|
508
529
|
dependency.name = originalDependency.name.trim().toLowerCase().replace(/\s/g, '');
|
|
509
530
|
if (semver.validRange(originalDependency.version)) {
|
|
510
531
|
dependency.version = originalDependency.version;
|
|
511
|
-
dependency.integrity = originalDependency.integrity;
|
|
512
|
-
if (!dependency.integrity) {
|
|
513
|
-
throw new Error(`Dependency ${dependency.name} is missing its integrity.`);
|
|
514
|
-
}
|
|
515
532
|
if (originalDependency.registry) {
|
|
516
533
|
dependency.registry = originalDependency.registry;
|
|
517
534
|
}
|
|
@@ -605,7 +622,7 @@ class Manifest {
|
|
|
605
622
|
return manifestClone;
|
|
606
623
|
}
|
|
607
624
|
static fromAbapXml(sXml) {
|
|
608
|
-
var _a, _b, _c, _d, _e, _f, _g, _h
|
|
625
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
609
626
|
var manifest;
|
|
610
627
|
sXml = sXml.replace(/&/g, "&").replace(/-/g, "-");
|
|
611
628
|
const oAbapXml = xml.xml2js(sXml, { compact: true });
|
|
@@ -708,21 +725,19 @@ class Manifest {
|
|
|
708
725
|
if (oAbapManifest.dependencies && oAbapManifest.dependencies.item) {
|
|
709
726
|
if (Array.isArray(oAbapManifest.dependencies.item)) {
|
|
710
727
|
manifest.dependencies = oAbapManifest.dependencies.item.map(o => {
|
|
711
|
-
var _a, _b, _c
|
|
728
|
+
var _a, _b, _c;
|
|
712
729
|
return {
|
|
713
730
|
name: (_a = o.name) === null || _a === void 0 ? void 0 : _a.text,
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
registry: (_d = o.registry) === null || _d === void 0 ? void 0 : _d.text
|
|
731
|
+
version: (_b = o.version) === null || _b === void 0 ? void 0 : _b.text,
|
|
732
|
+
registry: (_c = o.registry) === null || _c === void 0 ? void 0 : _c.text
|
|
717
733
|
};
|
|
718
734
|
});
|
|
719
735
|
}
|
|
720
736
|
else {
|
|
721
737
|
manifest.dependencies = [{
|
|
722
738
|
name: (_f = oAbapManifest.dependencies.item.name) === null || _f === void 0 ? void 0 : _f.text,
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
registry: (_j = oAbapManifest.dependencies.item.registry) === null || _j === void 0 ? void 0 : _j.text
|
|
739
|
+
version: (_g = oAbapManifest.dependencies.item.version) === null || _g === void 0 ? void 0 : _g.text,
|
|
740
|
+
registry: (_h = oAbapManifest.dependencies.item.registry) === null || _h === void 0 ? void 0 : _h.text
|
|
726
741
|
}];
|
|
727
742
|
}
|
|
728
743
|
}
|
|
@@ -808,5 +823,20 @@ class Manifest {
|
|
|
808
823
|
return [];
|
|
809
824
|
}
|
|
810
825
|
}
|
|
826
|
+
jsonStringifyWithKeyOrder(obj, order, space = 2) {
|
|
827
|
+
const out = {};
|
|
828
|
+
const seen = new Set(order);
|
|
829
|
+
for (const key of order) {
|
|
830
|
+
if (Object.prototype.hasOwnProperty.call(obj, key) && obj[key] !== undefined) {
|
|
831
|
+
out[key] = obj[key];
|
|
832
|
+
}
|
|
833
|
+
}
|
|
834
|
+
for (const key of Object.keys(obj)) {
|
|
835
|
+
if (!seen.has(key) && obj[key] !== undefined) {
|
|
836
|
+
out[key] = obj[key];
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
return JSON.stringify(out, null, space);
|
|
840
|
+
}
|
|
811
841
|
}
|
|
812
842
|
exports.Manifest = Manifest;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Package, Ping, WhoAmI } from "trm-registry-types";
|
|
2
2
|
import { RegistryType } from "./RegistryType";
|
|
3
3
|
import { TrmArtifact } from "../trmPackage";
|
|
4
4
|
export declare abstract class AbstractRegistry {
|
|
@@ -10,10 +10,10 @@ export declare abstract class AbstractRegistry {
|
|
|
10
10
|
getAuthData: () => any;
|
|
11
11
|
ping: () => Promise<Ping>;
|
|
12
12
|
whoAmI: () => Promise<WhoAmI>;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
unpublish: (
|
|
18
|
-
|
|
13
|
+
getPackage: (fullName: string, version: string) => Promise<Package>;
|
|
14
|
+
downloadArtifact: (fullName: string, version: string) => Promise<TrmArtifact>;
|
|
15
|
+
validatePublish: (fullName: string, version: string) => Promise<void>;
|
|
16
|
+
publish: (fullName: string, version: string, artifact: TrmArtifact, readme?: string) => Promise<Package>;
|
|
17
|
+
unpublish: (fullName: string, version: string) => Promise<void>;
|
|
18
|
+
deprecate: (fullName: string, version: string, reason: string) => Promise<void>;
|
|
19
19
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Package, Ping, WhoAmI } from "trm-registry-types";
|
|
2
2
|
import { AbstractRegistry } from "./AbstractRegistry";
|
|
3
3
|
import { RegistryType } from "./RegistryType";
|
|
4
4
|
import { TrmArtifact } from "../trmPackage";
|
|
@@ -15,10 +15,11 @@ export declare class FileSystem implements AbstractRegistry {
|
|
|
15
15
|
getAuthData(): any;
|
|
16
16
|
ping(): Promise<Ping>;
|
|
17
17
|
whoAmI(): Promise<WhoAmI>;
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
getPackage(fullName: string, version: string): Promise<Package>;
|
|
19
|
+
downloadArtifact(fullName: string, version: string): Promise<TrmArtifact>;
|
|
20
20
|
getArtifact(name: string, version?: string): Promise<TrmArtifact>;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
validatePublish(fullName: string, version: string): Promise<void>;
|
|
22
|
+
publish(fullName: string, version: string, artifact: TrmArtifact, readme?: string): Promise<Package>;
|
|
23
|
+
unpublish(fullName: string, version: string): Promise<void>;
|
|
24
|
+
deprecate(fullName: string, version: string, reason: string): Promise<void>;
|
|
24
25
|
}
|