trm-client 4.1.0 → 4.2.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 (58) hide show
  1. package/changelog.txt +17 -0
  2. package/dist/commands/addRegistry.js +5 -2
  3. package/dist/commands/arguments/ContentArguments.d.ts +6 -0
  4. package/dist/commands/arguments/ContentArguments.js +2 -0
  5. package/dist/commands/arguments/ImportArguments.d.ts +19 -0
  6. package/dist/commands/arguments/ImportArguments.js +2 -0
  7. package/dist/commands/arguments/ListArguments.d.ts +3 -1
  8. package/dist/commands/arguments/PackArguments.d.ts +22 -0
  9. package/dist/commands/arguments/PackArguments.js +2 -0
  10. package/dist/commands/arguments/index.d.ts +2 -0
  11. package/dist/commands/arguments/index.js +2 -0
  12. package/dist/commands/check.js +3 -2
  13. package/dist/commands/commons/CommandContext.d.ts +4 -4
  14. package/dist/commands/commons/CommandContext.js +21 -1
  15. package/dist/commands/commons/viewRegistryPackage.js +1 -1
  16. package/dist/commands/compare.js +3 -2
  17. package/dist/commands/content.d.ts +2 -0
  18. package/dist/commands/content.js +179 -0
  19. package/dist/commands/import.d.ts +2 -0
  20. package/dist/commands/import.js +82 -0
  21. package/dist/commands/index.d.ts +3 -0
  22. package/dist/commands/index.js +3 -0
  23. package/dist/commands/info.js +66 -23
  24. package/dist/commands/install.js +2 -1
  25. package/dist/commands/list.js +18 -4
  26. package/dist/commands/pack.d.ts +2 -0
  27. package/dist/commands/pack.js +95 -0
  28. package/dist/commands/prompts/connect.d.ts +1 -1
  29. package/dist/commands/prompts/connect.js +17 -7
  30. package/dist/commands/publish.js +2 -1
  31. package/dist/commands/view.js +36 -29
  32. package/dist/index.d.ts +1 -1
  33. package/dist/index.js +61 -2
  34. package/dist/registryAlias/RegistryAlias.d.ts +3 -2
  35. package/dist/registryAlias/RegistryAlias.js +9 -6
  36. package/dist/utils/NoConnection.d.ts +75 -0
  37. package/dist/utils/NoConnection.js +106 -0
  38. package/dist/utils/checkCliUpdate.d.ts +4 -1
  39. package/dist/utils/checkCliUpdate.js +18 -31
  40. package/dist/utils/checkTrmDependencies.js +20 -35
  41. package/dist/utils/executeCommand.js +27 -10
  42. package/dist/utils/getClientNodeDependencies.d.ts +3 -0
  43. package/dist/utils/getClientNodeDependencies.js +9 -0
  44. package/dist/utils/getClientVersion.js +2 -2
  45. package/dist/utils/getNodePackage.d.ts +1 -0
  46. package/dist/utils/{getClientPackage.js → getNodePackage.js} +3 -3
  47. package/dist/utils/getNpmPackageLatestVersion.d.ts +1 -0
  48. package/dist/utils/getNpmPackageLatestVersion.js +42 -0
  49. package/dist/utils/index.d.ts +4 -3
  50. package/dist/utils/index.js +4 -3
  51. package/dist/utils/registerCommand.d.ts +1 -0
  52. package/dist/utils/registerCommand.js +4 -0
  53. package/package.json +10 -9
  54. package/dist/utils/getClientDependencies.d.ts +0 -1
  55. package/dist/utils/getClientDependencies.js +0 -9
  56. package/dist/utils/getClientPackage.d.ts +0 -1
  57. package/dist/utils/getTrmDependencies.d.ts +0 -1
  58. package/dist/utils/getTrmDependencies.js +0 -9
package/changelog.txt ADDED
@@ -0,0 +1,17 @@
1
+ trm-client changelog
2
+ =================
3
+
4
+ Legend
5
+ ------
6
+ * : fixed
7
+ ! : changed
8
+ + : added
9
+ - : removed
10
+
11
+ 2025-02-26 v4.2.0
12
+ -------------------
13
+
14
+ ! connect to registry via option
15
+ - trm dependencies on client
16
+ + content command
17
+ + pack/import command
@@ -18,8 +18,11 @@ function addRegistry(commandArgs) {
18
18
  const auth = commandArgs.authentication;
19
19
  var endpoint = commandArgs.endpoint;
20
20
  var oAuth;
21
- if (registryName.toLowerCase() === 'public') {
22
- throw new Error(`Registry name "public" is a reserved keyword.`);
21
+ if (registryName.toLowerCase() === trm_core_1.PUBLIC_RESERVED_KEYWORD) {
22
+ throw new Error(`Registry name "${trm_core_1.PUBLIC_RESERVED_KEYWORD}" is a reserved keyword.`);
23
+ }
24
+ if (registryName.toLowerCase() === trm_core_1.LOCAL_RESERVED_KEYWORD) {
25
+ throw new Error(`Registry name "${trm_core_1.LOCAL_RESERVED_KEYWORD}" is a reserved keyword.`);
23
26
  }
24
27
  if (auth) {
25
28
  try {
@@ -0,0 +1,6 @@
1
+ export type ContentArguments = {
2
+ package: string;
3
+ all: boolean;
4
+ version?: string;
5
+ r3transPath?: string;
6
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,19 @@
1
+ export type ImportArguments = {
2
+ file: string;
3
+ noPrompts: boolean;
4
+ overwrite: boolean;
5
+ safe: boolean;
6
+ noDependencies: boolean;
7
+ noObjectTypes: boolean;
8
+ noSapEntries: boolean;
9
+ noLanguageTransport: boolean;
10
+ noCustomizingTransport: boolean;
11
+ importTimeout: string;
12
+ keepOriginalPackages: boolean;
13
+ createInstallTransport: boolean;
14
+ r3transPath?: string;
15
+ integrity?: string;
16
+ transportLayer?: string;
17
+ packageReplacements?: string;
18
+ installTransportTargetSys?: string;
19
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1 +1,3 @@
1
- export type ListArguments = {};
1
+ export type ListArguments = {
2
+ locals: boolean;
3
+ };
@@ -0,0 +1,22 @@
1
+ export type PackArguments = {
2
+ package: string;
3
+ version?: string;
4
+ outputPath?: string;
5
+ noPrompts: boolean;
6
+ noLanguageTransport: boolean;
7
+ noDependenciesDetection: boolean;
8
+ skipCustomizingTransports: boolean;
9
+ releaseTimeout: string;
10
+ devclass?: string;
11
+ customizingTransports?: string;
12
+ transportTarget?: string;
13
+ backwardsCompatible: boolean;
14
+ description?: string;
15
+ git?: string;
16
+ website?: string;
17
+ license?: string;
18
+ authors?: string;
19
+ keywords?: string;
20
+ dependencies?: string;
21
+ sapEntries?: string;
22
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -19,3 +19,5 @@ export * from "./RemoveRegistryArguments";
19
19
  export * from "./FindDependenciesArguments";
20
20
  export * from "./SettingsArgument";
21
21
  export * from "./UpdateArguments";
22
+ export * from "./ContentArguments";
23
+ export * from "./PackArguments";
@@ -35,3 +35,5 @@ __exportStar(require("./RemoveRegistryArguments"), exports);
35
35
  __exportStar(require("./FindDependenciesArguments"), exports);
36
36
  __exportStar(require("./SettingsArgument"), exports);
37
37
  __exportStar(require("./UpdateArguments"), exports);
38
+ __exportStar(require("./ContentArguments"), exports);
39
+ __exportStar(require("./PackArguments"), exports);
@@ -15,9 +15,10 @@ const commons_1 = require("./commons");
15
15
  var systemPackages = [];
16
16
  const _dependencies = (oPackage) => __awaiter(void 0, void 0, void 0, function* () {
17
17
  trm_core_1.Logger.loading(`Analyzing package dependencies...`);
18
+ const packages = yield commons_1.CommandContext.getSystemPackages();
18
19
  yield (0, trm_core_1.checkPackageDependencies)({
19
20
  contextData: {
20
- systemPackages: commons_1.CommandContext.systemPackages
21
+ systemPackages: packages
21
22
  },
22
23
  packageData: {
23
24
  package: oPackage
@@ -64,7 +65,7 @@ function check(commandArgs) {
64
65
  analysisType = inq1.analysisType;
65
66
  }
66
67
  trm_core_1.Logger.loading(`Searching package "${packageName}"...`);
67
- systemPackages = yield trm_core_1.SystemConnector.getInstalledPackages(true);
68
+ systemPackages = yield commons_1.CommandContext.getSystemPackages();
68
69
  const oPackage = systemPackages.find(o => o.compareName(packageName) && o.compareRegistry(commons_1.CommandContext.getRegistry()));
69
70
  if (!oPackage) {
70
71
  throw new Error(`Package "${packageName}" not found.`);
@@ -1,8 +1,8 @@
1
- import { Registry, TrmPackage } from "trm-core";
1
+ import { AbstractRegistry, TrmPackage } from "trm-core";
2
2
  export declare namespace CommandContext {
3
- var registry: Registry;
4
- var systemPackages: TrmPackage[];
3
+ var registry: AbstractRegistry;
5
4
  var trmDependencies: TrmPackage[];
6
5
  var missingTrmDependencies: (TrmPackage | string)[];
7
- function getRegistry(): Registry;
6
+ function getRegistry(): AbstractRegistry;
7
+ function getSystemPackages(): Promise<TrmPackage[]>;
8
8
  }
@@ -1,10 +1,20 @@
1
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
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.CommandContext = void 0;
13
+ const trm_core_1 = require("trm-core");
4
14
  var CommandContext;
5
15
  (function (CommandContext) {
16
+ var _systemPackages = undefined;
6
17
  CommandContext.registry = undefined;
7
- CommandContext.systemPackages = undefined;
8
18
  CommandContext.trmDependencies = [];
9
19
  CommandContext.missingTrmDependencies = [];
10
20
  function getRegistry() {
@@ -16,4 +26,14 @@ var CommandContext;
16
26
  }
17
27
  }
18
28
  CommandContext.getRegistry = getRegistry;
29
+ function getSystemPackages() {
30
+ return __awaiter(this, void 0, void 0, function* () {
31
+ if (!this._systemPackages) {
32
+ trm_core_1.Logger.loading(`Reading system packages...`);
33
+ this._systemPackages = yield trm_core_1.SystemConnector.getInstalledPackages(true, true, true);
34
+ }
35
+ return this._systemPackages;
36
+ });
37
+ }
38
+ CommandContext.getSystemPackages = getSystemPackages;
19
39
  })(CommandContext || (exports.CommandContext = CommandContext = {}));
@@ -21,7 +21,7 @@ function viewRegistryPackage(packageName, print = true) {
21
21
  trm_core_1.Logger.loading(`Reading registry data...`);
22
22
  var oRegistryView;
23
23
  try {
24
- oRegistryView = yield CommandContext_1.CommandContext.getRegistry().view(packageName);
24
+ oRegistryView = yield CommandContext_1.CommandContext.getRegistry().view(packageName, 'latest');
25
25
  }
26
26
  catch (e) {
27
27
  trm_core_1.Logger.error(e, true);
@@ -150,12 +150,13 @@ function compare(commandArgs) {
150
150
  catch (e) { }
151
151
  trm_core_1.Logger.loading(`Reading system data...`);
152
152
  for (const oConnection of aConnections) {
153
- const system = oConnection.getDest() || '';
153
+ trm_core_1.SystemConnector.systemConnector = oConnection;
154
+ const system = trm_core_1.SystemConnector.getDest() || '';
154
155
  var installed;
155
156
  var version;
156
157
  var devclass;
157
158
  var importTransport;
158
- const aSystemPackages = yield oConnection.getInstalledPackages(true);
159
+ const aSystemPackages = yield trm_core_1.SystemConnector.getInstalledPackages(true);
159
160
  const oSystemView = aSystemPackages.find(o => o.compareName(packageName) && o.compareRegistry(registry));
160
161
  if (oSystemView && oSystemView.manifest) {
161
162
  installed = 'Yes';
@@ -0,0 +1,2 @@
1
+ import { ContentArguments } from "./arguments";
2
+ export declare function content(commandArgs: ContentArguments): Promise<void>;
@@ -0,0 +1,179 @@
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.content = void 0;
16
+ const trm_core_1 = require("trm-core");
17
+ const commons_1 = require("./commons");
18
+ const utils_1 = require("../utils");
19
+ const chalk_1 = __importDefault(require("chalk"));
20
+ function content(commandArgs) {
21
+ return __awaiter(this, void 0, void 0, function* () {
22
+ trm_core_1.Logger.loading(`Searching package "${commandArgs.package}"...`);
23
+ const remotePackage = new trm_core_1.TrmPackage(commandArgs.package, commons_1.CommandContext.getRegistry());
24
+ const remoteManifest = yield remotePackage.fetchRemoteManifest(commandArgs.version);
25
+ trm_core_1.Logger.loading(`Reading content...`);
26
+ var transports = {};
27
+ var aNodes = [];
28
+ var iOtherEntries = 0;
29
+ const packageContent = yield remotePackage.fetchRemoteContent(commandArgs.version, {
30
+ tempDirPath: (0, utils_1.getTempFolder)(),
31
+ r3transDirPath: commandArgs.r3transPath
32
+ });
33
+ if (!commandArgs.all) {
34
+ transports.TADIR = packageContent.TADIR.trkorr;
35
+ aNodes.push({
36
+ tableName: 'TADIR',
37
+ content: packageContent.TADIR.content.TADIR
38
+ });
39
+ Object.keys(packageContent).forEach(type => {
40
+ if (type === 'TADIR') {
41
+ return;
42
+ }
43
+ Object.keys(packageContent[type].content).forEach(tableName => {
44
+ iOtherEntries += packageContent[type].content[tableName].length;
45
+ });
46
+ });
47
+ }
48
+ else {
49
+ Object.keys(packageContent).forEach(type => {
50
+ transports[type] = packageContent[type].trkorr;
51
+ Object.keys(packageContent[type].content).forEach(tableName => {
52
+ var nodeIndex = aNodes.findIndex(o => o.tableName === tableName);
53
+ if (nodeIndex < 0) {
54
+ nodeIndex = (aNodes.push({
55
+ tableName,
56
+ content: []
57
+ })) - 1;
58
+ }
59
+ aNodes[nodeIndex].content = aNodes[nodeIndex].content.concat(packageContent[type].content[tableName].map(o => {
60
+ o.__isDevc = type === 'DEVC';
61
+ o.__isLang = type === 'LANG';
62
+ o.__isCust = type === 'CUST';
63
+ return o;
64
+ }));
65
+ });
66
+ });
67
+ }
68
+ var tree = {
69
+ text: `${chalk_1.default.bold(commandArgs.package)} v${remoteManifest.get().version} content`,
70
+ children: []
71
+ };
72
+ aNodes.forEach(node => {
73
+ if (node.content.length > 0) {
74
+ var tableNode = {
75
+ text: `${chalk_1.default.bold(node.tableName)} (${node.content.length} record${node.content.length > 1 ? 's' : ''})`,
76
+ children: []
77
+ };
78
+ node.content.forEach(record => {
79
+ var sRecord = [];
80
+ Object.keys(record).filter(k => !k.startsWith('__')).forEach(field => {
81
+ var fieldValue = record[field];
82
+ if (field && fieldValue) {
83
+ if (node.tableName === 'TADIR') {
84
+ if (field === 'SRCSYSTEM') {
85
+ fieldValue = chalk_1.default.strikethrough(fieldValue);
86
+ }
87
+ else if (field === 'DEVCLASS') {
88
+ fieldValue = chalk_1.default.italic(fieldValue);
89
+ }
90
+ }
91
+ sRecord.push(`${chalk_1.default.bold(field)}: ${fieldValue}`);
92
+ }
93
+ });
94
+ if (sRecord.length > 0) {
95
+ if (record.__isDevc) {
96
+ tableNode.children.push({
97
+ text: chalk_1.default.bgGrey(sRecord.join(', ')),
98
+ children: []
99
+ });
100
+ }
101
+ else if (record.__isLang) {
102
+ tableNode.children.push({
103
+ text: chalk_1.default.bgGreen(sRecord.join(', ')),
104
+ children: []
105
+ });
106
+ }
107
+ else if (record.__isCust) {
108
+ tableNode.children.push({
109
+ text: chalk_1.default.bgYellow(sRecord.join(', ')),
110
+ children: []
111
+ });
112
+ }
113
+ else {
114
+ tableNode.children.push({
115
+ text: sRecord.join(', '),
116
+ children: []
117
+ });
118
+ }
119
+ }
120
+ });
121
+ tree.children.push(tableNode);
122
+ }
123
+ });
124
+ trm_core_1.Logger.tree(tree);
125
+ var header = ['Namespace', 'ABAP Package', 'TRM Transport', 'Customizing', 'Translations'];
126
+ var row1 = [];
127
+ var row2 = [];
128
+ if (remoteManifest.get().namespace) {
129
+ row1.push(`\u2714`);
130
+ row2.push(remoteManifest.get().namespace.replicense);
131
+ }
132
+ else {
133
+ row1.push(`\u274C`);
134
+ row2.push(``);
135
+ }
136
+ if (Object.keys(packageContent).includes('DEVC')) {
137
+ row1.push(`\u2714 ${packageContent['DEVC'].trkorr}`);
138
+ row2.push(`${chalk_1.default.bgGrey('Highlight')}`);
139
+ }
140
+ else {
141
+ row1.push(`\u274C`);
142
+ row2.push(``);
143
+ }
144
+ if (Object.keys(packageContent).includes('TADIR')) {
145
+ row1.push(`\u2714 ${packageContent['TADIR'].trkorr}`);
146
+ row2.push(``);
147
+ }
148
+ else {
149
+ row1.push(`\u274C`);
150
+ row2.push(``);
151
+ }
152
+ if (Object.keys(packageContent).includes('CUST')) {
153
+ row1.push(`\u2714 ${packageContent['CUST'].trkorr}`);
154
+ row2.push(`${chalk_1.default.bgYellow('Highlight')}`);
155
+ }
156
+ else {
157
+ row1.push(`\u274C`);
158
+ row2.push(``);
159
+ }
160
+ if (Object.keys(packageContent).includes('LANG')) {
161
+ row1.push(`\u2714 ${packageContent['LANG'].trkorr}`);
162
+ row2.push(`${chalk_1.default.bgGreen('Highlight')}`);
163
+ }
164
+ else {
165
+ row1.push(`\u274C`);
166
+ row2.push(``);
167
+ }
168
+ if (row2.filter(s => s.length > 0).length > 0) {
169
+ trm_core_1.Logger.table(header, [row1, row2]);
170
+ }
171
+ else {
172
+ trm_core_1.Logger.table(header, [row1]);
173
+ }
174
+ if (iOtherEntries > 0) {
175
+ trm_core_1.Logger.warning(`There are ${iOtherEntries} other records to show. Run with option --all in order to see them.`);
176
+ }
177
+ });
178
+ }
179
+ exports.content = content;
@@ -0,0 +1,2 @@
1
+ import { ImportArguments } from "./arguments/ImportArguments";
2
+ export declare function _import(commandArgs: ImportArguments): Promise<void>;
@@ -0,0 +1,82 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports._import = void 0;
13
+ const trm_core_1 = require("trm-core");
14
+ const utils_1 = require("../utils");
15
+ const commons_1 = require("./commons");
16
+ const _parsePackageReplacementsArgument = (arg) => {
17
+ if (arg) {
18
+ try {
19
+ return JSON.parse(arg);
20
+ }
21
+ catch (e) { }
22
+ }
23
+ };
24
+ const _parseImportTimeoutArg = (arg) => {
25
+ if (arg) {
26
+ try {
27
+ return parseInt(arg);
28
+ }
29
+ catch (e) { }
30
+ }
31
+ };
32
+ function _import(commandArgs) {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ const registry = new trm_core_1.FileSystem(commandArgs.file);
35
+ const packages = yield commons_1.CommandContext.getSystemPackages();
36
+ const result = yield (0, trm_core_1.install)({
37
+ contextData: {
38
+ r3transOptions: {
39
+ tempDirPath: (0, utils_1.getTempFolder)(),
40
+ r3transDirPath: commandArgs.r3transPath
41
+ },
42
+ noInquirer: commandArgs.noPrompts,
43
+ systemPackages: packages,
44
+ noR3transInfo: false
45
+ },
46
+ packageData: {
47
+ name: 'dummy',
48
+ overwrite: commandArgs.overwrite,
49
+ integrity: commandArgs.integrity,
50
+ registry
51
+ },
52
+ installData: {
53
+ checks: {
54
+ safe: commandArgs.safe,
55
+ noDependencies: commandArgs.noDependencies,
56
+ noObjectTypes: commandArgs.noObjectTypes,
57
+ noSapEntries: commandArgs.noSapEntries
58
+ },
59
+ import: {
60
+ noLang: commandArgs.noLanguageTransport,
61
+ noCust: commandArgs.noCustomizingTransport,
62
+ timeout: _parseImportTimeoutArg(commandArgs.importTimeout)
63
+ },
64
+ installDevclass: {
65
+ keepOriginal: commandArgs.keepOriginalPackages,
66
+ transportLayer: commandArgs.transportLayer,
67
+ replacements: _parsePackageReplacementsArgument(commandArgs.packageReplacements)
68
+ },
69
+ installTransport: {
70
+ create: commandArgs.createInstallTransport,
71
+ targetSystem: commandArgs.installTransportTargetSys
72
+ }
73
+ }
74
+ });
75
+ var sOutput = `${result.trmPackage.packageName} installed`;
76
+ if (result.installTransport) {
77
+ sOutput += `, use ${result.installTransport.trkorr} transport in landscape`;
78
+ }
79
+ trm_core_1.Logger.success(sOutput);
80
+ });
81
+ }
82
+ exports._import = _import;
@@ -20,3 +20,6 @@ export * from "./check";
20
20
  export * from "./findDependencies";
21
21
  export * from "./settings";
22
22
  export * from "./update";
23
+ export * from "./content";
24
+ export * from "./pack";
25
+ export * from "./import";
@@ -36,3 +36,6 @@ __exportStar(require("./check"), exports);
36
36
  __exportStar(require("./findDependencies"), exports);
37
37
  __exportStar(require("./settings"), exports);
38
38
  __exportStar(require("./update"), exports);
39
+ __exportStar(require("./content"), exports);
40
+ __exportStar(require("./pack"), exports);
41
+ __exportStar(require("./import"), exports);
@@ -20,6 +20,7 @@ const fs_1 = require("fs");
20
20
  const path_1 = __importDefault(require("path"));
21
21
  const get_root_path_1 = require("get-root-path");
22
22
  const chalk_1 = __importDefault(require("chalk"));
23
+ const semver_1 = require("semver");
23
24
  const _getDependencyVersion = (moduleName) => {
24
25
  var file;
25
26
  try {
@@ -49,43 +50,77 @@ const _getNodeRfcVersion = (npmGlobal) => {
49
50
  return JSON.parse(file.toString()).version;
50
51
  }
51
52
  };
53
+ const _getNpmLatestForText = (packageName, installedVersion, text) => __awaiter(void 0, void 0, void 0, function* () {
54
+ try {
55
+ const latestVersion = yield (0, utils_1.getNpmPackageLatestVersion)(packageName);
56
+ if ((0, semver_1.gte)(installedVersion, latestVersion)) {
57
+ text += ` ${chalk_1.default.bgGreen('LATEST')}`;
58
+ }
59
+ else {
60
+ text += ` ${chalk_1.default.bold('v' + latestVersion + ' available')}`;
61
+ }
62
+ }
63
+ catch (e) {
64
+ text += ` ${chalk_1.default.bgGray('Can\'t fetch latest version')}`;
65
+ }
66
+ return text;
67
+ });
52
68
  function info(commandArgs) {
53
69
  return __awaiter(this, void 0, void 0, function* () {
70
+ trm_core_1.Logger.loading(`Reading data...`);
54
71
  const npmGlobal = yield (0, trm_core_1.getNpmGlobalPath)();
72
+ const clientLatest = yield (0, utils_1.checkCliUpdate)(false);
55
73
  const clientVersion = (0, utils_1.getClientVersion)();
56
- const clientDependencies = (0, utils_1.getClientDependencies)() || {};
57
- const trmDependencies = (0, utils_1.getTrmDependencies)() || {};
74
+ const clientDependencies = (0, utils_1.getClientNodeDependencies)();
75
+ const trmDependencies = (0, trm_core_1.getCoreTrmDependencies)();
58
76
  const trmDependenciesInstances = commons_1.CommandContext.trmDependencies;
59
77
  const trmMissingDependencies = commons_1.CommandContext.missingTrmDependencies;
60
78
  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)));
79
+ const nodeR3transVersion = _getDependencyVersion("node-r3trans");
80
+ const packages = yield commons_1.CommandContext.getSystemPackages();
81
+ const trmRest = packages.find(o => o.compareName("trm-rest") && o.compareRegistry(new trm_core_1.Registry(trm_core_1.PUBLIC_RESERVED_KEYWORD)));
62
82
  var clientDependenciesTree = [];
63
83
  if (clientDependencies) {
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 = ``;
84
+ for (const d of Object.keys(clientDependencies).filter(k => k.startsWith('trm'))) {
85
+ var dText = ``;
86
+ var dInstalledVersion = _getDependencyVersion(d);
87
+ if (dInstalledVersion) {
88
+ dText = ` -> ${dInstalledVersion}`;
89
+ dText = yield _getNpmLatestForText(d, dInstalledVersion, dText);
71
90
  }
72
91
  clientDependenciesTree.push({
73
- text: `${d} ${clientDependencies[d]}${installedVersion}`,
92
+ text: `${d} ${clientDependencies[d]}${dText}`,
74
93
  children: []
75
94
  });
76
- });
95
+ }
77
96
  }
78
97
  var serverDependenciesTree = [];
79
98
  if (trmDependencies) {
80
- Object.keys(trmDependencies).forEach(d => {
81
- var installedVersion = ``;
99
+ for (const d of Object.keys(trmDependencies)) {
100
+ var dText = ``;
82
101
  const oTrmPackage = trmDependenciesInstances.find(o => o.compareName(d));
83
102
  if (oTrmPackage) {
103
+ var dInstalledVersion;
84
104
  try {
85
- installedVersion = ` -> ${oTrmPackage.manifest.get().version}`;
105
+ dInstalledVersion = oTrmPackage.manifest.get().version;
86
106
  }
87
107
  catch (e) {
88
- installedVersion = ` -> ${e.message}`;
108
+ dText = ` -> ${e.message}`;
109
+ }
110
+ if (dInstalledVersion) {
111
+ dText = ` -> ${dInstalledVersion}`;
112
+ try {
113
+ const dLatestVersion = (yield oTrmPackage.fetchRemoteManifest('latest')).get().version;
114
+ if ((0, semver_1.gte)(dInstalledVersion, dLatestVersion)) {
115
+ dText += ` ${chalk_1.default.bgGreen('LATEST')}`;
116
+ }
117
+ else {
118
+ dText += ` ${chalk_1.default.bold('v' + dLatestVersion + ' available')}`;
119
+ }
120
+ }
121
+ catch (e) {
122
+ dText += ` ${chalk_1.default.bgGray('Can\'t fetch latest version')}`;
123
+ }
89
124
  }
90
125
  }
91
126
  else {
@@ -103,18 +138,18 @@ function info(commandArgs) {
103
138
  });
104
139
  if (missingDependency) {
105
140
  try {
106
- installedVersion = ` -> ${chalk_1.default.bgRed(missingDependency.manifest.get().version)}`;
141
+ dText = ` -> ${chalk_1.default.bgRed(missingDependency.manifest.get().version)}`;
107
142
  }
108
143
  catch (e) {
109
- installedVersion = ` -> ${chalk_1.default.bgRed('Not found')}`;
144
+ dText = ` -> ${chalk_1.default.bgRed('Not found')}`;
110
145
  }
111
146
  }
112
147
  }
113
148
  serverDependenciesTree.push({
114
- text: `${d} ${trmDependencies[d]}${installedVersion}`,
149
+ text: `${d} ${trmDependencies[d]}${dText}`,
115
150
  children: []
116
151
  });
117
- });
152
+ }
118
153
  }
119
154
  if (trmRest && trmRest.manifest) {
120
155
  serverDependenciesTree.push({
@@ -123,12 +158,18 @@ function info(commandArgs) {
123
158
  });
124
159
  }
125
160
  var clientChildrenTree = [{
126
- text: `trm-client ${clientVersion}`,
161
+ text: `trm-client ${clientVersion} ${(0, semver_1.gte)(clientLatest.localVersion, clientLatest.latestVersion) ? chalk_1.default.bgGreen('LATEST') : chalk_1.default.bold('v' + clientLatest.latestVersion + ' available')}`,
127
162
  children: clientDependenciesTree
128
163
  }];
129
164
  if (nodeRfcVersion) {
130
165
  clientChildrenTree.push({
131
- text: `node-rfc ${nodeRfcVersion}`,
166
+ text: yield _getNpmLatestForText('node-rfc', nodeRfcVersion, `node-rfc ${nodeRfcVersion}`),
167
+ children: []
168
+ });
169
+ }
170
+ if (nodeR3transVersion) {
171
+ clientChildrenTree.push({
172
+ text: yield _getNpmLatestForText('node-r3trans', nodeR3transVersion, `node-r3trans ${nodeR3transVersion}`),
132
173
  children: []
133
174
  });
134
175
  }
@@ -141,7 +182,9 @@ function info(commandArgs) {
141
182
  text: chalk_1.default.bold(`Server (${trm_core_1.SystemConnector.getDest()})`),
142
183
  children: serverDependenciesTree
143
184
  };
144
- trm_core_1.Logger.tree(serverTree);
185
+ if (!(trm_core_1.SystemConnector.systemConnector instanceof utils_1.NoConnection)) {
186
+ trm_core_1.Logger.tree(serverTree);
187
+ }
145
188
  });
146
189
  }
147
190
  exports.info = info;