trm-core 1.0.1 → 2.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.
@@ -62,7 +62,7 @@ function _validateDevclass(input, packagesNamespace) {
62
62
  }
63
63
  }
64
64
  function install(data, inquirer, system, registry, logger) {
65
- var _a, _b;
65
+ var _a, _b, _c;
66
66
  return __awaiter(this, void 0, void 0, function* () {
67
67
  const ignoreSapEntries = data.ignoreSapEntries ? true : false;
68
68
  const skipDependencies = data.skipDependencies ? true : false;
@@ -212,7 +212,9 @@ function install(data, inquirer, system, registry, logger) {
212
212
  }
213
213
  const aDevcTransports = aTransports.filter(o => o.type === transport_1.TrmTransportIdentifier.DEVC);
214
214
  const aTadirTransports = aTransports.filter(o => o.type === transport_1.TrmTransportIdentifier.TADIR);
215
+ const aLangTransports = aTransports.filter(o => o.type === transport_1.TrmTransportIdentifier.LANG);
215
216
  var wbObjects = [];
217
+ var trCopy = [];
216
218
  if (aDevcTransports.length > 1) {
217
219
  throw new Error(`Unexpected declaration of devclass in package ${packageName}.`);
218
220
  }
@@ -354,9 +356,11 @@ function install(data, inquirer, system, registry, logger) {
354
356
  const installRoot = installPackageHierarchy.devclass === packageReplacement.installDevclass;
355
357
  const originalParentCl = tdevc.find(o => o.devclass === packageReplacement.originalDevclass).parentcl;
356
358
  if (originalParentCl) {
357
- const installParentCl = packageReplacements.find(o => o.originalDevclass === originalParentCl).installDevclass;
358
- if (!installRoot) {
359
- yield system.setPackageSuperpackage(packageReplacement.installDevclass, installParentCl);
359
+ const installParentCl = (_c = packageReplacements.find(o => o.originalDevclass === originalParentCl)) === null || _c === void 0 ? void 0 : _c.installDevclass;
360
+ if (installParentCl) {
361
+ if (!installRoot) {
362
+ yield system.setPackageSuperpackage(packageReplacement.installDevclass, installParentCl);
363
+ }
360
364
  }
361
365
  }
362
366
  }
@@ -380,6 +384,20 @@ function install(data, inquirer, system, registry, logger) {
380
384
  }
381
385
  logger.success(`TADIR import finished.`);
382
386
  }
387
+ if (aLangTransports.length > 0) {
388
+ logger.loading(`Importing transports...`);
389
+ for (const langTransport of aLangTransports) {
390
+ trCopy.push(langTransport.trkorr);
391
+ const oTransport = yield transport_1.Transport.upload({
392
+ binary: langTransport.binaries,
393
+ systemConnector: system,
394
+ trTarget: system.getDest()
395
+ }, true, logger);
396
+ yield oTransport.import(false, importTimeout);
397
+ }
398
+ logger.success(`Transports imported.`);
399
+ logger.success(`LANG import finished.`);
400
+ }
383
401
  logger.loading(`Finalizing install...`);
384
402
  yield system.rfcClient.setPackageIntegrity({
385
403
  package_name: manifest.name,
@@ -406,7 +424,7 @@ function install(data, inquirer, system, registry, logger) {
406
424
  wbObjectsAdd.push(wbObject);
407
425
  }
408
426
  }
409
- if (wbObjectsAdd.length > 0 && !skipWbTransport) {
427
+ if ((wbObjectsAdd.length > 0 || trCopy.length > 0) && !skipWbTransport) {
410
428
  var wbTransport = yield system.getPackageWorkbenchTransport(oTrmPackage);
411
429
  if (!wbTransport) {
412
430
  wbTransport = yield transport_1.Transport.createWb({
@@ -430,6 +448,14 @@ function install(data, inquirer, system, registry, logger) {
430
448
  catch (e) {
431
449
  }
432
450
  }
451
+ for (const trFrom of trCopy) {
452
+ try {
453
+ yield wbTransport.addObjectsFromTransport(trFrom);
454
+ }
455
+ catch (e) {
456
+ debugger;
457
+ }
458
+ }
433
459
  logger.success(`Use ${wbTransport.trkorr} for transports.`);
434
460
  }
435
461
  logger.success(`Install of package "${packageName}" finished.`);
@@ -456,6 +456,24 @@ function publish(data, inquirer, system, registry, logger) {
456
456
  target: trTarget,
457
457
  text: `@X1@TRM: ${manifest.name} v${manifest.version}`
458
458
  }, system, true, logger);
459
+ var langTr = yield transport_1.Transport.createLang({
460
+ target: trTarget,
461
+ text: `@X1@TRM: ${manifest.name} v${manifest.version} (L)`
462
+ }, system, true, logger);
463
+ var iLanguageObjects = 0;
464
+ try {
465
+ yield langTr.addTranslations(devcOnly.map(o => o.objName));
466
+ iLanguageObjects = (yield langTr.getE071()).length;
467
+ }
468
+ catch (e) {
469
+ logger.info(`Language transport generation error (${e.toString()})`);
470
+ }
471
+ finally {
472
+ if (iLanguageObjects === 0) {
473
+ yield langTr.delete();
474
+ langTr = null;
475
+ }
476
+ }
459
477
  try {
460
478
  yield tadirToc.addComment(`name=${manifest.name}`);
461
479
  yield tadirToc.addComment(`version=${manifest.version}`);
@@ -475,18 +493,18 @@ function publish(data, inquirer, system, registry, logger) {
475
493
  }
476
494
  const timeout = data.releaseTimeout || 180;
477
495
  const tmpFolder = data.tmpFolder;
478
- var devcTocReleased = false;
479
496
  try {
497
+ var aTransports = [tadirToc, devcToc];
480
498
  logger.forceStop();
481
499
  yield tadirToc.release(false, false, tmpFolder, timeout);
482
500
  logger.loading(`Finalizing release...`);
483
501
  yield devcToc.release(false, true, tmpFolder, timeout);
484
- devcTocReleased = true;
502
+ if (langTr) {
503
+ aTransports.push(langTr);
504
+ yield langTr.release(false, true, tmpFolder, timeout);
505
+ }
485
506
  logger.loading(`Creating TRM Artifact...`);
486
- const trmArtifact = yield TrmArtifact_1.TrmArtifact.create([
487
- tadirToc,
488
- devcToc
489
- ], oTrmPackage.manifest, true);
507
+ const trmArtifact = yield TrmArtifact_1.TrmArtifact.create(aTransports, oTrmPackage.manifest, true);
490
508
  logger.loading(`Publishing...`);
491
509
  yield oTrmPackage.publish({
492
510
  artifact: trmArtifact,
@@ -516,10 +534,14 @@ function publish(data, inquirer, system, registry, logger) {
516
534
  if (rollBackTransports) {
517
535
  yield system.addToIgnoredTrkorr(tadirToc.trkorr);
518
536
  logger.error(`Transport ${tadirToc.trkorr} rollback.`);
519
- if (!devcTocReleased) {
537
+ if ((yield devcToc.canBeDeleted())) {
520
538
  yield devcToc.delete();
521
539
  logger.error(`Transport ${devcToc.trkorr} rollback.`);
522
540
  }
541
+ if (langTr && (yield langTr.canBeDeleted())) {
542
+ yield langTr.delete();
543
+ logger.error(`Transport ${langTr.trkorr} rollback.`);
544
+ }
523
545
  }
524
546
  }
525
547
  });
@@ -45,6 +45,7 @@ class Logger {
45
45
  }
46
46
  loading(text) {
47
47
  if (this.coreEnv === commons_1.CoreEnv.CLI) {
48
+ this.forceStop();
48
49
  this.loader = this.cliObj.render().start(text);
49
50
  }
50
51
  if (this.coreEnv === commons_1.CoreEnv.JSON) {
@@ -35,4 +35,6 @@ export declare class RFCClient {
35
35
  trmServerPing(): Promise<string>;
36
36
  renameTransportRequest(trkorr: components.TRKORR, as4text: components.AS4TEXT): Promise<void>;
37
37
  setPackageIntegrity(integrity: struct.ZTRM_INTEGRITY): Promise<void>;
38
+ addTranslationToTr(trkorr: components.TRKORR, devclassFilter: struct.LXE_TT_PACKG_LINE[]): Promise<void>;
39
+ trCopy(from: components.TRKORR, to: components.TRKORR, doc?: boolean): Promise<void>;
38
40
  }
@@ -80,11 +80,23 @@ class RFCClient {
80
80
  const delimiter = '|';
81
81
  var aOptions = [];
82
82
  if (options) {
83
- aOptions = (options.match(/.{1,72}/g)).map(s => {
84
- return {
85
- text: s
86
- };
87
- }) || [];
83
+ const aSplit = options.split('AND');
84
+ if (aSplit.length > 1) {
85
+ aSplit.forEach((s, i) => {
86
+ var sText = s.trim();
87
+ if (i !== 0) {
88
+ sText = `AND ${sText}`;
89
+ }
90
+ aOptions.push({ text: sText });
91
+ });
92
+ }
93
+ else {
94
+ aOptions = aSplit.map(s => {
95
+ return {
96
+ text: s
97
+ };
98
+ });
99
+ }
88
100
  }
89
101
  const result = yield this._call("RFC_READ_TABLE", {
90
102
  query_table: tableName.toUpperCase(),
@@ -325,5 +337,22 @@ class RFCClient {
325
337
  });
326
338
  });
327
339
  }
340
+ addTranslationToTr(trkorr, devclassFilter) {
341
+ return __awaiter(this, void 0, void 0, function* () {
342
+ yield this._call("ZTRM_ADD_LANG_TR", {
343
+ iv_trkorr: trkorr,
344
+ it_devclass: devclassFilter
345
+ });
346
+ });
347
+ }
348
+ trCopy(from, to, doc = false) {
349
+ return __awaiter(this, void 0, void 0, function* () {
350
+ yield this._call("ZTRM_TR_COPY", {
351
+ iv_from: from,
352
+ iv_to: to,
353
+ iv_doc: doc ? 'X' : ' '
354
+ });
355
+ });
356
+ }
328
357
  }
329
358
  exports.RFCClient = RFCClient;
@@ -0,0 +1 @@
1
+ export type DDOPTION = string;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export type DDSIGN = string;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export type TRPARFLAG = string;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -34,3 +34,6 @@ export * from "./ARBGB";
34
34
  export * from "./MSGNR";
35
35
  export * from "./NATXT";
36
36
  export * from "./ZTRM_PACKAGE_INTEGRITY";
37
+ export * from "./DDSIGN";
38
+ export * from "./DDOPTION";
39
+ export * from "./TRPARFLAG";
@@ -50,3 +50,6 @@ __exportStar(require("./ARBGB"), exports);
50
50
  __exportStar(require("./MSGNR"), exports);
51
51
  __exportStar(require("./NATXT"), exports);
52
52
  __exportStar(require("./ZTRM_PACKAGE_INTEGRITY"), exports);
53
+ __exportStar(require("./DDSIGN"), exports);
54
+ __exportStar(require("./DDOPTION"), exports);
55
+ __exportStar(require("./TRPARFLAG"), exports);
@@ -0,0 +1,7 @@
1
+ import { DDOPTION, DDSIGN, DEVCLASS } from "../components";
2
+ export type LXE_TT_PACKG_LINE = {
3
+ sign: DDSIGN;
4
+ option: DDOPTION;
5
+ low: DEVCLASS;
6
+ high?: DEVCLASS;
7
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -16,3 +16,4 @@ export * from "./ZTRM_INSTALLDEVC";
16
16
  export * from "./KO100";
17
17
  export * from "./T100";
18
18
  export * from "./ZTRM_INTEGRITY";
19
+ export * from "./LXE_TT_PACKG_LINE";
@@ -32,3 +32,4 @@ __exportStar(require("./ZTRM_INSTALLDEVC"), exports);
32
32
  __exportStar(require("./KO100"), exports);
33
33
  __exportStar(require("./T100"), exports);
34
34
  __exportStar(require("./ZTRM_INTEGRITY"), exports);
35
+ __exportStar(require("./LXE_TT_PACKG_LINE"), exports);
@@ -24,6 +24,7 @@ export declare class SystemConnector {
24
24
  getLogonLanguage(c?: boolean): string;
25
25
  getLogonUser(): string;
26
26
  connect(skipLog?: boolean): Promise<void>;
27
+ getTransportStatus(trkorr: TRKORR): Promise<string>;
27
28
  getPackageWorkbenchTransport(oPackage: TrmPackage): Promise<Transport>;
28
29
  getInstalledPackages(skipLog?: boolean, includeSoruces?: boolean): Promise<TrmPackage[]>;
29
30
  getDevclass(devclass: DEVCLASS): Promise<TDEVC>;
@@ -63,14 +63,31 @@ class SystemConnector {
63
63
  }
64
64
  });
65
65
  }
66
+ getTransportStatus(trkorr) {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ const aTrkorrStatusCheck = (yield this.rfcClient.readTable('E070', [{ fieldName: 'TRKORR' }, { fieldName: 'TRSTATUS' }], `TRKORR EQ '${trkorr}'`));
69
+ if (aTrkorrStatusCheck.length !== 1) {
70
+ throw new Error(`Transport not found.`);
71
+ }
72
+ else {
73
+ return aTrkorrStatusCheck[0].trstatus;
74
+ }
75
+ });
76
+ }
66
77
  getPackageWorkbenchTransport(oPackage) {
67
78
  return __awaiter(this, void 0, void 0, function* () {
68
79
  var aTrkorr = (yield this.rfcClient.readTable('E071', [{ fieldName: 'TRKORR' }], `PGMID EQ '*' AND OBJECT EQ '${transport_1.COMMENT_OBJ}'`)).map(o => o.trkorr);
69
80
  aTrkorr = Array.from(new Set(aTrkorr));
70
81
  var aSkipTrkorr = [];
71
82
  for (const sTrkorr of aTrkorr) {
72
- const aTrkorrStatusCheck = (yield this.rfcClient.readTable('E070', [{ fieldName: 'TRKORR' }], `TRKORR EQ '${sTrkorr}' AND TRSTATUS EQ 'D'`));
73
- if (aTrkorrStatusCheck.length === 0) {
83
+ var canBeReleased = false;
84
+ try {
85
+ canBeReleased = (yield this.getTransportStatus(sTrkorr)) === 'D';
86
+ }
87
+ catch (e) {
88
+ canBeReleased = false;
89
+ }
90
+ if (!canBeReleased) {
74
91
  aSkipTrkorr.push(sTrkorr);
75
92
  }
76
93
  }
@@ -42,6 +42,7 @@ export declare class Transport {
42
42
  }[]): Documentation[];
43
43
  addObjects(objects: E071[], lock: boolean): Promise<void>;
44
44
  addComment(comment: TROBJ_NAME): Promise<void>;
45
+ addTranslations(aDevclass: DEVCLASS[]): Promise<void>;
45
46
  getLinkedPackage(): Promise<TrmPackage>;
46
47
  delete(): Promise<null>;
47
48
  release(lock: boolean, skipLog?: boolean, tmpFolder?: string, secondsTimeout?: number): Promise<Transport>;
@@ -55,6 +56,10 @@ export declare class Transport {
55
56
  target: TR_TARGET;
56
57
  trmIdentifier?: TrmTransportIdentifier;
57
58
  }, systemConnector: SystemConnector, skipLog?: boolean, logger?: Logger): Promise<Transport>;
59
+ static createLang(data: {
60
+ text: AS4TEXT;
61
+ target: TR_TARGET;
62
+ }, systemConnector: SystemConnector, skipLog?: boolean, logger?: Logger): Promise<Transport>;
58
63
  static createWb(data: {
59
64
  text: AS4TEXT;
60
65
  target?: TR_TARGET;
@@ -74,4 +79,6 @@ export declare class Transport {
74
79
  static getLatest(transports: Transport[]): Promise<Transport>;
75
80
  import(skipLog?: boolean, timeout?: number): Promise<void>;
76
81
  rename(as4text: string): Promise<void>;
82
+ canBeDeleted(): Promise<boolean>;
83
+ addObjectsFromTransport(from: TRKORR): Promise<void>;
77
84
  }
@@ -39,6 +39,7 @@ exports.Transport = exports.COMMENT_OBJ = void 0;
39
39
  const logger_1 = require("../logger");
40
40
  const commons_1 = require("../commons");
41
41
  const node_r3trans_1 = require("node-r3trans");
42
+ const TrmTransportIdentifier_1 = require("./TrmTransportIdentifier");
42
43
  const manifest_1 = require("../manifest");
43
44
  const promises_1 = require("timers/promises");
44
45
  const fs = __importStar(require("fs"));
@@ -232,6 +233,21 @@ class Transport {
232
233
  }], false);
233
234
  });
234
235
  }
236
+ addTranslations(aDevclass) {
237
+ return __awaiter(this, void 0, void 0, function* () {
238
+ var aDevclassLangFilter = [];
239
+ aDevclass.forEach(d => {
240
+ if (!aDevclassLangFilter.find(o => o.low === d)) {
241
+ aDevclassLangFilter.push({
242
+ sign: 'I',
243
+ option: 'EQ',
244
+ low: d
245
+ });
246
+ }
247
+ });
248
+ yield this._systemConnector.rfcClient.addTranslationToTr(this.trkorr, aDevclassLangFilter);
249
+ });
250
+ }
235
251
  getLinkedPackage() {
236
252
  return __awaiter(this, void 0, void 0, function* () {
237
253
  const trmRelevant = yield this.isTrmRelevant();
@@ -516,6 +532,15 @@ class Transport {
516
532
  return new Transport(trkorr, systemConnector, data.target, logger).setTrmIdentifier(data.trmIdentifier);
517
533
  });
518
534
  }
535
+ static createLang(data, systemConnector, skipLog = false, logger) {
536
+ return __awaiter(this, void 0, void 0, function* () {
537
+ logger = skipLog ? logger_1.Logger.getDummy() : logger;
538
+ logger.loading(`Creating transport request (LANG)...`);
539
+ const trkorr = yield systemConnector.rfcClient.createWbTransport(data.text, data.target);
540
+ logger.success(`Transport request ${trkorr} generated successfully.`);
541
+ return new Transport(trkorr, systemConnector, data.target, logger).setTrmIdentifier(TrmTransportIdentifier_1.TrmTransportIdentifier.LANG);
542
+ });
543
+ }
519
544
  static createWb(data, systemConnector, skipLog = false, logger) {
520
545
  return __awaiter(this, void 0, void 0, function* () {
521
546
  logger = skipLog ? logger_1.Logger.getDummy() : logger;
@@ -605,5 +630,16 @@ class Transport {
605
630
  yield this._systemConnector.rfcClient.renameTransportRequest(this.trkorr, as4text);
606
631
  });
607
632
  }
633
+ canBeDeleted() {
634
+ return __awaiter(this, void 0, void 0, function* () {
635
+ const status = yield this._systemConnector.getTransportStatus(this.trkorr);
636
+ return status === 'D';
637
+ });
638
+ }
639
+ addObjectsFromTransport(from) {
640
+ return __awaiter(this, void 0, void 0, function* () {
641
+ yield this._systemConnector.rfcClient.trCopy(from, this.trkorr);
642
+ });
643
+ }
608
644
  }
609
645
  exports.Transport = Transport;
@@ -1,4 +1,5 @@
1
1
  export declare enum TrmTransportIdentifier {
2
2
  DEVC = "DEVC",
3
- TADIR = "TADIR"
3
+ TADIR = "TADIR",
4
+ LANG = "LANG"
4
5
  }
@@ -5,4 +5,5 @@ var TrmTransportIdentifier;
5
5
  (function (TrmTransportIdentifier) {
6
6
  TrmTransportIdentifier["DEVC"] = "DEVC";
7
7
  TrmTransportIdentifier["TADIR"] = "TADIR";
8
+ TrmTransportIdentifier["LANG"] = "LANG";
8
9
  })(TrmTransportIdentifier || (exports.TrmTransportIdentifier = TrmTransportIdentifier = {}));
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "trm-core",
3
- "version": "1.0.1",
3
+ "version": "2.0.0",
4
4
  "description": "TRM (Transport Request Manager) Core",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "files": [
8
- "/dist"
8
+ "/dist",
9
+ "!dist/test.*"
9
10
  ],
10
11
  "scripts": {
11
12
  "build": "tsc"