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.
Files changed (63) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +35 -35
  3. package/changelog.txt +186 -171
  4. package/dist/actions/checkPackageDependencies/analyze.js +5 -51
  5. package/dist/actions/checkPackageDependencies/index.d.ts +2 -5
  6. package/dist/actions/checkPackageDependencies/init.js +5 -7
  7. package/dist/actions/checkSapEntries/analyze.js +2 -2
  8. package/dist/actions/checkSapEntries/index.d.ts +2 -2
  9. package/dist/actions/checkSapEntries/init.js +1 -4
  10. package/dist/actions/findDependencies/index.d.ts +0 -2
  11. package/dist/actions/findDependencies/setTrmDependencies.js +11 -55
  12. package/dist/actions/install/addNamespace.js +14 -9
  13. package/dist/actions/install/checkAlreadyInstalled.js +2 -2
  14. package/dist/actions/install/checkDependencies.js +2 -16
  15. package/dist/actions/install/checkSapEntries.js +1 -1
  16. package/dist/actions/install/checkTransports.js +2 -2
  17. package/dist/actions/install/executePostActivities.js +3 -3
  18. package/dist/actions/install/generateInstallTransport.js +40 -5
  19. package/dist/actions/install/index.d.ts +6 -10
  20. package/dist/actions/install/index.js +2 -4
  21. package/dist/actions/install/init.js +37 -45
  22. package/dist/actions/install/installDependencies.js +0 -1
  23. package/dist/actions/install/setPackageIntegrity.js +1 -1
  24. package/dist/actions/install/setTrmServerUpgradeService.js +1 -1
  25. package/dist/actions/installDependency/findInstallRelease.js +18 -18
  26. package/dist/actions/installDependency/index.d.ts +0 -1
  27. package/dist/actions/installDependency/init.js +0 -7
  28. package/dist/actions/installDependency/installRelease.js +0 -1
  29. package/dist/actions/publish/findDependencies.js +0 -12
  30. package/dist/actions/publish/generateCustTransport.js +0 -3
  31. package/dist/actions/publish/generateDevcTransport.js +0 -4
  32. package/dist/actions/publish/generateLangTransport.js +0 -3
  33. package/dist/actions/publish/getSourceCode.js +1 -1
  34. package/dist/actions/publish/index.d.ts +1 -1
  35. package/dist/actions/publish/init.js +71 -95
  36. package/dist/actions/publish/setManifestValues.js +4 -13
  37. package/dist/commons/getAxiosInstance.d.ts +1 -1
  38. package/dist/manifest/Manifest.d.ts +2 -0
  39. package/dist/manifest/Manifest.js +47 -17
  40. package/dist/manifest/TrmManifestDependency.d.ts +0 -1
  41. package/dist/registry/AbstractRegistry.d.ts +7 -7
  42. package/dist/registry/FileSystem.d.ts +7 -6
  43. package/dist/registry/FileSystem.js +35 -34
  44. package/dist/registry/RegistryProvider.js +4 -4
  45. package/dist/registry/{Registry.d.ts → RegistryV2.d.ts} +11 -10
  46. package/dist/registry/{Registry.js → RegistryV2.js} +146 -74
  47. package/dist/registry/index.d.ts +1 -1
  48. package/dist/registry/index.js +1 -1
  49. package/dist/systemConnector/ISystemConnectorBase.d.ts +1 -1
  50. package/dist/systemConnector/SystemConnector.d.ts +1 -1
  51. package/dist/systemConnector/SystemConnector.js +3 -3
  52. package/dist/systemConnector/SystemConnectorBase.d.ts +1 -1
  53. package/dist/systemConnector/SystemConnectorBase.js +33 -11
  54. package/dist/transport/Transport.d.ts +4 -1
  55. package/dist/transport/Transport.js +53 -30
  56. package/dist/trmPackage/TrmArtifact.js +3 -5
  57. package/dist/trmPackage/TrmPackage.d.ts +0 -16
  58. package/dist/trmPackage/TrmPackage.js +10 -133
  59. package/dist/validators/validatePackageVisibility.d.ts +1 -1
  60. package/dist/validators/validatePackageVisibility.js +2 -16
  61. package/package.json +98 -97
  62. package/dist/actions/install/checkIntegrity.d.ts +0 -3
  63. 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 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
  }
@@ -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, _j;
625
+ var _a, _b, _c, _d, _e, _f, _g, _h;
609
626
  var manifest;
610
627
  sXml = sXml.replace(/&/g, "&amp;").replace(/-/g, "&#45;");
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, _d;
728
+ var _a, _b, _c;
712
729
  return {
713
730
  name: (_a = o.name) === null || _a === void 0 ? void 0 : _a.text,
714
- integrity: (_b = o.integrity) === null || _b === void 0 ? void 0 : _b.text,
715
- version: (_c = o.version) === null || _c === void 0 ? void 0 : _c.text,
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
- integrity: (_g = oAbapManifest.dependencies.item.integrity) === null || _g === void 0 ? void 0 : _g.text,
724
- version: (_h = oAbapManifest.dependencies.item.version) === null || _h === void 0 ? void 0 : _h.text,
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,6 +1,5 @@
1
1
  export type TrmManifestDependency = {
2
2
  name: string;
3
3
  version: string;
4
- integrity: string;
5
4
  registry?: string;
6
5
  };
@@ -1,4 +1,4 @@
1
- import { Ping, Release, View, WhoAmI } from "trm-registry-types";
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
- packageExists: (name: string, version?: string) => Promise<boolean>;
14
- view: (name: string, version: string) => Promise<View>;
15
- getArtifact: (name: string, version: string) => Promise<TrmArtifact>;
16
- publishArtifact: (packageName: string, version: string, artifact: TrmArtifact, readme?: string) => Promise<void>;
17
- unpublish: (packageName: string, version: string) => Promise<void>;
18
- getReleases: (packageName: string, versionRange: string) => Promise<Release[]>;
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 { Ping, Release, View, WhoAmI } from "trm-registry-types";
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
- packageExists(name: string, version?: string): Promise<boolean>;
19
- view(name: string, version?: string): Promise<View>;
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
- publishArtifact(packageName: string, version: string, artifact: TrmArtifact, readme?: string): Promise<void>;
22
- unpublish(packageName: string, version: string): Promise<void>;
23
- getReleases(packageName: string, versionRange: string): Promise<Release[]>;
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
  }