trm-core 6.2.5 → 6.4.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 (129) hide show
  1. package/changelog.txt +35 -0
  2. package/dist/abapgit/DotAbapGit.d.ts +8 -0
  3. package/dist/abapgit/DotAbapGit.js +80 -0
  4. package/dist/abapgit/index.d.ts +1 -0
  5. package/dist/abapgit/index.js +17 -0
  6. package/dist/actions/checkPackageDependencies/analyze.js +1 -1
  7. package/dist/actions/findDependencies/parseSenvi.js +3 -0
  8. package/dist/actions/findDependencies/setTrmDependencies.js +93 -36
  9. package/dist/actions/install/checkTransports.js +71 -1
  10. package/dist/actions/install/executePostActivities.d.ts +3 -0
  11. package/dist/actions/install/executePostActivities.js +62 -0
  12. package/dist/actions/install/generateInstallTransport.js +1 -0
  13. package/dist/actions/install/importCustTransport.js +1 -0
  14. package/dist/actions/install/importDevcTransport.js +4 -0
  15. package/dist/actions/install/importLangTransport.js +1 -0
  16. package/dist/actions/install/importTadirTransport.js +2 -0
  17. package/dist/actions/install/index.d.ts +9 -4
  18. package/dist/actions/install/index.js +7 -1
  19. package/dist/actions/install/init.js +19 -3
  20. package/dist/actions/install/installDependencies.js +1 -9
  21. package/dist/actions/install/migrate.d.ts +3 -0
  22. package/dist/actions/install/migrate.js +35 -0
  23. package/dist/actions/install/readTadir.js +41 -2
  24. package/dist/actions/install/refreshTmsTxt.d.ts +3 -0
  25. package/dist/actions/install/refreshTmsTxt.js +33 -0
  26. package/dist/actions/install/setInstallDevclass.js +11 -1
  27. package/dist/actions/installDependency/index.d.ts +2 -2
  28. package/dist/actions/installDependency/init.js +4 -0
  29. package/dist/actions/publish/findDependencies.js +20 -15
  30. package/dist/actions/publish/generateCustTransport.js +2 -0
  31. package/dist/actions/publish/generateDevcTransport.js +2 -0
  32. package/dist/actions/publish/generateLangTransport.js +4 -0
  33. package/dist/actions/publish/generateTadirTransport.js +15 -1
  34. package/dist/actions/publish/getSourceCode.d.ts +3 -0
  35. package/dist/actions/publish/getSourceCode.js +36 -0
  36. package/dist/actions/publish/index.d.ts +12 -3
  37. package/dist/actions/publish/index.js +2 -0
  38. package/dist/actions/publish/init.js +10 -2
  39. package/dist/actions/publish/publishToRegistry.js +5 -1
  40. package/dist/actions/publish/setManifestValues.js +69 -1
  41. package/dist/actions/publish/setReadme.js +8 -1
  42. package/dist/client/RESTClient.d.ts +11 -0
  43. package/dist/client/RESTClient.js +141 -39
  44. package/dist/client/RFCClient.d.ts +11 -0
  45. package/dist/client/RFCClient.js +104 -19
  46. package/dist/client/components/LANGU.d.ts +1 -0
  47. package/dist/client/components/LANGU.js +2 -0
  48. package/dist/client/components/SEOCLSNAME.d.ts +1 -0
  49. package/dist/client/components/SEOCLSNAME.js +2 -0
  50. package/dist/client/components/SEODESCR.d.ts +1 -0
  51. package/dist/client/components/SEODESCR.js +2 -0
  52. package/dist/client/components/SYMSGID.d.ts +1 -0
  53. package/dist/client/components/SYMSGID.js +2 -0
  54. package/dist/client/components/SYMSGNO.d.ts +1 -0
  55. package/dist/client/components/SYMSGNO.js +2 -0
  56. package/dist/client/components/SYMSGTY.d.ts +1 -0
  57. package/dist/client/components/SYMSGTY.js +2 -0
  58. package/dist/client/components/SYMSGV.d.ts +1 -0
  59. package/dist/client/components/SYMSGV.js +2 -0
  60. package/dist/client/components/TRSTATUS.d.ts +1 -0
  61. package/dist/client/components/TRSTATUS.js +2 -0
  62. package/dist/client/components/ZTRM_TRKORR.d.ts +1 -0
  63. package/dist/client/components/ZTRM_TRKORR.js +2 -0
  64. package/dist/client/components/index.d.ts +9 -0
  65. package/dist/client/components/index.js +9 -0
  66. package/dist/client/struct/E070.d.ts +2 -1
  67. package/dist/client/struct/SEOCLASSTX.d.ts +6 -0
  68. package/dist/client/struct/SEOCLASSTX.js +2 -0
  69. package/dist/client/struct/SYMSG.d.ts +10 -0
  70. package/dist/client/struct/SYMSG.js +2 -0
  71. package/dist/client/struct/index.d.ts +2 -0
  72. package/dist/client/struct/index.js +2 -0
  73. package/dist/commons/checkCoreTrmDependencies.d.ts +7 -0
  74. package/dist/commons/checkCoreTrmDependencies.js +49 -0
  75. package/dist/commons/getCoreTrmDependencies.d.ts +3 -0
  76. package/dist/commons/getCoreTrmDependencies.js +8 -0
  77. package/dist/commons/getNodePackage.d.ts +1 -0
  78. package/dist/commons/getNodePackage.js +61 -0
  79. package/dist/commons/index.d.ts +3 -0
  80. package/dist/commons/index.js +3 -0
  81. package/dist/logger/CliLogger.d.ts +1 -0
  82. package/dist/logger/CliLogger.js +19 -0
  83. package/dist/logger/ConsoleLogger.d.ts +1 -0
  84. package/dist/logger/ConsoleLogger.js +19 -0
  85. package/dist/logger/DummyLogger.d.ts +1 -0
  86. package/dist/logger/DummyLogger.js +1 -0
  87. package/dist/logger/ILogger.d.ts +1 -0
  88. package/dist/logger/Logger.d.ts +1 -0
  89. package/dist/logger/Logger.js +5 -0
  90. package/dist/manifest/Manifest.d.ts +1 -0
  91. package/dist/manifest/Manifest.js +106 -8
  92. package/dist/manifest/PostActivity.d.ts +11 -0
  93. package/dist/manifest/PostActivity.js +150 -0
  94. package/dist/manifest/TrmManifest.d.ts +1 -0
  95. package/dist/manifest/TrmManifestBase.d.ts +2 -0
  96. package/dist/manifest/TrmManifestNamespace.d.ts +1 -0
  97. package/dist/manifest/TrmManifestPostActivity.d.ts +7 -0
  98. package/dist/manifest/TrmManifestPostActivity.js +2 -0
  99. package/dist/manifest/index.d.ts +2 -0
  100. package/dist/manifest/index.js +2 -0
  101. package/dist/registry/AbstractRegistry.d.ts +19 -0
  102. package/dist/registry/AbstractRegistry.js +6 -0
  103. package/dist/registry/FileSystem.d.ts +23 -0
  104. package/dist/registry/FileSystem.js +161 -0
  105. package/dist/registry/Registry.d.ts +4 -3
  106. package/dist/registry/Registry.js +8 -5
  107. package/dist/registry/RegistryProvider.d.ts +5 -0
  108. package/dist/registry/RegistryProvider.js +35 -0
  109. package/dist/registry/RegistryType.d.ts +2 -1
  110. package/dist/registry/RegistryType.js +1 -0
  111. package/dist/registry/index.d.ts +3 -1
  112. package/dist/registry/index.js +3 -1
  113. package/dist/systemConnector/ISystemConnector.d.ts +11 -0
  114. package/dist/systemConnector/ISystemConnectorBase.d.ts +4 -3
  115. package/dist/systemConnector/RESTSystemConnector.d.ts +11 -0
  116. package/dist/systemConnector/RESTSystemConnector.js +40 -0
  117. package/dist/systemConnector/RFCSystemConnector.d.ts +11 -0
  118. package/dist/systemConnector/RFCSystemConnector.js +40 -0
  119. package/dist/systemConnector/SystemConnector.d.ts +15 -3
  120. package/dist/systemConnector/SystemConnector.js +65 -2
  121. package/dist/systemConnector/SystemConnectorBase.d.ts +8 -5
  122. package/dist/systemConnector/SystemConnectorBase.js +86 -41
  123. package/dist/transport/Transport.d.ts +13 -3
  124. package/dist/transport/Transport.js +134 -39
  125. package/dist/trmPackage/TrmArtifact.d.ts +9 -2
  126. package/dist/trmPackage/TrmArtifact.js +30 -9
  127. package/dist/trmPackage/TrmPackage.d.ts +6 -6
  128. package/dist/trmPackage/TrmPackage.js +1 -2
  129. package/package.json +18 -8
@@ -18,6 +18,7 @@ const inquirer_1 = require("../../inquirer");
18
18
  const registry_1 = require("../../registry");
19
19
  const manifest_1 = require("../../manifest");
20
20
  const chalk_1 = __importDefault(require("chalk"));
21
+ const FileSystem_1 = require("../../registry/FileSystem");
21
22
  exports.setManifestValues = {
22
23
  name: 'set-manifest-values',
23
24
  run: (context) => __awaiter(void 0, void 0, void 0, function* () {
@@ -86,6 +87,9 @@ exports.setManifestValues = {
86
87
  name: `Private`,
87
88
  value: true
88
89
  }],
90
+ when: () => {
91
+ return context.rawInput.packageData.registry.getRegistryType() !== registry_1.RegistryType.LOCAL;
92
+ },
89
93
  validate: (input) => {
90
94
  return (0, inquirer_1.validatePackageVisibility)(context.rawInput.packageData.registry.getRegistryType(), context.rawInput.packageData.name, input, context.runtime.trmPackage.latestReleaseManifest ? context.runtime.trmPackage.latestReleaseManifest.private : undefined);
91
95
  },
@@ -161,9 +165,15 @@ exports.setManifestValues = {
161
165
  }]);
162
166
  context.runtime.trmPackage.manifest = Object.assign(Object.assign({}, context.runtime.trmPackage.manifest), inq);
163
167
  }
164
- logger_1.Logger.info(`Package visibility: ${chalk_1.default.bold(context.runtime.trmPackage.manifest.private ? 'private' : 'public')}`);
168
+ if (context.rawInput.packageData.registry.getRegistryType() === registry_1.RegistryType.LOCAL) {
169
+ context.runtime.trmPackage.manifest.private = true;
170
+ }
171
+ else {
172
+ logger_1.Logger.info(`Package visibility: ${chalk_1.default.bold(context.runtime.trmPackage.manifest.private ? 'private' : 'public')}`);
173
+ }
165
174
  if (context.runtime.packageData.namespace) {
166
175
  context.runtime.trmPackage.manifest.namespace = {
176
+ ns: context.runtime.packageData.namespace.trnspacet.namespace,
167
177
  replicense: context.runtime.packageData.namespace.trnspacet.replicense,
168
178
  texts: context.runtime.packageData.namespace.trnspacett.map(o => {
169
179
  return {
@@ -174,6 +184,64 @@ exports.setManifestValues = {
174
184
  })
175
185
  };
176
186
  }
187
+ if (context.rawInput.packageData.registry.getRegistryType() === registry_1.RegistryType.LOCAL) {
188
+ context.runtime.trmPackage.manifest.registry = FileSystem_1.LOCAL_RESERVED_KEYWORD;
189
+ }
190
+ else if (context.rawInput.packageData.registry.getRegistryType() === registry_1.RegistryType.PRIVATE) {
191
+ context.runtime.trmPackage.manifest.registry = context.rawInput.packageData.registry.endpoint;
192
+ }
193
+ if (!context.rawInput.contextData.noInquirer) {
194
+ const inq = yield inquirer_1.Inquirer.prompt([{
195
+ message: `Do you want to edit post activities?`,
196
+ type: 'confirm',
197
+ name: 'editPostActivities',
198
+ default: false
199
+ }, {
200
+ message: 'Editor post activities',
201
+ type: 'editor',
202
+ name: 'postActivities',
203
+ postfix: '.json',
204
+ when: (hash) => {
205
+ return hash.editPostActivities;
206
+ },
207
+ default: JSON.stringify(context.runtime.trmPackage.manifest.postActivities || [], null, 2),
208
+ validate: (input) => {
209
+ try {
210
+ const parsedInput = JSON.parse(input);
211
+ if (Array.isArray(parsedInput)) {
212
+ return true;
213
+ }
214
+ else {
215
+ return 'Invalid array';
216
+ }
217
+ }
218
+ catch (e) {
219
+ return 'Invalid JSON';
220
+ }
221
+ }
222
+ }]);
223
+ if (inq.postActivities) {
224
+ logger_1.Logger.log(`Post activities were manually changed: before -> ${JSON.stringify(context.runtime.trmPackage.manifest.postActivities)}, after -> ${JSON.parse(inq.postActivities)}`, true);
225
+ context.runtime.trmPackage.manifest.postActivities = JSON.parse(inq.postActivities);
226
+ }
227
+ }
228
+ if (Array.isArray(context.runtime.trmPackage.manifest.postActivities) && context.runtime.trmPackage.manifest.postActivities.length > 0) {
229
+ var removedPostActivities = [];
230
+ logger_1.Logger.loading(`Checking post activities...`);
231
+ for (const data of context.runtime.trmPackage.manifest.postActivities) {
232
+ if (data.name) {
233
+ if (!removedPostActivities.find(c => c === data.name)) {
234
+ if (!(yield manifest_1.PostActivity.exists(data.name))) {
235
+ removedPostActivities.push(data.name.trim().toUpperCase());
236
+ }
237
+ }
238
+ }
239
+ }
240
+ removedPostActivities.forEach(name => {
241
+ logger_1.Logger.error(`Class "${name.trim().toUpperCase()}" does not exist and will be removed from post activities list.`);
242
+ context.runtime.trmPackage.manifest.postActivities = context.runtime.trmPackage.manifest.postActivities.filter(o => o.name !== name);
243
+ });
244
+ }
177
245
  context.runtime.trmPackage.manifest = manifest_1.Manifest.normalize(context.runtime.trmPackage.manifest, false);
178
246
  })
179
247
  };
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.setReadme = void 0;
13
13
  const logger_1 = require("../../logger");
14
14
  const inquirer_1 = require("../../inquirer");
15
+ const registry_1 = require("../../registry");
15
16
  exports.setReadme = {
16
17
  name: 'set-readme',
17
18
  filter: (context) => __awaiter(void 0, void 0, void 0, function* () {
@@ -20,7 +21,13 @@ exports.setReadme = {
20
21
  return false;
21
22
  }
22
23
  else {
23
- return true;
24
+ if (context.rawInput.packageData.registry.getRegistryType() === registry_1.RegistryType.LOCAL) {
25
+ logger_1.Logger.log(`Skipping readme input (registry is local)`, true);
26
+ return false;
27
+ }
28
+ else {
29
+ return true;
30
+ }
24
31
  }
25
32
  }),
26
33
  run: (context) => __awaiter(void 0, void 0, void 0, function* () {
@@ -22,11 +22,13 @@ export declare class RESTClient implements IClient {
22
22
  createWbTransport(text: components.AS4TEXT, target?: components.TR_TARGET): Promise<components.TRKORR>;
23
23
  setTransportDoc(trkorr: components.TRKORR, doc: struct.TLINE[]): Promise<void>;
24
24
  getDevclassObjects(devclass: components.DEVCLASS): Promise<struct.TADIR[]>;
25
+ removeComments(trkorr: components.TRKORR, object: components.TROBJTYPE): Promise<void>;
25
26
  addToTransportRequest(trkorr: components.TRKORR, content: struct.E071[], lock: boolean): Promise<void>;
26
27
  repositoryEnvironment(objectType: components.SEU_OBJ, objectName: components.SOBJ_NAME): Promise<struct.SENVI[]>;
27
28
  deleteTrkorr(trkorr: components.TRKORR): Promise<void>;
28
29
  releaseTrkorr(trkorr: components.TRKORR, lock: boolean, timeout?: number): Promise<void>;
29
30
  addSkipTrkorr(trkorr: components.TRKORR): Promise<void>;
31
+ removeSkipTrkorr(trkorr: components.TRKORR): Promise<void>;
30
32
  addSrcTrkorr(trkorr: components.TRKORR): Promise<void>;
31
33
  readTmsQueue(target: components.TMSSYSNAM): Promise<struct.STMSIQREQ[]>;
32
34
  createPackage(scompkdtln: struct.SCOMPKDTLN): Promise<void>;
@@ -50,4 +52,13 @@ export declare class RESTClient implements IClient {
50
52
  getExistingObjectsBulk(objects: struct.TADIR[]): Promise<struct.TADIR[]>;
51
53
  addNamespace(namespace: components.NAMESPACE, replicense: components.TRNLICENSE, texts: struct.TRNSPACETT[]): Promise<void>;
52
54
  getR3transInfo(): Promise<string>;
55
+ migrateTransport(trkorr: components.TRKORR): Promise<components.ZTRM_TRKORR>;
56
+ deleteTmsTransport(trkorr: components.TRKORR, system: components.TMSSYSNAM): Promise<void>;
57
+ refreshTransportTmsTxt(trkorr: components.TRKORR): Promise<void>;
58
+ getDotAbapgit(devclass: components.DEVCLASS): Promise<Buffer>;
59
+ getAbapgitSource(devclass: components.DEVCLASS): Promise<{
60
+ zip: Buffer;
61
+ objects: struct.TADIR[];
62
+ }>;
63
+ executePostActivity(data: Buffer): Promise<struct.SYMSG[]>;
53
64
  }
@@ -46,6 +46,7 @@ exports.RESTClient = void 0;
46
46
  const commons_1 = require("../commons");
47
47
  const FormData = __importStar(require("form-data"));
48
48
  const logger_1 = require("../logger");
49
+ const parse_multipart_data_1 = require("parse-multipart-data");
49
50
  const AXIOS_CTX = "RestServer";
50
51
  class RESTClient {
51
52
  constructor(endpoint, rfcdest, _login, _cLangu) {
@@ -61,7 +62,7 @@ class RESTClient {
61
62
  username: this._login.user,
62
63
  password: this._login.passwd
63
64
  },
64
- timeout: 10000,
65
+ timeout: 30000,
65
66
  }, AXIOS_CTX);
66
67
  }
67
68
  open() {
@@ -115,6 +116,7 @@ class RESTClient {
115
116
  if (axiosError.response.data.log) {
116
117
  rfcClientError.messageLog = axiosError.response.data.log;
117
118
  }
119
+ rfcClientError.exceptionType = error.message;
118
120
  logger_1.Logger.error(rfcClientError.toString(), true);
119
121
  throw rfcClientError;
120
122
  }));
@@ -149,49 +151,59 @@ class RESTClient {
149
151
  }
150
152
  readTable(tableName, fields, options) {
151
153
  return __awaiter(this, void 0, void 0, function* () {
152
- var sqlOutput = [];
153
- const delimiter = '|';
154
- var aOptions = [];
155
- if (options) {
156
- const aSplit = options.split(/\s+AND\s+/);
157
- if (aSplit.length > 1) {
158
- aSplit.forEach((s, i) => {
159
- var sText = s.trim();
160
- if (i !== 0) {
161
- sText = `AND ${sText}`;
162
- }
163
- aOptions.push({ text: sText });
154
+ try {
155
+ var sqlOutput = [];
156
+ const delimiter = '|';
157
+ var aOptions = [];
158
+ if (options) {
159
+ const aSplit = options.split(/\s+AND\s+/);
160
+ if (aSplit.length > 1) {
161
+ aSplit.forEach((s, i) => {
162
+ var sText = s.trim();
163
+ if (i !== 0) {
164
+ sText = `AND ${sText}`;
165
+ }
166
+ aOptions.push({ text: sText });
167
+ });
168
+ }
169
+ else {
170
+ aOptions = aSplit.map(s => {
171
+ return {
172
+ text: s
173
+ };
174
+ });
175
+ }
176
+ }
177
+ const result = yield this._axiosInstance.get('/read_table', {
178
+ params: {
179
+ rfcdest: this.rfcdest
180
+ },
181
+ data: {
182
+ query_table: tableName.toUpperCase(),
183
+ delimiter,
184
+ options: aOptions,
185
+ fields: fields
186
+ }
187
+ });
188
+ const data = result.data;
189
+ data.forEach(tab512 => {
190
+ var sqlLine = {};
191
+ const waSplit = tab512.wa.split(delimiter);
192
+ fields.forEach((field, index) => {
193
+ sqlLine[field.fieldName] = waSplit[index].trim();
164
194
  });
195
+ sqlOutput.push(sqlLine);
196
+ });
197
+ return (0, commons_1.normalize)(sqlOutput);
198
+ }
199
+ catch (e) {
200
+ if (e.message === 'TABLE_WITHOUT_DATA') {
201
+ return [];
165
202
  }
166
203
  else {
167
- aOptions = aSplit.map(s => {
168
- return {
169
- text: s
170
- };
171
- });
204
+ throw e;
172
205
  }
173
206
  }
174
- const result = yield this._axiosInstance.get('/read_table', {
175
- params: {
176
- rfcdest: this.rfcdest
177
- },
178
- data: {
179
- query_table: tableName.toUpperCase(),
180
- delimiter,
181
- options: aOptions,
182
- fields: fields
183
- }
184
- });
185
- const data = result.data;
186
- data.forEach(tab512 => {
187
- var sqlLine = {};
188
- const waSplit = tab512.wa.split(delimiter);
189
- fields.forEach((field, index) => {
190
- sqlLine[field.fieldName] = waSplit[index].trim();
191
- });
192
- sqlOutput.push(sqlLine);
193
- });
194
- return (0, commons_1.normalize)(sqlOutput);
195
207
  });
196
208
  }
197
209
  getFileSystem() {
@@ -273,6 +285,16 @@ class RESTClient {
273
285
  return result.tadir;
274
286
  });
275
287
  }
288
+ removeComments(trkorr, object) {
289
+ return __awaiter(this, void 0, void 0, function* () {
290
+ yield this._axiosInstance.delete('/remove_tr_comments', {
291
+ data: {
292
+ trkorr: trkorr.trim().toUpperCase(),
293
+ object: object.trim().toUpperCase()
294
+ }
295
+ });
296
+ });
297
+ }
276
298
  addToTransportRequest(trkorr, content, lock) {
277
299
  return __awaiter(this, void 0, void 0, function* () {
278
300
  yield this._axiosInstance.put('/add_objs_tr', {
@@ -328,6 +350,15 @@ class RESTClient {
328
350
  });
329
351
  });
330
352
  }
353
+ removeSkipTrkorr(trkorr) {
354
+ return __awaiter(this, void 0, void 0, function* () {
355
+ yield this._axiosInstance.delete('/remove_skip_trkorr', {
356
+ data: {
357
+ trkorr: trkorr.trim().toUpperCase()
358
+ }
359
+ });
360
+ });
361
+ }
331
362
  addSrcTrkorr(trkorr) {
332
363
  return __awaiter(this, void 0, void 0, function* () {
333
364
  yield this._axiosInstance.put('/add_src_trkorr', {
@@ -511,5 +542,76 @@ class RESTClient {
511
542
  return result.log;
512
543
  });
513
544
  }
545
+ migrateTransport(trkorr) {
546
+ return __awaiter(this, void 0, void 0, function* () {
547
+ const result = (yield this._axiosInstance.post('/migrate_transport', {
548
+ trkorr
549
+ })).data;
550
+ return result.trmTrkorr;
551
+ });
552
+ }
553
+ deleteTmsTransport(trkorr, system) {
554
+ return __awaiter(this, void 0, void 0, function* () {
555
+ yield this._axiosInstance.delete('/delete_transport', {
556
+ data: {
557
+ trkorr,
558
+ system
559
+ }
560
+ });
561
+ });
562
+ }
563
+ refreshTransportTmsTxt(trkorr) {
564
+ return __awaiter(this, void 0, void 0, function* () {
565
+ yield this._axiosInstance.post('/refresh_tms_transport_txt', {
566
+ trkorr
567
+ });
568
+ });
569
+ }
570
+ getDotAbapgit(devclass) {
571
+ return __awaiter(this, void 0, void 0, function* () {
572
+ const result = (yield this._axiosInstance.get('/get_dot_abapgit', {
573
+ responseType: 'arraybuffer',
574
+ headers: {
575
+ 'Content-Type': 'application/octet-stream'
576
+ },
577
+ data: {
578
+ devclass
579
+ }
580
+ })).data;
581
+ return result;
582
+ });
583
+ }
584
+ getAbapgitSource(devclass) {
585
+ return __awaiter(this, void 0, void 0, function* () {
586
+ const { headers, data } = yield this._axiosInstance.get('/get_abapgit_source', {
587
+ responseType: 'arraybuffer',
588
+ headers: {
589
+ 'Content-Type': 'multipart/mixed'
590
+ },
591
+ data: {
592
+ devclass
593
+ }
594
+ });
595
+ try {
596
+ const boundary = headers['content-type'].match(/boundary=([-0-9A-Za-z]+)/i)[1];
597
+ const parsedData = (0, parse_multipart_data_1.parse)(data, boundary);
598
+ return {
599
+ zip: parsedData.find(o => o.name === 'zip').data,
600
+ objects: JSON.parse(parsedData.find(o => o.name === 'objects').data.toString())
601
+ };
602
+ }
603
+ catch (e) {
604
+ throw new Error(`Can't parse api data.`);
605
+ }
606
+ });
607
+ }
608
+ executePostActivity(data) {
609
+ return __awaiter(this, void 0, void 0, function* () {
610
+ const result = (yield this._axiosInstance.post('/execute_post_activity', data, {
611
+ timeout: 60000
612
+ })).data;
613
+ return result.messages;
614
+ });
615
+ }
514
616
  }
515
617
  exports.RESTClient = RESTClient;
@@ -24,11 +24,13 @@ export declare class RFCClient implements IClient {
24
24
  createWbTransport(text: components.AS4TEXT, target?: components.TR_TARGET): Promise<components.TRKORR>;
25
25
  setTransportDoc(trkorr: components.TRKORR, doc: struct.TLINE[]): Promise<void>;
26
26
  getDevclassObjects(devclass: components.DEVCLASS): Promise<struct.TADIR[]>;
27
+ removeComments(trkorr: components.TRKORR, object: components.TROBJTYPE): Promise<void>;
27
28
  addToTransportRequest(trkorr: components.TRKORR, content: struct.E071[], lock: boolean): Promise<void>;
28
29
  repositoryEnvironment(objectType: components.SEU_OBJ, objectName: components.SOBJ_NAME): Promise<struct.SENVI[]>;
29
30
  deleteTrkorr(trkorr: components.TRKORR): Promise<void>;
30
31
  releaseTrkorr(trkorr: components.TRKORR, lock: boolean, timeout?: number): Promise<void>;
31
32
  addSkipTrkorr(trkorr: components.TRKORR): Promise<void>;
33
+ removeSkipTrkorr(trkorr: components.TRKORR): Promise<void>;
32
34
  addSrcTrkorr(trkorr: components.TRKORR): Promise<void>;
33
35
  readTmsQueue(target: components.TMSSYSNAM): Promise<struct.STMSIQREQ[]>;
34
36
  createPackage(scompkdtln: struct.SCOMPKDTLN): Promise<void>;
@@ -49,4 +51,13 @@ export declare class RFCClient implements IClient {
49
51
  trCopy(from: components.TRKORR, to: components.TRKORR, doc?: boolean): Promise<void>;
50
52
  addNamespace(namespace: components.NAMESPACE, replicense: components.TRNLICENSE, texts: struct.TRNSPACETT[]): Promise<void>;
51
53
  getR3transInfo(): Promise<string>;
54
+ migrateTransport(trkorr: components.TRKORR): Promise<components.ZTRM_TRKORR>;
55
+ deleteTmsTransport(trkorr: components.TRKORR, system: components.TMSSYSNAM): Promise<void>;
56
+ refreshTransportTmsTxt(trkorr: components.TRKORR): Promise<void>;
57
+ getDotAbapgit(devclass: components.DEVCLASS): Promise<Buffer>;
58
+ getAbapgitSource(devclass: components.DEVCLASS): Promise<{
59
+ zip: Buffer;
60
+ objects: struct.TADIR[];
61
+ }>;
62
+ executePostActivity(data: Buffer): Promise<struct.SYMSG[]>;
52
63
  }
@@ -158,6 +158,7 @@ class RFCClient {
158
158
  if (messageError) {
159
159
  rfcClientError.messageError = messageError;
160
160
  }
161
+ rfcClientError.exceptionType = e.key;
161
162
  logger_1.Logger.error(rfcClientError.toString(), true);
162
163
  throw rfcClientError;
163
164
  }
@@ -173,10 +174,19 @@ class RFCClient {
173
174
  const aT100 = yield this._readTable(noErrorParsing, 'T100', [{ fieldName: 'SPRSL' }, { fieldName: 'ARBGB' }, { fieldName: 'MSGNR' }, { fieldName: 'TEXT' }], `SPRSL EQ '${this._cLangu}' AND ARBGB EQ '${data.class}' AND MSGNR EQ '${msgnr}'`);
174
175
  if (aT100.length === 1 && aT100[0].text) {
175
176
  var msg = aT100[0].text;
176
- msg = msg.replace("&1", data.v1 || '');
177
- msg = msg.replace("&2", data.v2 || '');
178
- msg = msg.replace("&3", data.v3 || '');
179
- msg = msg.replace("&4", data.v4 || '');
177
+ var counter = 1;
178
+ do {
179
+ if (msg.includes(`&${counter}`)) {
180
+ msg = msg.replace(new RegExp(`&${counter}`, 'gmi'), data[`v${counter}`] || '');
181
+ msg = msg.replace(new RegExp(`&${counter}&`, 'gmi'), data[`v${counter}`] || '');
182
+ }
183
+ else {
184
+ msg = msg.replace("&", data[`v${counter}`] || '');
185
+ }
186
+ counter++;
187
+ } while (counter <= 4);
188
+ msg = msg.replace(new RegExp(`&\\d*`, 'gmi'), '');
189
+ msg = msg.replace(new RegExp(`&`, 'gmi'), '');
180
190
  return msg.trim();
181
191
  }
182
192
  else {
@@ -213,22 +223,32 @@ class RFCClient {
213
223
  });
214
224
  }
215
225
  }
216
- const result = yield this._call("RFC_READ_TABLE", {
217
- query_table: tableName.toUpperCase(),
218
- delimiter,
219
- options: aOptions,
220
- fields: fields
221
- }, undefined, noErrorParsing);
222
- const data = result['data'];
223
- data.forEach(tab512 => {
224
- var sqlLine = {};
225
- const waSplit = tab512.wa.split(delimiter);
226
- fields.forEach((field, index) => {
227
- sqlLine[field['FIELDNAME']] = waSplit[index].trim();
226
+ try {
227
+ const result = yield this._call("RFC_READ_TABLE", {
228
+ query_table: tableName.toUpperCase(),
229
+ delimiter,
230
+ options: aOptions,
231
+ fields: fields
232
+ }, undefined, noErrorParsing);
233
+ const data = result['data'];
234
+ data.forEach(tab512 => {
235
+ var sqlLine = {};
236
+ const waSplit = tab512.wa.split(delimiter);
237
+ fields.forEach((field, index) => {
238
+ sqlLine[field['FIELDNAME']] = waSplit[index].trim();
239
+ });
240
+ sqlOutput.push(sqlLine);
228
241
  });
229
- sqlOutput.push(sqlLine);
230
- });
231
- return (0, commons_1.normalize)(sqlOutput);
242
+ return (0, commons_1.normalize)(sqlOutput);
243
+ }
244
+ catch (e) {
245
+ if (e.exceptionType === 'TABLE_WITHOUT_DATA') {
246
+ return [];
247
+ }
248
+ else {
249
+ throw e;
250
+ }
251
+ }
232
252
  });
233
253
  }
234
254
  readTable(tableName, fields, options) {
@@ -298,6 +318,14 @@ class RFCClient {
298
318
  return result['etTadir'];
299
319
  });
300
320
  }
321
+ removeComments(trkorr, object) {
322
+ return __awaiter(this, void 0, void 0, function* () {
323
+ yield this._call("ZTRM_REMOVE_TR_COMMENTS", {
324
+ iv_trkorr: trkorr.trim().toUpperCase(),
325
+ iv_object: object.trim().toUpperCase()
326
+ });
327
+ });
328
+ }
301
329
  addToTransportRequest(trkorr, content, lock) {
302
330
  return __awaiter(this, void 0, void 0, function* () {
303
331
  yield this._call("ZTRM_ADD_OBJS_TR", {
@@ -344,6 +372,13 @@ class RFCClient {
344
372
  });
345
373
  });
346
374
  }
375
+ removeSkipTrkorr(trkorr) {
376
+ return __awaiter(this, void 0, void 0, function* () {
377
+ yield this._call("ZTRM_REMOVE_SKIP_TRKORR", {
378
+ iv_trkorr: trkorr.trim().toUpperCase()
379
+ });
380
+ });
381
+ }
347
382
  addSrcTrkorr(trkorr) {
348
383
  return __awaiter(this, void 0, void 0, function* () {
349
384
  yield this._call("ZTRM_ADD_SRC_TRKORR", {
@@ -497,5 +532,55 @@ class RFCClient {
497
532
  return result['evLog'];
498
533
  });
499
534
  }
535
+ migrateTransport(trkorr) {
536
+ return __awaiter(this, void 0, void 0, function* () {
537
+ const result = yield this._call("ZTRM_MIGRATE_TRANSPORT", {
538
+ iv_trkorr: trkorr
539
+ });
540
+ return result['evTrmTrkorr'];
541
+ });
542
+ }
543
+ deleteTmsTransport(trkorr, system) {
544
+ return __awaiter(this, void 0, void 0, function* () {
545
+ yield this._call("ZTRM_DEL_TRANSPORT_TMS", {
546
+ iv_trkorr: trkorr,
547
+ iv_system: system
548
+ });
549
+ });
550
+ }
551
+ refreshTransportTmsTxt(trkorr) {
552
+ return __awaiter(this, void 0, void 0, function* () {
553
+ yield this._call("ZTRM_REFRESH_TR_TMS_TXT", {
554
+ iv_trkorr: trkorr
555
+ });
556
+ });
557
+ }
558
+ getDotAbapgit(devclass) {
559
+ return __awaiter(this, void 0, void 0, function* () {
560
+ const result = yield this._call("ZTRM_GET_DOT_ABAPGIT", {
561
+ iv_devclass: devclass
562
+ });
563
+ return result['evDotAbapgit'];
564
+ });
565
+ }
566
+ getAbapgitSource(devclass) {
567
+ return __awaiter(this, void 0, void 0, function* () {
568
+ const result = yield this._call("ZTRM_GET_ABAPGIT_SOURCE", {
569
+ iv_devclass: devclass
570
+ });
571
+ return {
572
+ zip: result['evZip'],
573
+ objects: result['etObjects']
574
+ };
575
+ });
576
+ }
577
+ executePostActivity(data) {
578
+ return __awaiter(this, void 0, void 0, function* () {
579
+ const result = yield this._call("ZTRM_EXECUTE_POST_ACTIVITY", {
580
+ iv_data: data
581
+ });
582
+ return result['etMessages'];
583
+ });
584
+ }
500
585
  }
501
586
  exports.RFCClient = RFCClient;
@@ -0,0 +1 @@
1
+ export type LANGU = string;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export type SEOCLSNAME = string;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export type SEODESCR = string;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export type SYMSGID = string;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export type SYMSGNO = string;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export type SYMSGTY = string;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export type SYMSGV = string;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export type TRSTATUS = string;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export type ZTRM_TRKORR = string;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -45,3 +45,12 @@ export * from "./NAMESPACE";
45
45
  export * from "./TRNLICENSE";
46
46
  export * from "./NSP_TEXT";
47
47
  export * from "./NSP_OWNER";
48
+ export * from "./TRSTATUS";
49
+ export * from "./ZTRM_TRKORR";
50
+ export * from "./SYMSGTY";
51
+ export * from "./SYMSGID";
52
+ export * from "./SYMSGNO";
53
+ export * from "./SYMSGV";
54
+ export * from "./SEOCLSNAME";
55
+ export * from "./LANGU";
56
+ export * from "./SEODESCR";