trm-client 3.1.6 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/README.md +2 -2
  2. package/dist/commands/alias.js +95 -53
  3. package/dist/commands/arguments/ConnectArguments.d.ts +6 -0
  4. package/dist/commands/arguments/FindDependenciesArguments.d.ts +1 -0
  5. package/dist/commands/arguments/InstallArguments.d.ts +14 -12
  6. package/dist/commands/arguments/PublishArguments.d.ts +18 -12
  7. package/dist/commands/check.js +18 -6
  8. package/dist/commands/commons/CommandContext.d.ts +8 -0
  9. package/dist/commands/commons/CommandContext.js +19 -0
  10. package/dist/commands/commons/index.d.ts +1 -1
  11. package/dist/commands/commons/index.js +1 -1
  12. package/dist/commands/commons/viewRegistryPackage.js +9 -5
  13. package/dist/commands/compare.js +40 -20
  14. package/dist/commands/createAlias.js +41 -22
  15. package/dist/commands/findDependencies.js +11 -6
  16. package/dist/commands/info.js +98 -15
  17. package/dist/commands/install.js +46 -85
  18. package/dist/commands/login.js +5 -5
  19. package/dist/commands/logout.js +2 -2
  20. package/dist/commands/prompts/connect.js +123 -20
  21. package/dist/commands/publish.js +48 -139
  22. package/dist/commands/unpublish.js +2 -2
  23. package/dist/commands/update.js +1 -1
  24. package/dist/commands/view.js +2 -2
  25. package/dist/commands/whoami.js +1 -1
  26. package/dist/index.js +67 -56
  27. package/dist/systemAlias/SystemAlias.d.ts +8 -4
  28. package/dist/systemAlias/SystemAlias.js +131 -30
  29. package/dist/systemAlias/SystemAliasData.d.ts +4 -2
  30. package/dist/utils/checkTrmDependencies.d.ts +1 -1
  31. package/dist/utils/checkTrmDependencies.js +23 -7
  32. package/dist/utils/executeCommand.js +5 -16
  33. package/dist/utils/getSystemConnector.d.ts +9 -0
  34. package/dist/utils/getSystemConnector.js +32 -0
  35. package/dist/utils/index.d.ts +1 -1
  36. package/dist/utils/index.js +1 -1
  37. package/dist/utils/logError.js +39 -39
  38. package/dist/utils/registerCommand.js +5 -3
  39. package/package.json +7 -4
  40. package/dist/commands/addRegistry.js.map +0 -1
  41. package/dist/commands/alias.js.map +0 -1
  42. package/dist/commands/arguments/AddRegistryArguments.js.map +0 -1
  43. package/dist/commands/arguments/AliasArguments.js.map +0 -1
  44. package/dist/commands/arguments/CheckArguments.js.map +0 -1
  45. package/dist/commands/arguments/CompareArguments.js.map +0 -1
  46. package/dist/commands/arguments/ConnectArguments.js.map +0 -1
  47. package/dist/commands/arguments/CreateAliasArguments.js.map +0 -1
  48. package/dist/commands/arguments/DeleteAliasArguments.js.map +0 -1
  49. package/dist/commands/arguments/FindDependenciesArguments.js.map +0 -1
  50. package/dist/commands/arguments/InfoArguments.js.map +0 -1
  51. package/dist/commands/arguments/InstallArguments.js.map +0 -1
  52. package/dist/commands/arguments/ListArguments.js.map +0 -1
  53. package/dist/commands/arguments/LoginArguments.js.map +0 -1
  54. package/dist/commands/arguments/LogoutArguments.js.map +0 -1
  55. package/dist/commands/arguments/PingArguments.js.map +0 -1
  56. package/dist/commands/arguments/PublishArguments.js.map +0 -1
  57. package/dist/commands/arguments/RemoveRegistryArguments.js.map +0 -1
  58. package/dist/commands/arguments/SettingsArgument.js.map +0 -1
  59. package/dist/commands/arguments/UnpublishArguments.js.map +0 -1
  60. package/dist/commands/arguments/UpdateArguments.js.map +0 -1
  61. package/dist/commands/arguments/ViewArguments.js.map +0 -1
  62. package/dist/commands/arguments/WhoAmIArguments.js.map +0 -1
  63. package/dist/commands/arguments/index.js.map +0 -1
  64. package/dist/commands/check.js.map +0 -1
  65. package/dist/commands/commons/CommandRegistry.d.ts +0 -5
  66. package/dist/commands/commons/CommandRegistry.js +0 -16
  67. package/dist/commands/commons/CommandRegistry.js.map +0 -1
  68. package/dist/commands/commons/index.js.map +0 -1
  69. package/dist/commands/commons/viewRegistryPackage.js.map +0 -1
  70. package/dist/commands/compare.js.map +0 -1
  71. package/dist/commands/createAlias.js.map +0 -1
  72. package/dist/commands/deleteAlias.js.map +0 -1
  73. package/dist/commands/findDependencies.js.map +0 -1
  74. package/dist/commands/index.js.map +0 -1
  75. package/dist/commands/info.js.map +0 -1
  76. package/dist/commands/install.js.map +0 -1
  77. package/dist/commands/list.js.map +0 -1
  78. package/dist/commands/login.js.map +0 -1
  79. package/dist/commands/logout.js.map +0 -1
  80. package/dist/commands/ping.js.map +0 -1
  81. package/dist/commands/prompts/connect.js.map +0 -1
  82. package/dist/commands/prompts/index.js.map +0 -1
  83. package/dist/commands/prompts/pickRegistry.js.map +0 -1
  84. package/dist/commands/publish.js.map +0 -1
  85. package/dist/commands/removeRegistry.js.map +0 -1
  86. package/dist/commands/settings.js.map +0 -1
  87. package/dist/commands/unpublish.js.map +0 -1
  88. package/dist/commands/update.js.map +0 -1
  89. package/dist/commands/view.js.map +0 -1
  90. package/dist/commands/whoami.js.map +0 -1
  91. package/dist/index.js.map +0 -1
  92. package/dist/registryAlias/RegistryAlias.js.map +0 -1
  93. package/dist/registryAlias/RegistryAliasData.js.map +0 -1
  94. package/dist/registryAlias/index.js.map +0 -1
  95. package/dist/settings/Settings.js.map +0 -1
  96. package/dist/settings/SettingsData.js.map +0 -1
  97. package/dist/settings/index.js.map +0 -1
  98. package/dist/systemAlias/SystemAlias.js.map +0 -1
  99. package/dist/systemAlias/SystemAliasData.js.map +0 -1
  100. package/dist/systemAlias/index.js.map +0 -1
  101. package/dist/utils/TrmDependencies.d.ts +0 -10
  102. package/dist/utils/TrmDependencies.js +0 -25
  103. package/dist/utils/TrmDependencies.js.map +0 -1
  104. package/dist/utils/checkCliUpdate.js.map +0 -1
  105. package/dist/utils/checkTrmDependencies.js.map +0 -1
  106. package/dist/utils/executeCommand.js.map +0 -1
  107. package/dist/utils/getClientDependencies.js.map +0 -1
  108. package/dist/utils/getClientPackage.js.map +0 -1
  109. package/dist/utils/getClientVersion.js.map +0 -1
  110. package/dist/utils/getLogFolder.js.map +0 -1
  111. package/dist/utils/getRoamingFolder.js.map +0 -1
  112. package/dist/utils/getRoamingPath.js.map +0 -1
  113. package/dist/utils/getSapLogonConnections.js.map +0 -1
  114. package/dist/utils/getTempFolder.js.map +0 -1
  115. package/dist/utils/getTrmDependencies.js.map +0 -1
  116. package/dist/utils/index.js.map +0 -1
  117. package/dist/utils/logError.js.map +0 -1
  118. package/dist/utils/registerCommand.js.map +0 -1
  119. package/dist/utils/xml2js.js.map +0 -1
@@ -8,21 +8,69 @@ 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
+ };
11
14
  Object.defineProperty(exports, "__esModule", { value: true });
12
15
  exports.info = void 0;
13
16
  const trm_core_1 = require("trm-core");
14
17
  const utils_1 = require("../utils");
18
+ const commons_1 = require("./commons");
19
+ const fs_1 = require("fs");
20
+ const path_1 = __importDefault(require("path"));
21
+ const get_root_path_1 = require("get-root-path");
22
+ const chalk_1 = __importDefault(require("chalk"));
23
+ const _getDependencyVersion = (moduleName) => {
24
+ var file;
25
+ try {
26
+ file = (0, fs_1.readFileSync)(path_1.default.join(get_root_path_1.rootPath, `/node_modules/trm-client/node_modules/${moduleName}/package.json`));
27
+ }
28
+ catch (e) {
29
+ file = (0, fs_1.readFileSync)(path_1.default.join(get_root_path_1.rootPath, `/node_modules/${moduleName}/package.json`));
30
+ }
31
+ if (!file) {
32
+ trm_core_1.Logger.warning(`Library ${moduleName} was not found!`, true);
33
+ }
34
+ else {
35
+ return JSON.parse(file.toString()).version;
36
+ }
37
+ };
38
+ const _getNodeRfcVersion = (npmGlobal) => {
39
+ var file;
40
+ try {
41
+ file = (0, fs_1.readFileSync)(path_1.default.join(npmGlobal, `/node-rfc/package.json`));
42
+ }
43
+ catch (e) {
44
+ }
45
+ if (!file) {
46
+ trm_core_1.Logger.warning(`Library node-rfc was not found!`, true);
47
+ }
48
+ else {
49
+ return JSON.parse(file.toString()).version;
50
+ }
51
+ };
15
52
  function info(commandArgs) {
16
53
  return __awaiter(this, void 0, void 0, function* () {
54
+ const npmGlobal = yield (0, trm_core_1.getNpmGlobalPath)();
17
55
  const clientVersion = (0, utils_1.getClientVersion)();
18
56
  const clientDependencies = (0, utils_1.getClientDependencies)() || {};
19
57
  const trmDependencies = (0, utils_1.getTrmDependencies)() || {};
20
- const trmDependenciesInstances = utils_1.TrmDependencies.getInstance().getAll();
58
+ const trmDependenciesInstances = commons_1.CommandContext.trmDependencies;
59
+ const trmMissingDependencies = commons_1.CommandContext.missingTrmDependencies;
60
+ const nodeRfcVersion = _getNodeRfcVersion(npmGlobal);
61
+ const trmRest = commons_1.CommandContext.systemPackages.find(o => o.compareName("trm-rest") && o.compareRegistry(new trm_core_1.Registry(trm_core_1.PUBLIC_RESERVED_KEYWORD)));
21
62
  var clientDependenciesTree = [];
22
63
  if (clientDependencies) {
23
64
  Object.keys(clientDependencies).filter(d => d.startsWith('trm')).forEach(d => {
65
+ var installedVersion = _getDependencyVersion(d);
66
+ if (installedVersion) {
67
+ installedVersion = ` -> ${installedVersion}`;
68
+ }
69
+ else {
70
+ installedVersion = ``;
71
+ }
24
72
  clientDependenciesTree.push({
25
- text: `${d} ${clientDependencies[d]}`,
73
+ text: `${d} ${clientDependencies[d]}${installedVersion}`,
26
74
  children: []
27
75
  });
28
76
  });
@@ -30,15 +78,37 @@ function info(commandArgs) {
30
78
  var serverDependenciesTree = [];
31
79
  if (trmDependencies) {
32
80
  Object.keys(trmDependencies).forEach(d => {
81
+ var installedVersion = ``;
33
82
  const oTrmPackage = trmDependenciesInstances.find(o => o.compareName(d));
34
- var installedVersion;
35
- try {
36
- installedVersion = oTrmPackage.manifest.get().version;
83
+ if (oTrmPackage) {
84
+ try {
85
+ installedVersion = ` -> ${oTrmPackage.manifest.get().version}`;
86
+ }
87
+ catch (e) {
88
+ installedVersion = ` -> ${e.message}`;
89
+ }
37
90
  }
38
- catch (e) {
39
- }
40
- if (installedVersion) {
41
- installedVersion = ` -> ${trm_core_1.SystemConnector.getDest()} ${installedVersion}`;
91
+ else {
92
+ const missingDependency = trmMissingDependencies.find(o => {
93
+ if (typeof (o) === 'string') {
94
+ if (o === d) {
95
+ return o;
96
+ }
97
+ }
98
+ else {
99
+ if (o.compareName(d)) {
100
+ return o;
101
+ }
102
+ }
103
+ });
104
+ if (missingDependency) {
105
+ try {
106
+ installedVersion = ` -> ${chalk_1.default.bgRed(missingDependency.manifest.get().version)}`;
107
+ }
108
+ catch (e) {
109
+ installedVersion = ` -> ${chalk_1.default.bgRed('Not found')}`;
110
+ }
111
+ }
42
112
  }
43
113
  serverDependenciesTree.push({
44
114
  text: `${d} ${trmDependencies[d]}${installedVersion}`,
@@ -46,16 +116,29 @@ function info(commandArgs) {
46
116
  });
47
117
  });
48
118
  }
119
+ if (trmRest && trmRest.manifest) {
120
+ serverDependenciesTree.push({
121
+ text: `trm-rest -> ${trmRest.manifest.get().version}`,
122
+ children: []
123
+ });
124
+ }
125
+ var clientChildrenTree = [{
126
+ text: `trm-client ${clientVersion}`,
127
+ children: clientDependenciesTree
128
+ }];
129
+ if (nodeRfcVersion) {
130
+ clientChildrenTree.push({
131
+ text: `node-rfc ${nodeRfcVersion}`,
132
+ children: []
133
+ });
134
+ }
49
135
  const clientTree = {
50
- text: `Client`,
51
- children: [{
52
- text: `trm-client ${clientVersion}`,
53
- children: clientDependenciesTree
54
- }]
136
+ text: chalk_1.default.bold(`Client`),
137
+ children: clientChildrenTree
55
138
  };
56
139
  trm_core_1.Logger.tree(clientTree);
57
140
  const serverTree = {
58
- text: `Server`,
141
+ text: chalk_1.default.bold(`Server (${trm_core_1.SystemConnector.getDest()})`),
59
142
  children: serverDependenciesTree
60
143
  };
61
144
  trm_core_1.Logger.tree(serverTree);
@@ -1,27 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -34,28 +11,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
34
11
  Object.defineProperty(exports, "__esModule", { value: true });
35
12
  exports.install = void 0;
36
13
  const trm_core_1 = require("trm-core");
37
- const commons_1 = require("./commons");
38
- const fs = __importStar(require("fs"));
39
14
  const utils_1 = require("../utils");
40
- const _parsePackageReplacementsArgument = (packageReplacements) => {
41
- var returnValue = [];
42
- if (packageReplacements) {
43
- packageReplacements = packageReplacements.trim();
44
- var sInput;
45
- if (packageReplacements[0] === '[') {
46
- sInput = packageReplacements;
47
- }
48
- else {
49
- sInput = fs.readFileSync(packageReplacements);
50
- }
15
+ const commons_1 = require("./commons");
16
+ const _parsePackageReplacementsArgument = (arg) => {
17
+ if (arg) {
51
18
  try {
52
- returnValue = JSON.parse(sInput);
53
- }
54
- catch (e) {
55
- throw new Error('Input package replacements map: invalid JSON format.');
19
+ return JSON.parse(arg);
56
20
  }
21
+ catch (e) { }
57
22
  }
58
- return returnValue;
59
23
  };
60
24
  const _parseImportTimeoutArg = (arg) => {
61
25
  if (arg) {
@@ -67,52 +31,49 @@ const _parseImportTimeoutArg = (arg) => {
67
31
  };
68
32
  function install(commandArgs) {
69
33
  return __awaiter(this, void 0, void 0, function* () {
70
- const registry = commons_1.CommandRegistry.get();
71
- const packageName = commandArgs.package;
72
- const packageVersion = commandArgs.version || 'latest';
73
- const transportLayer = commandArgs.transportLayer;
74
- const force = commandArgs.force;
75
- const keepOriginalDevclass = commandArgs.keepOriginals ? true : false;
76
- const importTimeout = _parseImportTimeoutArg(commandArgs.importTimeout);
77
- const generateTransport = commandArgs.workbenchGen;
78
- const skipSapEntriesCheck = commandArgs.skipSapEntries;
79
- const skipObjectTypesCheck = commandArgs.skipObjectsCheck;
80
- const skipLangImport = commandArgs.skipLang;
81
- const skipCustImport = commandArgs.skipCustomizing;
82
- const ignoreDependencies = commandArgs.skipDependencies;
83
- const wbTrTargetSystem = commandArgs.workbenchTarget;
84
- const silent = commandArgs.silent;
85
- const packageReplacements = _parsePackageReplacementsArgument(commandArgs.packageReplacements);
86
- const allowReplace = commandArgs.replaceAllowed;
87
- const tmpFolder = (0, utils_1.getTempFolder)();
88
- const output = yield (0, trm_core_1.install)({
89
- packageName: packageName,
90
- registry: registry,
91
- version: packageVersion,
92
- r3transOptions: {
93
- tempDirPath: tmpFolder
34
+ const result = yield (0, trm_core_1.install)({
35
+ contextData: {
36
+ r3transOptions: {
37
+ tempDirPath: (0, utils_1.getTempFolder)(),
38
+ r3transDirPath: commandArgs.r3transPath
39
+ },
40
+ noInquirer: commandArgs.noPrompts,
41
+ systemPackages: commons_1.CommandContext.systemPackages,
42
+ noR3transInfo: false
94
43
  },
95
- transportLayer,
96
- force,
97
- keepOriginalDevclass,
98
- importTimeout,
99
- generateTransport,
100
- skipSapEntriesCheck,
101
- skipObjectTypesCheck,
102
- skipLangImport,
103
- skipCustImport,
104
- ignoreDependencies,
105
- wbTrTargetSystem,
106
- silent,
107
- packageReplacements,
108
- allowReplace
44
+ packageData: {
45
+ name: commandArgs.package,
46
+ version: commandArgs.version,
47
+ overwrite: commandArgs.overwrite,
48
+ integrity: commandArgs.integrity,
49
+ registry: commons_1.CommandContext.getRegistry()
50
+ },
51
+ installData: {
52
+ checks: {
53
+ safe: commandArgs.safe,
54
+ noDependencies: commandArgs.noDependencies,
55
+ noObjectTypes: commandArgs.noObjectTypes,
56
+ noSapEntries: commandArgs.noSapEntries
57
+ },
58
+ import: {
59
+ noLang: commandArgs.noLanguageTransport,
60
+ noCust: commandArgs.noCustomizingTransport,
61
+ timeout: _parseImportTimeoutArg(commandArgs.importTimeout)
62
+ },
63
+ installDevclass: {
64
+ keepOriginal: commandArgs.keepOriginalPackages,
65
+ transportLayer: commandArgs.transportLayer,
66
+ replacements: _parsePackageReplacementsArgument(commandArgs.packageReplacements)
67
+ },
68
+ installTransport: {
69
+ create: commandArgs.createInstallTransport,
70
+ targetSystem: commandArgs.installTransportTargetSys
71
+ }
72
+ }
109
73
  });
110
- var sOutput = `${output.trmPackage.packageName} installed`;
111
- if (output.wbTransport) {
112
- sOutput += `, use ${output.wbTransport.trkorr} transport.`;
113
- }
114
- else {
115
- sOutput += `.`;
74
+ var sOutput = `${result.trmPackage.packageName} installed`;
75
+ if (result.installTransport) {
76
+ sOutput += `, use ${result.installTransport.trkorr} transport in landscape`;
116
77
  }
117
78
  trm_core_1.Logger.success(sOutput);
118
79
  });
@@ -12,14 +12,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.login = void 0;
13
13
  const trm_core_1 = require("trm-core");
14
14
  const registryAlias_1 = require("../registryAlias");
15
- const commons_1 = require("./commons");
16
15
  const whoami_1 = require("./whoami");
16
+ const commons_1 = require("./commons");
17
17
  function login(commandArgs) {
18
18
  return __awaiter(this, void 0, void 0, function* () {
19
19
  var continueLogin = false;
20
20
  if (!commandArgs.force) {
21
21
  try {
22
- const whoami = yield commons_1.CommandRegistry.get().whoAmI();
22
+ const whoami = yield commons_1.CommandContext.getRegistry().whoAmI();
23
23
  const inq1 = yield trm_core_1.Inquirer.prompt({
24
24
  type: "confirm",
25
25
  name: "continue",
@@ -49,10 +49,10 @@ function login(commandArgs) {
49
49
  else {
50
50
  oAuth = undefined;
51
51
  }
52
- yield commons_1.CommandRegistry.get().authenticate(oAuth);
53
- oAuth = commons_1.CommandRegistry.get().getAuthData();
52
+ yield commons_1.CommandContext.getRegistry().authenticate(oAuth);
53
+ oAuth = commons_1.CommandContext.getRegistry().getAuthData();
54
54
  trm_core_1.Logger.success('Logged in.');
55
- registryAlias_1.RegistryAlias.update(commons_1.CommandRegistry.get().name, oAuth);
55
+ registryAlias_1.RegistryAlias.update(commons_1.CommandContext.getRegistry().name, oAuth);
56
56
  yield (0, whoami_1.whoami)({});
57
57
  }
58
58
  });
@@ -16,8 +16,8 @@ const commons_1 = require("./commons");
16
16
  function logout(commandArgs) {
17
17
  return __awaiter(this, void 0, void 0, function* () {
18
18
  try {
19
- yield commons_1.CommandRegistry.get().whoAmI();
20
- registryAlias_1.RegistryAlias.update(commons_1.CommandRegistry.get().name, null);
19
+ yield commons_1.CommandContext.getRegistry().whoAmI();
20
+ registryAlias_1.RegistryAlias.update(commons_1.CommandContext.getRegistry().name, null);
21
21
  trm_core_1.Logger.info(`Logged out.`);
22
22
  }
23
23
  catch (e) {
@@ -8,11 +8,15 @@ 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
+ };
11
14
  Object.defineProperty(exports, "__esModule", { value: true });
12
15
  exports.connect = void 0;
13
16
  const trm_core_1 = require("trm-core");
14
17
  const systemAlias_1 = require("../../systemAlias");
15
18
  const utils_1 = require("../../utils");
19
+ const normalize_url_1 = __importDefault(require("@esm2cjs/normalize-url"));
16
20
  const languageList = [
17
21
  { value: 'AR', name: 'AR (Arabic)' },
18
22
  { value: 'BG', name: 'BG (Bulgarian)' },
@@ -54,10 +58,13 @@ const languageList = [
54
58
  { value: 'UK', name: 'UK (Ukrainian)' },
55
59
  { value: 'VI', name: 'VI (Vietnamese)' }
56
60
  ];
61
+ const _createAliasIfNotExists = () => {
62
+ };
57
63
  function connect(commandArgs, createAliasIfNotExist = true) {
58
64
  return __awaiter(this, void 0, void 0, function* () {
59
65
  const noSystemAlias = commandArgs.noSystemAlias ? true : false;
60
66
  const force = commandArgs.force ? true : false;
67
+ var type = commandArgs.type;
61
68
  var aInputType = [];
62
69
  var aSapLogonConnections;
63
70
  const aAlias = systemAlias_1.SystemAlias.getAll();
@@ -72,14 +79,14 @@ function connect(commandArgs, createAliasIfNotExist = true) {
72
79
  value: 'alias', name: 'System Alias'
73
80
  });
74
81
  }
82
+ aInputType.push({
83
+ value: 'input', name: 'Manual input'
84
+ });
75
85
  if (aSapLogonConnections.length > 0) {
76
86
  aInputType.push({
77
- value: 'logon', name: 'SAP Logon Connection'
87
+ value: 'logon', name: 'SAP Logon Connection (Uses node-rfc)'
78
88
  });
79
89
  }
80
- aInputType.push({
81
- value: 'input', name: 'Manual input'
82
- });
83
90
  var result;
84
91
  var inputType;
85
92
  if (!commandArgs.ashost && !commandArgs.dest && !commandArgs.sysnr) {
@@ -107,6 +114,8 @@ function connect(commandArgs, createAliasIfNotExist = true) {
107
114
  });
108
115
  const alias = aAlias.find(o => o.alias === inq2.aliasName);
109
116
  result = Object.assign(Object.assign({}, alias.connection), alias.login);
117
+ type = alias.type;
118
+ createAliasIfNotExist = false;
110
119
  }
111
120
  else {
112
121
  if (inputType === 'logon') {
@@ -125,73 +134,167 @@ function connect(commandArgs, createAliasIfNotExist = true) {
125
134
  commandArgs.dest = logonConnection.dest;
126
135
  commandArgs.sysnr = logonConnection.sysnr;
127
136
  commandArgs.saprouter = logonConnection.saprouter;
137
+ type = utils_1.SystemConnectorType.RFC;
138
+ }
139
+ else {
140
+ type = commandArgs.type;
128
141
  }
129
142
  result = yield trm_core_1.Inquirer.prompt([{
143
+ type: `list`,
144
+ name: `type`,
145
+ message: `Connection type`,
146
+ choices: [{
147
+ value: 'REST',
148
+ name: 'REST (Requires trm-rest)'
149
+ }, {
150
+ value: 'RFC',
151
+ name: 'RFC (Uses node-rfc)'
152
+ }],
153
+ when: (type ? false : true) || force
154
+ },
155
+ {
156
+ type: `input`,
157
+ name: `endpoint`,
158
+ message: `System endpoint`,
159
+ default: commandArgs.endpoint,
160
+ when: (hash) => {
161
+ return hash.type === 'REST' && ((commandArgs.endpoint ? false : true) || force);
162
+ }
163
+ }, {
164
+ type: `input`,
165
+ name: `forwardRfcDest`,
166
+ message: `Forward RFC Destination`,
167
+ default: commandArgs.forwardRfcDest,
168
+ when: (hash) => {
169
+ return hash.type === 'REST' && (commandArgs.forwardRfcDest || force);
170
+ }
171
+ },
172
+ {
130
173
  type: `input`,
131
174
  name: `ashost`,
132
175
  message: `Application server`,
133
176
  default: commandArgs.ashost,
134
- when: (commandArgs.ashost ? false : true) || force
177
+ when: (hash) => {
178
+ return hash.type === 'RFC' && ((commandArgs.ashost ? false : true) || force);
179
+ }
135
180
  }, {
136
181
  type: `input`,
137
182
  name: `dest`,
138
183
  message: `System ID`,
139
184
  default: commandArgs.dest,
140
- when: (commandArgs.dest ? false : true) || force
185
+ when: (hash) => {
186
+ return hash.type === 'RFC' && ((commandArgs.dest ? false : true) || force);
187
+ }
141
188
  }, {
142
189
  type: `input`,
143
190
  name: `sysnr`,
144
191
  message: `Instance number`,
145
192
  default: commandArgs.sysnr,
146
- when: (commandArgs.sysnr ? false : true) || force
193
+ when: (hash) => {
194
+ return hash.type === 'RFC' && ((commandArgs.sysnr ? false : true) || force);
195
+ }
147
196
  }, {
148
197
  type: `input`,
149
198
  name: `saprouter`,
150
199
  message: `SAProuter`,
151
200
  default: commandArgs.saprouter,
152
- when: force
201
+ when: (hash) => {
202
+ return hash.type === 'RFC' && ((commandArgs.saprouter ? false : true) || force);
203
+ }
153
204
  }, {
154
205
  type: `input`,
155
206
  name: `client`,
156
207
  message: `Logon Client`,
157
208
  default: commandArgs.client,
158
- when: (commandArgs.client ? false : true) || force
209
+ when: (hash) => {
210
+ return hash.type === 'RFC' && ((commandArgs.client ? false : true) || force);
211
+ }
159
212
  }, {
160
213
  type: `input`,
161
214
  name: `user`,
162
215
  message: `Logon User`,
163
216
  default: commandArgs.user,
164
- when: (commandArgs.user ? false : true) || force
217
+ when: (hash) => {
218
+ return (commandArgs.user ? false : true) || force;
219
+ }
165
220
  }, {
166
221
  type: `password`,
167
222
  name: `passwd`,
168
223
  message: `Logon Password`,
169
224
  default: commandArgs.passwd,
170
- when: (commandArgs.passwd ? false : true) || force
225
+ when: (hash) => {
226
+ return (commandArgs.passwd ? false : true) || force;
227
+ }
171
228
  }, {
172
229
  type: `list`,
173
230
  name: `lang`,
174
231
  message: `Logon Language`,
175
- default: commandArgs.lang,
176
- when: (commandArgs.lang ? false : true) || force,
232
+ default: commandArgs.lang || 'EN',
233
+ when: (hash) => {
234
+ return (commandArgs.lang ? false : true) || force;
235
+ },
177
236
  validate: (input) => {
178
237
  return languageList.includes(input.trim().toUpperCase());
179
238
  },
180
239
  choices: languageList
181
240
  }]);
182
241
  }
183
- result.ashost = result.ashost || commandArgs.ashost;
184
- result.dest = result.dest || commandArgs.dest;
185
- result.saprouter = result.saprouter || commandArgs.saprouter;
186
- result.sysnr = result.sysnr || commandArgs.sysnr;
187
- result.client = result.client || commandArgs.client;
242
+ type = result.type || type;
188
243
  result.user = result.user || commandArgs.user;
189
244
  result.passwd = result.passwd || commandArgs.passwd;
190
245
  result.lang = result.lang || commandArgs.lang;
191
- result.noSystemAlias = commandArgs.noSystemAlias;
192
- result.dest = result.dest.toUpperCase();
193
246
  result.user = result.user.toUpperCase();
194
247
  result.lang = result.lang.toUpperCase();
248
+ if (type === utils_1.SystemConnectorType.RFC) {
249
+ result.ashost = result.ashost || commandArgs.ashost;
250
+ result.dest = result.dest || commandArgs.dest;
251
+ result.saprouter = result.saprouter || commandArgs.saprouter;
252
+ result.sysnr = result.sysnr || commandArgs.sysnr;
253
+ result.client = result.client || commandArgs.client;
254
+ result.noSystemAlias = commandArgs.noSystemAlias;
255
+ result.dest = result.dest.toUpperCase();
256
+ result.connection = (0, utils_1.getSystemConnector)(utils_1.SystemConnectorType.RFC, {
257
+ connection: {
258
+ dest: result.dest,
259
+ ashost: result.ashost,
260
+ sysnr: result.sysnr,
261
+ saprouter: result.saprouter
262
+ },
263
+ login: {
264
+ user: result.user,
265
+ passwd: result.passwd,
266
+ lang: result.lang,
267
+ client: result.client
268
+ }
269
+ });
270
+ }
271
+ else if (type === utils_1.SystemConnectorType.REST) {
272
+ result.endpoint = result.endpoint || commandArgs.endpoint;
273
+ result.forwardRfcDest = result.forwardRfcDest || commandArgs.forwardRfcDest;
274
+ if (result.forwardRfcDest) {
275
+ result.forwardRfcDest = result.forwardRfcDest.toUpperCase();
276
+ }
277
+ result.endpoint = (0, normalize_url_1.default)(result.endpoint, {
278
+ removeTrailingSlash: true
279
+ });
280
+ result.connection = (0, utils_1.getSystemConnector)(utils_1.SystemConnectorType.REST, {
281
+ connection: {
282
+ endpoint: result.endpoint,
283
+ rfcdest: result.forwardRfcDest || 'NONE'
284
+ },
285
+ login: {
286
+ user: result.user,
287
+ passwd: result.passwd,
288
+ lang: result.lang
289
+ }
290
+ });
291
+ }
292
+ else {
293
+ throw new Error(`Unknown connection type "${type}".`);
294
+ }
295
+ if (createAliasIfNotExist) {
296
+ yield systemAlias_1.SystemAlias.createIfNotExists(result);
297
+ }
195
298
  return result;
196
299
  });
197
300
  }