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.
Files changed (61) hide show
  1. package/changelog.txt +15 -0
  2. package/dist/actions/checkPackageDependencies/analyze.js +5 -51
  3. package/dist/actions/checkPackageDependencies/index.d.ts +2 -5
  4. package/dist/actions/checkPackageDependencies/init.js +5 -7
  5. package/dist/actions/checkSapEntries/analyze.js +2 -2
  6. package/dist/actions/checkSapEntries/index.d.ts +2 -2
  7. package/dist/actions/checkSapEntries/init.js +1 -4
  8. package/dist/actions/findDependencies/index.d.ts +0 -2
  9. package/dist/actions/findDependencies/setTrmDependencies.js +11 -55
  10. package/dist/actions/install/addNamespace.js +14 -9
  11. package/dist/actions/install/checkAlreadyInstalled.js +2 -2
  12. package/dist/actions/install/checkDependencies.js +2 -16
  13. package/dist/actions/install/checkSapEntries.js +1 -1
  14. package/dist/actions/install/checkTransports.js +2 -2
  15. package/dist/actions/install/executePostActivities.js +3 -3
  16. package/dist/actions/install/generateInstallTransport.js +40 -5
  17. package/dist/actions/install/index.d.ts +6 -10
  18. package/dist/actions/install/index.js +2 -4
  19. package/dist/actions/install/init.js +37 -45
  20. package/dist/actions/install/installDependencies.js +0 -1
  21. package/dist/actions/install/setPackageIntegrity.js +1 -1
  22. package/dist/actions/install/setTrmServerUpgradeService.js +1 -1
  23. package/dist/actions/installDependency/findInstallRelease.js +18 -18
  24. package/dist/actions/installDependency/index.d.ts +0 -1
  25. package/dist/actions/installDependency/init.js +0 -7
  26. package/dist/actions/installDependency/installRelease.js +0 -1
  27. package/dist/actions/publish/findDependencies.js +0 -12
  28. package/dist/actions/publish/generateCustTransport.js +0 -3
  29. package/dist/actions/publish/generateDevcTransport.js +0 -4
  30. package/dist/actions/publish/generateLangTransport.js +0 -3
  31. package/dist/actions/publish/getSourceCode.js +1 -1
  32. package/dist/actions/publish/index.d.ts +1 -1
  33. package/dist/actions/publish/init.js +71 -95
  34. package/dist/actions/publish/setManifestValues.js +4 -13
  35. package/dist/commons/getAxiosInstance.d.ts +1 -1
  36. package/dist/manifest/Manifest.d.ts +2 -0
  37. package/dist/manifest/Manifest.js +47 -17
  38. package/dist/manifest/TrmManifestDependency.d.ts +0 -1
  39. package/dist/registry/AbstractRegistry.d.ts +7 -7
  40. package/dist/registry/FileSystem.d.ts +7 -6
  41. package/dist/registry/FileSystem.js +35 -34
  42. package/dist/registry/RegistryProvider.js +4 -4
  43. package/dist/registry/{Registry.d.ts → RegistryV2.d.ts} +11 -10
  44. package/dist/registry/{Registry.js → RegistryV2.js} +146 -74
  45. package/dist/registry/index.d.ts +1 -1
  46. package/dist/registry/index.js +1 -1
  47. package/dist/systemConnector/ISystemConnectorBase.d.ts +1 -1
  48. package/dist/systemConnector/SystemConnector.d.ts +1 -1
  49. package/dist/systemConnector/SystemConnector.js +3 -3
  50. package/dist/systemConnector/SystemConnectorBase.d.ts +1 -1
  51. package/dist/systemConnector/SystemConnectorBase.js +33 -11
  52. package/dist/transport/Transport.d.ts +4 -1
  53. package/dist/transport/Transport.js +54 -31
  54. package/dist/trmPackage/TrmArtifact.js +3 -5
  55. package/dist/trmPackage/TrmPackage.d.ts +0 -16
  56. package/dist/trmPackage/TrmPackage.js +10 -133
  57. package/dist/validators/validatePackageVisibility.d.ts +1 -1
  58. package/dist/validators/validatePackageVisibility.js +2 -16
  59. package/package.json +4 -3
  60. package/dist/actions/install/checkIntegrity.d.ts +0 -3
  61. 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 trmPackage = result.runtime.remotePackageData.trmPackage;
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
- trmPackage,
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
- actualTrmPackage = (yield registry.getArtifact(null, null)).getManifest().getPackage();
28
- actualRegistry = actualTrmPackage.registry;
29
- context.rawInput.packageData.name = actualTrmPackage.packageName;
30
- }
31
- context.rawInput.packageData.name = (0, commons_1.parsePackageName)({
32
- fullName: context.rawInput.packageData.name
33
- }).fullName;
34
- if (!context.rawInput.packageData.version || context.rawInput.packageData.version.trim().toLowerCase() === 'latest') {
35
- context.rawInput.packageData.version = 'latest';
36
- }
37
- if (registry.getRegistryType() === registry_1.RegistryType.LOCAL) {
38
- trm_commons_1.Logger.loading(`Reading TRM package data...`);
39
- }
40
- else {
41
- trm_commons_1.Logger.loading(`Searching TRM package in registry ${registry.name}...`);
42
- }
43
- const trmPackage = new trmPackage_1.TrmPackage(context.rawInput.packageData.name, registry);
44
- const artifact = yield trmPackage.fetchRemoteArtifact(context.rawInput.packageData.version);
45
- const integrity = (0, crypto_1.createHash)("sha512").update(artifact.binary).digest("hex");
46
- const manifest = yield trmPackage.fetchRemoteManifest(context.rawInput.packageData.version);
47
- const trmManifest = manifest.get();
48
- var sVersion = trmManifest.version;
49
- if (context.rawInput.packageData.version === 'latest') {
50
- sVersion = `latest -> ${trmManifest.version}`;
51
- }
52
- if (registry.getRegistryType() === registry_1.RegistryType.LOCAL) {
53
- trm_commons_1.Logger.info(`Ready to install "${trmManifest.name}" version ${trmManifest.version}.`);
54
- }
55
- else {
56
- trm_commons_1.Logger.info(`Ready to install "${trmManifest.name}" version ${sVersion} from registry "${registry.name}".`);
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
- version: context.rawInput.packageData.version,
64
- trmPackage: actualTrmPackage || trmPackage,
65
- trmManifest,
66
- manifest,
64
+ data: packageData,
67
65
  artifact,
68
- integrity
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.integrity
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.trmManifest.version);
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 trmPackage_1 = require("../../trmPackage");
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 releases = yield context.rawInput.dependencyDataPackage.registry.getReleases(context.rawInput.dependencyDataPackage.name, context.rawInput.dependencyDataPackage.versionRange);
22
- if (releases.length === 0) {
23
- throw new Error(`Dependency "${context.rawInput.dependencyDataPackage.name}": releases not found in range ${context.rawInput.dependencyDataPackage.versionRange}.`);
24
- }
25
- const sortedVersions = (0, semver_sort_1.desc)(releases.map(o => o.version));
26
- if (context.rawInput.installData.checks && context.rawInput.installData.checks.safe) {
27
- if (context.rawInput.dependencyDataPackage.integrity) {
28
- for (const sortedVersion of sortedVersions) {
29
- if (!context.runtime.installVersion) {
30
- const oArtifact = yield new trmPackage_1.TrmPackage(context.rawInput.dependencyDataPackage.name, context.rawInput.dependencyDataPackage.registry).fetchRemoteArtifact(sortedVersion);
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
- context.runtime.installVersion = sortedVersions[0];
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
  };
@@ -11,7 +11,6 @@ export interface InstallDependencyActionInput {
11
11
  installData?: InstallActionInputInstallData;
12
12
  }
13
13
  type WorkflowRuntime = {
14
- rollback: boolean;
15
14
  installVersion: string;
16
15
  installOutput: InstallActionOutput;
17
16
  };
@@ -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 && registry.getRegistryType() !== registry_1.RegistryType.LOCAL) {
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
- if (!context.rawInput.packageData.version) {
88
- context.rawInput.packageData.version = 'latest';
89
- }
90
- var normalizeVersion = true;
91
- var normalizedVersion;
92
- trm_commons_1.Logger.loading(`Checking package version...`);
93
- while (normalizeVersion) {
94
- normalizedVersion = yield trmPackage_1.TrmPackage.normalizeVersion(context.rawInput.packageData.name, context.rawInput.packageData.version, registry);
95
- if (normalizedVersion !== context.rawInput.packageData.version) {
96
- trm_commons_1.Logger.info(`Version ${context.rawInput.packageData.version} -> ${normalizedVersion}`);
97
- if (!context.rawInput.contextData.noInquirer) {
98
- const inq = yield trm_commons_1.Inquirer.prompt([{
99
- name: 'acceptNormalized',
100
- message: `Continue publish as version ${normalizedVersion}?`,
101
- type: 'confirm',
102
- default: true
103
- }, {
104
- name: 'inputVersion',
105
- message: `Input version to publish`,
106
- type: 'input',
107
- when: (hash) => {
108
- return !hash.acceptNormalized;
109
- },
110
- validate: (input) => {
111
- if (!input) {
112
- return false;
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
- if (input.trim().toLowerCase() === 'latest') {
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
- if (inq.acceptNormalized) {
125
- normalizeVersion = false;
126
- context.rawInput.packageData.version = normalizedVersion;
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.info(`Release publish version: ${chalk_1.default.bold(context.rawInput.packageData.version)}`);
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
- return context.rawInput.packageData.registry.getRegistryType() !== registry_1.RegistryType.LOCAL;
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(), context.rawInput.packageData.name, input, context.runtime.trmPackage.latestReleaseManifest ? context.runtime.trmPackage.latestReleaseManifest.private : undefined);
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 = 'Registry' | 'RestServer';
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
  }