trm-core 9.8.3 → 9.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/changelog.txt CHANGED
@@ -8,6 +8,26 @@ Legend
8
8
  + : added
9
9
  - : removed
10
10
 
11
+ 2026-07-20 v9.9.0
12
+ -------------------
13
+ * rest package update
14
+ + error message on unauthenticated publish in public registry
15
+ ! trm-server ^6.4.1
16
+
17
+ 2026-07-20 v9.8.5
18
+ -------------------
19
+ ! audit
20
+
21
+ 2026-07-05 v9.8.4
22
+ -------------------
23
+ * trm-rest install (temporary package)
24
+ ! moved transport install generation as final step of install
25
+ ! trm-registry-types ^2.2.0
26
+
27
+ 2026-07-05 v9.8.3
28
+ -------------------
29
+ * rest client get installed packages
30
+
11
31
  2026-07-05 v9.8.2
12
32
  -------------------
13
33
  * rest client response parsing
@@ -348,4 +368,4 @@ Legend
348
368
  + add file system registry for local publish and install
349
369
  + add post activities
350
370
  ! cache transports in dependency detection for performance issues on big packages
351
- * check object existance before install
371
+ * check object existance before install
@@ -23,7 +23,7 @@ exports.checkTransports = {
23
23
  var checkExistance = [];
24
24
  trm_commons_1.Logger.loading(`Reading transports contents...`);
25
25
  try {
26
- context.runtime.packageTransportsData = yield context.rawInput.packageData.registry.contents(context.rawInput.packageData.name, context.rawInput.packageData.version || 'latest');
26
+ context.runtime.packageTransportsData = (yield context.rawInput.packageData.registry.contents(context.rawInput.packageData.name, context.rawInput.packageData.version || 'latest'));
27
27
  context.runtime.remotePackageData.contents = true;
28
28
  }
29
29
  catch (e) {
@@ -17,7 +17,7 @@ const stopWarning_1 = require("../stopWarning");
17
17
  exports.generateDevclass = {
18
18
  name: 'generate-devclass',
19
19
  filter: (context) => __awaiter(void 0, void 0, void 0, function* () {
20
- if (context.rawInput.installData.installDevclass.keepOriginal || context.runtime.isTrmServerRest) {
20
+ if (context.rawInput.installData.installDevclass.keepOriginal || context.runtime.isTrmServer) {
21
21
  trm_commons_1.Logger.log(`Skipping generate devclass devclass (user input)`, true);
22
22
  return false;
23
23
  }
@@ -0,0 +1,3 @@
1
+ import { Step } from "@simonegaffurini/sammarksworkflow";
2
+ import { InstallWorkflowContext } from ".";
3
+ export declare const generateInstallTransports: Step<InstallWorkflowContext>;
@@ -8,31 +8,26 @@ 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
- exports.generateInstallTransport = void 0;
12
+ exports.generateInstallTransports = void 0;
16
13
  const trm_commons_1 = require("trm-commons");
17
14
  const commons_1 = require("../../commons");
18
15
  const systemConnector_1 = require("../../systemConnector");
19
16
  const transport_1 = require("../../transport");
20
- const manifest_1 = require("../../manifest");
21
- const chalk_1 = __importDefault(require("chalk"));
22
17
  const prompts_1 = require("../commons/prompts");
23
- exports.generateInstallTransport = {
24
- name: 'generate-install-transport',
18
+ exports.generateInstallTransports = {
19
+ name: 'generate-install-transports',
25
20
  filter: (context) => __awaiter(void 0, void 0, void 0, function* () {
26
21
  if (context.rawInput.installData.installTransport.create) {
27
22
  return true;
28
23
  }
29
24
  else {
30
- trm_commons_1.Logger.log(`Skipping install transport generation (user input)`, true);
25
+ trm_commons_1.Logger.log(`Skipping install transports generation (user input)`, true);
31
26
  return false;
32
27
  }
33
28
  }),
34
29
  run: (context) => __awaiter(void 0, void 0, void 0, function* () {
35
- trm_commons_1.Logger.log('Generate install transport step', true);
30
+ trm_commons_1.Logger.log('Generate install transports step', true);
36
31
  try {
37
32
  if ((0, commons_1.getPackageNamespace)(context.runtime.installData.namespace) === '$') {
38
33
  return;
@@ -123,51 +118,6 @@ exports.generateInstallTransport = {
123
118
  }
124
119
  }
125
120
  }
126
- var transportsStatus = [];
127
- trm_commons_1.Logger.loading(`Releasing install transports...`);
128
- for (const transport of context.runtime.installData.transports) {
129
- var len;
130
- const index = (transportsStatus.push({
131
- type: transport.type,
132
- trkorr: transport.transport.trkorr,
133
- len: 0,
134
- success: false
135
- }) - 1);
136
- try {
137
- yield transport.transport.removeComments();
138
- len = (yield transport.transport.getE071()).length;
139
- transportsStatus[index].len = len;
140
- if (len === 0) {
141
- yield transport.transport.delete();
142
- }
143
- else {
144
- yield transport.transport.addComment(`name=${context.runtime.remotePackageData.manifest.name}`);
145
- yield transport.transport.addComment(`version=${context.runtime.remotePackageData.manifest.version}`);
146
- yield transport.transport.setDocumentation(new manifest_1.Manifest(context.runtime.remotePackageData.manifest).getAbapXml());
147
- yield transport.transport.rename(`@X1@TRM: ${context.runtime.remotePackageData.manifest.name} v${context.runtime.remotePackageData.manifest.version} ${transport.type === transport_1.TrmTransportIdentifier.CUST ? '(C)' : ''}`.trim());
148
- yield transport.transport.release(true, true);
149
- }
150
- transportsStatus[index].success = true;
151
- }
152
- catch (e) {
153
- trm_commons_1.Logger.error(`Error on finalize step of transport ${transport.transport.trkorr}`, true);
154
- trm_commons_1.Logger.error(e.toString(), true);
155
- transportsStatus[index].success = false;
156
- }
157
- }
158
- transportsStatus.forEach(o => {
159
- if (o.success) {
160
- if (o.len > 0) {
161
- trm_commons_1.Logger.success(`Use ${o.type === transport_1.TrmTransportIdentifier.TADIR ? 'workbench' : 'customizing'} transport ${chalk_1.default.bold(o.trkorr)} in ${systemConnector_1.SystemConnector.getDest()} landscape transports.`);
162
- }
163
- }
164
- else {
165
- if (o.len > 0) {
166
- trm_commons_1.Logger.error(`Error on release of ${o.type === transport_1.TrmTransportIdentifier.TADIR ? 'workbench' : 'customizing'} transport ${chalk_1.default.bold(o.trkorr)}.`);
167
- context.runtime.installData.transports = context.runtime.installData.transports.filter(o => o.transport.trkorr !== o.transport.trkorr);
168
- }
169
- }
170
- });
171
121
  }
172
122
  catch (e) {
173
123
  trm_commons_1.Logger.error(`An error occurred during install transport generation.`);
@@ -62,7 +62,8 @@ type WorkflowRuntime = {
62
62
  stopWarningShown: boolean;
63
63
  registry: AbstractRegistry;
64
64
  update: boolean;
65
- isTrmServerRest: boolean;
65
+ isTrmServer: boolean;
66
+ isTrmRest: boolean;
66
67
  remotePackageData: {
67
68
  data: Package;
68
69
  manifest: TrmManifest;
@@ -35,10 +35,11 @@ const importTadirTransport_1 = require("./importTadirTransport");
35
35
  const importLangTransport_1 = require("./importLangTransport");
36
36
  const importCustTransport_1 = require("./importCustTransport");
37
37
  const updatePackageData_1 = require("./updatePackageData");
38
- const generateInstallTransport_1 = require("./generateInstallTransport");
38
+ const generateInstallTransports_1 = require("./generateInstallTransports");
39
39
  const refreshTmsTxt_1 = require("./refreshTmsTxt");
40
40
  const executePostActivities_1 = require("./executePostActivities");
41
41
  const checkObjectsLock_1 = require("./checkObjectsLock");
42
+ const releaseInstallTransport_1 = require("./releaseInstallTransport");
42
43
  ;
43
44
  const WORKFLOW_NAME = 'install';
44
45
  function install(inputData) {
@@ -65,9 +66,10 @@ function install(inputData) {
65
66
  importLangTransport_1.importLangTransport,
66
67
  importCustTransport_1.importCustTransport,
67
68
  refreshTmsTxt_1.refreshTmsTxt,
68
- generateInstallTransport_1.generateInstallTransport,
69
+ generateInstallTransports_1.generateInstallTransports,
69
70
  updatePackageData_1.updatePackageData,
70
- executePostActivities_1.executePostActivities
71
+ executePostActivities_1.executePostActivities,
72
+ releaseInstallTransport_1.releaseInstallTransports
71
73
  ];
72
74
  trm_commons_1.Logger.log(`Ready to execute workflow ${WORKFLOW_NAME}, input data: ${(0, util_1.inspect)(inputData, { breakLength: Infinity, compact: true })}`, true);
73
75
  const result = yield (0, sammarksworkflow_1.default)(WORKFLOW_NAME, workflow, {
@@ -61,7 +61,8 @@ exports.init = {
61
61
  }
62
62
  context.runtime = {
63
63
  stopWarningShown: context.rawInput.contextData.noStopWarning ? true : false,
64
- isTrmServerRest: false,
64
+ isTrmServer: false,
65
+ isTrmRest: false,
65
66
  registry: actualRegistry || registry,
66
67
  update: undefined,
67
68
  remotePackageData: {
@@ -107,7 +108,8 @@ exports.init = {
107
108
  tmsTxtRefresh: []
108
109
  }
109
110
  };
110
- context.runtime.isTrmServerRest = (context.runtime.remotePackageData.data.name === systemConnector_1.TRM_SERVER_PACKAGE_NAME || context.runtime.remotePackageData.data.name === systemConnector_1.TRM_REST_PACKAGE_NAME) && context.runtime.registry.getRegistryType() === registry_1.RegistryType.PUBLIC;
111
+ context.runtime.isTrmServer = context.runtime.remotePackageData.data.name === systemConnector_1.TRM_SERVER_PACKAGE_NAME && context.runtime.registry.getRegistryType() === registry_1.RegistryType.PUBLIC;
112
+ context.runtime.isTrmRest = context.runtime.remotePackageData.data.name === systemConnector_1.TRM_REST_PACKAGE_NAME && context.runtime.registry.getRegistryType() === registry_1.RegistryType.PUBLIC;
111
113
  if (context.rawInput.packageData.overwrite === undefined) {
112
114
  context.rawInput.packageData.overwrite = false;
113
115
  }
@@ -134,7 +136,7 @@ exports.init = {
134
136
  if (!context.rawInput.installData.skipPostActivities) {
135
137
  context.rawInput.installData.skipPostActivities = false;
136
138
  }
137
- if (context.runtime.isTrmServerRest) {
139
+ if (context.runtime.isTrmServer || context.runtime.isTrmRest) {
138
140
  context.rawInput.installData.installDevclass.keepOriginal = false;
139
141
  }
140
142
  if (context.rawInput.installData.installDevclass.keepOriginal === undefined) {
@@ -28,7 +28,7 @@ exports.readTadir = {
28
28
  var existingObjects = [];
29
29
  const checkTadir = context.runtime.packageTransportsData.tadir.map(o => {
30
30
  return Object.assign(Object.assign({}, o), {
31
- devclass: context.runtime.isTrmServerRest ? (0, commons_1.adjustTrmServerRestDevclass)(o.devclass) : o.devclass
31
+ devclass: context.runtime.isTrmServer || context.runtime.isTrmRest ? (0, commons_1.adjustTrmServerRestDevclass)(o.devclass) : o.devclass
32
32
  });
33
33
  });
34
34
  if (!systemConnector_1.SystemConnector.getSupportedBulk().getTransportObjects) {
@@ -1,3 +1,3 @@
1
1
  import { Step } from "@simonegaffurini/sammarksworkflow";
2
2
  import { InstallWorkflowContext } from ".";
3
- export declare const generateInstallTransport: Step<InstallWorkflowContext>;
3
+ export declare const releaseInstallTransports: Step<InstallWorkflowContext>;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.releaseInstallTransports = void 0;
16
+ const trm_commons_1 = require("trm-commons");
17
+ const systemConnector_1 = require("../../systemConnector");
18
+ const transport_1 = require("../../transport");
19
+ const manifest_1 = require("../../manifest");
20
+ const chalk_1 = __importDefault(require("chalk"));
21
+ exports.releaseInstallTransports = {
22
+ name: 'release-install-transports',
23
+ filter: (context) => __awaiter(void 0, void 0, void 0, function* () {
24
+ if (context.runtime.installData.transports.length > 0) {
25
+ return true;
26
+ }
27
+ else {
28
+ trm_commons_1.Logger.log(`Skipping release of install transports (no transports generated)`, true);
29
+ return false;
30
+ }
31
+ }),
32
+ run: (context) => __awaiter(void 0, void 0, void 0, function* () {
33
+ trm_commons_1.Logger.log('Release install transports step', true);
34
+ var transportsStatus = [];
35
+ trm_commons_1.Logger.loading(`Releasing install transports...`);
36
+ for (const transport of context.runtime.installData.transports) {
37
+ var len;
38
+ const index = (transportsStatus.push({
39
+ type: transport.type,
40
+ trkorr: transport.transport.trkorr,
41
+ len: 0,
42
+ success: false
43
+ }) - 1);
44
+ try {
45
+ yield transport.transport.removeComments();
46
+ len = (yield transport.transport.getE071()).length;
47
+ transportsStatus[index].len = len;
48
+ if (len === 0) {
49
+ yield transport.transport.delete();
50
+ }
51
+ else {
52
+ yield transport.transport.addComment(`name=${context.runtime.remotePackageData.manifest.name}`);
53
+ yield transport.transport.addComment(`version=${context.runtime.remotePackageData.manifest.version}`);
54
+ yield transport.transport.setDocumentation(new manifest_1.Manifest(context.runtime.remotePackageData.manifest).getAbapXml());
55
+ yield transport.transport.rename(`@X1@TRM: ${context.runtime.remotePackageData.manifest.name} v${context.runtime.remotePackageData.manifest.version} ${transport.type === transport_1.TrmTransportIdentifier.CUST ? '(C)' : ''}`.trim());
56
+ yield transport.transport.release(true, true);
57
+ }
58
+ transportsStatus[index].success = true;
59
+ }
60
+ catch (e) {
61
+ trm_commons_1.Logger.error(`Error on finalize step of transport ${transport.transport.trkorr}`, true);
62
+ trm_commons_1.Logger.error(e.toString(), true);
63
+ transportsStatus[index].success = false;
64
+ }
65
+ }
66
+ transportsStatus.forEach(o => {
67
+ if (o.success) {
68
+ if (o.len > 0) {
69
+ trm_commons_1.Logger.success(`Use ${o.type === transport_1.TrmTransportIdentifier.TADIR ? 'workbench' : 'customizing'} transport ${chalk_1.default.bold(o.trkorr)} in ${systemConnector_1.SystemConnector.getDest()} landscape transports.`);
70
+ }
71
+ }
72
+ else {
73
+ if (o.len > 0) {
74
+ trm_commons_1.Logger.error(`Error on release of ${o.type === transport_1.TrmTransportIdentifier.TADIR ? 'workbench' : 'customizing'} transport ${chalk_1.default.bold(o.trkorr)}.`);
75
+ context.runtime.installData.transports = context.runtime.installData.transports.filter(o => o.transport.trkorr !== o.transport.trkorr);
76
+ }
77
+ }
78
+ });
79
+ })
80
+ };
@@ -59,16 +59,19 @@ exports.setInstallDevclass = {
59
59
  var adaptDevclassName = t.devclass;
60
60
  const replacement = context.rawInput.installData.installDevclass.replacements.find(o => o.originalDevclass === t.devclass);
61
61
  if (updateNamespace) {
62
- if (!replacement && updateNamespace === '$' && context.runtime.isTrmServerRest) {
62
+ if (!replacement && updateNamespace === '$' && (context.runtime.isTrmServer || context.runtime.isTrmRest)) {
63
63
  adaptDevclassName = (0, commons_1.adjustTrmServerRestDevclass)(adaptDevclassName);
64
64
  }
65
65
  else {
66
66
  adaptDevclassName = adaptDevclassName.replace(new RegExp(`^${originalNamespace}`, 'gmi'), updateNamespace);
67
67
  }
68
68
  }
69
+ else if (context.runtime.isTrmRest) {
70
+ adaptDevclassName = (0, commons_1.adjustTrmServerRestDevclass)(adaptDevclassName);
71
+ }
69
72
  const packageExists = yield systemConnector_1.SystemConnector.getDevclass(adaptDevclassName);
70
73
  if (!replacement) {
71
- if (context.rawInput.contextData.noInquirer || context.runtime.isTrmServerRest) {
74
+ if (context.rawInput.contextData.noInquirer || (context.runtime.isTrmServer || context.runtime.isTrmRest)) {
72
75
  const automaticValue = _validateDevclass(adaptDevclassName, [updateNamespace || originalNamespace, '$', originalNamespace]);
73
76
  if (automaticValue === true) {
74
77
  context.rawInput.installData.installDevclass.replacements.push({
@@ -64,7 +64,13 @@ exports.init = {
64
64
  context.rawInput.packageData.name = parsedPackageName.fullName;
65
65
  if (registry.getRegistryType() === registry_1.RegistryType.PUBLIC) {
66
66
  trm_commons_1.Logger.log(`Public registry, checking if logged in`, true);
67
- yield registry.whoAmI();
67
+ try {
68
+ yield registry.whoAmI();
69
+ }
70
+ catch (e) {
71
+ trm_commons_1.Logger.error(`Cannot publish to public registry without being logged in!`);
72
+ throw e;
73
+ }
68
74
  }
69
75
  if (!context.rawInput.contextData) {
70
76
  context.rawInput.contextData = {};
@@ -3,6 +3,7 @@ import * as struct from "./struct";
3
3
  import { IClient } from "./IClient";
4
4
  import { AxiosInstance } from "axios";
5
5
  import { Login, RESTClientError, SapMessage } from ".";
6
+ import { TrmPackageUpdateData } from "../systemConnector";
6
7
  export declare class RESTClient implements IClient {
7
8
  endpoint: string;
8
9
  rfcdest: components.RFCDEST;
@@ -74,6 +75,6 @@ export declare class RESTClient implements IClient {
74
75
  readLogPolling(logID: components.ZTRM_POLLING_ID): Promise<components.ZTRM_POLLING_LAST_MSG>;
75
76
  getTransportImportStatus(trkorr: components.TRKORR, system: components.TMSSYSNAM): Promise<struct.TPSTAT>;
76
77
  getObjectsLocks(objects: struct.TADIR_KEY[]): Promise<struct.ZTRM_OBJ_LOCK[]>;
77
- updateTrmPackageData(data: any): Promise<void>;
78
+ updateTrmPackageData(data: TrmPackageUpdateData): Promise<void>;
78
79
  getTransportTargets(): Promise<components.TARSYSTEM[]>;
79
80
  }
@@ -724,8 +724,11 @@ class RESTClient {
724
724
  }
725
725
  updateTrmPackageData(data) {
726
726
  return __awaiter(this, void 0, void 0, function* () {
727
- yield this._axiosInstance.post('/update_trm_package_data', {
728
- data
727
+ const formData = new FormData.default();
728
+ formData.append('manifest', data.manifest, 'manifest.json');
729
+ formData.append('data', JSON.stringify(Object.assign(Object.assign({}, data), { manifest: undefined })));
730
+ yield this._axiosInstance.post('/update_trm_package_data', formData, {
731
+ headers: formData.getHeaders()
729
732
  });
730
733
  });
731
734
  }
@@ -2,6 +2,7 @@ import * as components from "./components";
2
2
  import * as struct from "./struct";
3
3
  import { IClient } from "./IClient";
4
4
  import { RFCClientError, SapMessage } from ".";
5
+ import { TrmPackageUpdateData } from "../systemConnector";
5
6
  export declare class RFCClient implements IClient {
6
7
  private _rfcClientArgs;
7
8
  private _cLangu;
@@ -75,6 +76,6 @@ export declare class RFCClient implements IClient {
75
76
  readLogPolling(logID: components.ZTRM_POLLING_ID): Promise<components.ZTRM_POLLING_LAST_MSG>;
76
77
  getTransportImportStatus(trkorr: components.TRKORR, system: components.TMSSYSNAM): Promise<struct.TPSTAT>;
77
78
  getObjectsLocks(objects: struct.TADIR_KEY[]): Promise<struct.ZTRM_OBJ_LOCK[]>;
78
- updateTrmPackageData(data: any): Promise<void>;
79
+ updateTrmPackageData(data: TrmPackageUpdateData): Promise<void>;
79
80
  getTransportTargets(): Promise<components.TARSYSTEM[]>;
80
81
  }
@@ -1,4 +1,4 @@
1
- import { Deprecate, DistTagAdd, DistTagRm, Package, Ping, WhoAmI } from "trm-registry-types";
1
+ import { BatchCompareRequest, BatchCompareResponse, Deprecate, DistTagAdd, DistTagRm, Package, PackageContents, 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 {
@@ -18,5 +18,6 @@ export declare abstract class AbstractRegistry {
18
18
  abstract deprecate: (fullName: string, version: string, deprecate: Deprecate) => Promise<void>;
19
19
  abstract addDistTag: (fullName: string, distTag: DistTagAdd) => Promise<void>;
20
20
  abstract rmDistTag: (fullName: string, distTag: DistTagRm) => Promise<void>;
21
- abstract contents: (fullName: string, version: string) => Promise<any>;
21
+ abstract batchCompare: (packages: BatchCompareRequest) => Promise<BatchCompareResponse>;
22
+ abstract contents: (fullName: string, version: string) => Promise<PackageContents>;
22
23
  }
@@ -1,4 +1,4 @@
1
- import { Deprecate, DistTagAdd, DistTagRm, Package, Ping, WhoAmI } from "trm-registry-types";
1
+ import { BatchCompareRequest, BatchCompareResponse, Deprecate, DistTagAdd, DistTagRm, Package, PackageContents, Ping, WhoAmI } from "trm-registry-types";
2
2
  import { AbstractRegistry } from "./AbstractRegistry";
3
3
  import { RegistryType } from "./RegistryType";
4
4
  import { TrmArtifact } from "../trmPackage";
@@ -24,5 +24,6 @@ export declare class FileSystem implements AbstractRegistry {
24
24
  deprecate(fullName: string, version: string, deprecate: Deprecate): Promise<void>;
25
25
  addDistTag(fullName: string, distTag: DistTagAdd): Promise<void>;
26
26
  rmDistTag(fullName: string, distTag: DistTagRm): Promise<void>;
27
- contents(fullName: string, version: string): Promise<any>;
27
+ batchCompare(packages: BatchCompareRequest): Promise<BatchCompareResponse>;
28
+ contents(fullName: string, version: string): Promise<PackageContents>;
28
29
  }
@@ -174,6 +174,11 @@ class FileSystem {
174
174
  throw new Error(`File system can't remove dist tags!`);
175
175
  });
176
176
  }
177
+ batchCompare(packages) {
178
+ return __awaiter(this, void 0, void 0, function* () {
179
+ throw new Error(`File system cannot compare package versions in registry!`);
180
+ });
181
+ }
177
182
  contents(fullName, version) {
178
183
  return __awaiter(this, void 0, void 0, function* () {
179
184
  throw new Error(`File system can't see contents!`);
@@ -1,5 +1,5 @@
1
1
  import { RegistryType } from "./RegistryType";
2
- import { Deprecate, DistTagAdd, DistTagRm, Package, Ping, WhoAmI } from "trm-registry-types";
2
+ import { BatchCompareRequest, BatchCompareResponse, Deprecate, DistTagAdd, DistTagRm, Package, PackageContents, Ping, WhoAmI } from "trm-registry-types";
3
3
  import { TrmArtifact } from "../trmPackage/TrmArtifact";
4
4
  import { AbstractRegistry } from "./AbstractRegistry";
5
5
  export declare const PUBLIC_RESERVED_KEYWORD = "public";
@@ -31,5 +31,6 @@ export declare class RegistryV2 implements AbstractRegistry {
31
31
  deprecate(fullName: string, version: string, deprecate: Deprecate): Promise<void>;
32
32
  addDistTag(fullName: string, distTag: DistTagAdd): Promise<void>;
33
33
  rmDistTag(fullName: string, distTag: DistTagRm): Promise<void>;
34
- contents(fullName: string, version?: string): Promise<any>;
34
+ batchCompare(packages: BatchCompareRequest): Promise<BatchCompareResponse>;
35
+ contents(fullName: string, version?: string): Promise<PackageContents>;
35
36
  }
@@ -521,6 +521,11 @@ class RegistryV2 {
521
521
  }
522
522
  });
523
523
  }
524
+ batchCompare(packages) {
525
+ return __awaiter(this, void 0, void 0, function* () {
526
+ return (yield this._axiosInstance.post('/batchCompare', packages)).data;
527
+ });
528
+ }
524
529
  contents(fullName_1) {
525
530
  return __awaiter(this, arguments, void 0, function* (fullName, version = 'latest') {
526
531
  var _a;
@@ -5,6 +5,14 @@ import { ISystemConnectorBase } from "./ISystemConnectorBase";
5
5
  import { RESTConnection } from "./RESTConnection";
6
6
  import { RFCConnection } from "./RFCConnection";
7
7
  import { SystemConnectorSupportedBulk } from "./SystemConnectorSupportedBulk";
8
+ export interface TrmPackageUpdateData {
9
+ package_name: string;
10
+ package_registry: string;
11
+ manifest: Buffer;
12
+ trkorr: string;
13
+ integrity: string;
14
+ devclass: string;
15
+ }
8
16
  export interface ISystemConnector extends ISystemConnectorBase {
9
17
  supportedBulk: SystemConnectorSupportedBulk;
10
18
  isStateless: boolean;
@@ -64,6 +72,6 @@ export interface ISystemConnector extends ISystemConnectorBase {
64
72
  readLogPolling: (logID: components.ZTRM_POLLING_ID) => Promise<components.ZTRM_POLLING_LAST_MSG>;
65
73
  getTransportImportStatus: (trkorr: components.TRKORR, system: components.TMSSYSNAM) => Promise<struct.TPSTAT>;
66
74
  getObjectsLocks: (objects: struct.TADIR_KEY[]) => Promise<struct.ZTRM_OBJ_LOCK[]>;
67
- updateTrmPackageData: (data: any) => Promise<void>;
75
+ updateTrmPackageData: (data: TrmPackageUpdateData) => Promise<void>;
68
76
  getTransportTargets: () => Promise<components.TARSYSTEM[]>;
69
77
  }
@@ -1,7 +1,7 @@
1
1
  import { DEVCLASS } from "../client/components";
2
2
  import { TADIR } from "../client/struct";
3
3
  import { Login } from "../client/Login";
4
- import { ISystemConnector } from "./ISystemConnector";
4
+ import { ISystemConnector, TrmPackageUpdateData } from "./ISystemConnector";
5
5
  import * as components from "../client/components";
6
6
  import * as struct from "../client/struct";
7
7
  import { SystemConnectorBase } from "./SystemConnectorBase";
@@ -90,6 +90,6 @@ export declare class RESTSystemConnector extends SystemConnectorBase implements
90
90
  readLogPolling(logID: components.ZTRM_POLLING_ID): Promise<components.ZTRM_POLLING_LAST_MSG>;
91
91
  getTransportImportStatus(trkorr: components.TRKORR, system: components.TMSSYSNAM): Promise<struct.TPSTAT>;
92
92
  getObjectsLocks(objects: struct.TADIR_KEY[]): Promise<struct.ZTRM_OBJ_LOCK[]>;
93
- updateTrmPackageData(data: any): Promise<void>;
93
+ updateTrmPackageData(data: TrmPackageUpdateData): Promise<void>;
94
94
  getTransportTargets(): Promise<components.TARSYSTEM[]>;
95
95
  }
@@ -3,7 +3,7 @@ import { DEVCLASS } from "../client/components";
3
3
  import { TADIR } from "../client/struct";
4
4
  import { RFCConnection } from "./RFCConnection";
5
5
  import { Login } from "../client/Login";
6
- import { ISystemConnector } from "./ISystemConnector";
6
+ import { ISystemConnector, TrmPackageUpdateData } from "./ISystemConnector";
7
7
  import * as components from "../client/components";
8
8
  import * as struct from "../client/struct";
9
9
  import { SystemConnectorBase } from "./SystemConnectorBase";
@@ -88,6 +88,6 @@ export declare class RFCSystemConnector extends SystemConnectorBase implements I
88
88
  readLogPolling(logID: components.ZTRM_POLLING_ID): Promise<components.ZTRM_POLLING_LAST_MSG>;
89
89
  getTransportImportStatus(trkorr: components.TRKORR, system: components.TMSSYSNAM): Promise<struct.TPSTAT>;
90
90
  getObjectsLocks(objects: struct.TADIR_KEY[]): Promise<struct.ZTRM_OBJ_LOCK[]>;
91
- updateTrmPackageData(data: any): Promise<void>;
91
+ updateTrmPackageData(data: TrmPackageUpdateData): Promise<void>;
92
92
  getTransportTargets(): Promise<components.TARSYSTEM[]>;
93
93
  }
@@ -1,7 +1,7 @@
1
1
  import { TRKORR, DEVCLASS, TDEVC, TADIR, PGMID, TROBJTYPE, SOBJ_NAME, ClientError } from "../client";
2
2
  import { AbstractRegistry } from "../registry";
3
3
  import { TrmPackage } from "../trmPackage";
4
- import { ISystemConnector } from "./ISystemConnector";
4
+ import { ISystemConnector, TrmPackageUpdateData } from "./ISystemConnector";
5
5
  import { InstallPackage } from "./InstallPackage";
6
6
  import { SapMessage } from "../client/SapMessage";
7
7
  import * as components from "../client/components";
@@ -104,5 +104,5 @@ export declare namespace SystemConnector {
104
104
  function getTransportImportStatus(trkorr: components.TRKORR, system: components.TMSSYSNAM): Promise<struct.TPSTAT>;
105
105
  function getTimezone(): Promise<string>;
106
106
  function getObjectsLocks(objects: struct.TADIR_KEY[]): Promise<struct.ZTRM_OBJ_LOCK[]>;
107
- function updateTrmPackageData(data: any): Promise<void>;
107
+ function updateTrmPackageData(data: TrmPackageUpdateData): Promise<void>;
108
108
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trm-core",
3
- "version": "9.8.3",
3
+ "version": "9.9.0",
4
4
  "description": "TRM (Transport Request Manager) Core",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -34,14 +34,14 @@
34
34
  },
35
35
  "license": "MIT",
36
36
  "trmDependencies": {
37
- "trm-server": "^6.2.0"
37
+ "trm-server": "^6.4.1"
38
38
  },
39
39
  "dependencies": {
40
40
  "@esm2cjs/normalize-url": "^8.0.0",
41
41
  "@inquirer/prompts": "^7.8.1",
42
42
  "@simonegaffurini/sammarksworkflow": "^1.3.2-fork",
43
43
  "@xmldom/xmldom": "^0.9.8",
44
- "adm-zip": "^0.5.10",
44
+ "adm-zip": "^0.6.0",
45
45
  "axios": "^1.7.9",
46
46
  "chalk": "^4.1.2",
47
47
  "dotenv": "^17.2.2",