trm-core 9.0.0 → 9.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/changelog.txt CHANGED
@@ -8,6 +8,12 @@ Legend
8
8
  + : added
9
9
  - : removed
10
10
 
11
+ 2026-04-21 v9.1.0
12
+ -------------------
13
+ ! abstract registry log for downloads
14
+ ! abstract registry contents endpoint (wip)
15
+ ! skip usage of r3trans when registry provides content (wip)
16
+
11
17
  2026-04-14 v9.0.0
12
18
  -------------------
13
19
  ! moved to namespace /ATRM/
@@ -30,12 +30,6 @@ exports.addNamespace = {
30
30
  trm_commons_1.Logger.log(`Package install namespace is ${context.runtime.installData.namespace}`, true);
31
31
  return;
32
32
  }
33
- else {
34
- if (context.rawInput.installData.installDevclass.skipNamespace) {
35
- trm_commons_1.Logger.info(`Skipping install of namespace ${context.runtime.installData.namespace}`, false);
36
- return;
37
- }
38
- }
39
33
  trm_commons_1.Logger.loading(`Checking namespace ${context.runtime.installData.namespace}...`);
40
34
  var namespace;
41
35
  const namespaceCheck = yield systemConnector_1.SystemConnector.getNamespace(context.runtime.installData.namespace);
@@ -46,8 +40,13 @@ exports.addNamespace = {
46
40
  trm_commons_1.Logger.log(`Namespace ${context.runtime.installData.namespace} already defined`, true);
47
41
  return;
48
42
  }
43
+ else {
44
+ if (context.rawInput.installData.installDevclass.skipNamespace) {
45
+ throw new Error(`Cannot generate packages without namespace ${context.runtime.installData.namespace}. Run install with namespace import or do not rename install packages.`);
46
+ }
47
+ }
49
48
  var replicense;
50
- var texts;
49
+ var text;
51
50
  var aTexts = [];
52
51
  if (context.runtime.installData.namespace !== originalNamespace) {
53
52
  if (!context.rawInput.contextData.noInquirer) {
@@ -64,7 +63,7 @@ exports.addNamespace = {
64
63
  }
65
64
  }
66
65
  })).replicense;
67
- texts = yield trm_commons_1.Inquirer.prompt([{
66
+ text = yield trm_commons_1.Inquirer.prompt([{
68
67
  message: `dummy`,
69
68
  name: 'namespace',
70
69
  type: 'input',
@@ -77,61 +76,35 @@ exports.addNamespace = {
77
76
  }, {
78
77
  message: `Namespace language`,
79
78
  name: 'spras',
80
- type: 'input'
79
+ type: 'input',
80
+ default: systemConnector_1.SystemConnector.getLogonLanguage(true)
81
81
  }, {
82
82
  message: `Namespace description`,
83
83
  name: 'descriptn',
84
84
  type: 'input'
85
85
  }]);
86
+ aTexts.push(text);
86
87
  }
87
88
  }
88
89
  else {
89
90
  if (context.runtime.remotePackageData.manifest.namespace) {
90
91
  replicense = context.runtime.remotePackageData.manifest.namespace.replicense;
91
- if (context.runtime.remotePackageData.manifest.namespace.texts && context.runtime.remotePackageData.manifest.namespace.texts.length > 0) {
92
- if (context.runtime.remotePackageData.manifest.namespace.texts.length === 1 || context.rawInput.contextData.noInquirer) {
93
- texts = {
94
- namespace: context.runtime.installData.namespace,
95
- descriptn: context.runtime.remotePackageData.manifest.namespace.texts[0].description,
96
- owner: context.runtime.remotePackageData.manifest.namespace.texts[0].owner,
97
- spras: context.runtime.remotePackageData.manifest.namespace.texts[0].language
98
- };
99
- }
100
- else {
101
- if (!context.rawInput.contextData.noInquirer) {
102
- texts = (yield trm_commons_1.Inquirer.prompt({
103
- type: 'list',
104
- message: 'Choose namespace install text',
105
- name: 'choice',
106
- choices: context.runtime.remotePackageData.manifest.namespace.texts.map(o => {
107
- return {
108
- name: `${o.language} ${o.description} ${o.owner}`,
109
- value: {
110
- namespace: context.runtime.installData.namespace,
111
- descriptn: o.description,
112
- owner: o.owner,
113
- spras: o.language
114
- }
115
- };
116
- })
117
- })).choice;
118
- }
119
- }
120
- }
92
+ aTexts = context.runtime.remotePackageData.manifest.namespace.texts.map(o => {
93
+ return {
94
+ namespace: context.runtime.remotePackageData.manifest.namespace.ns || context.runtime.installData.namespace,
95
+ spras: o.language,
96
+ descriptn: o.description,
97
+ owner: o.owner
98
+ };
99
+ });
121
100
  }
122
101
  }
123
102
  if (!replicense) {
124
103
  throw new Error(`Cannot use namespace ${context.runtime.installData.namespace}: repair license missing.`);
125
104
  }
126
- if (!texts) {
105
+ if (aTexts.length === 0) {
127
106
  throw new Error(`Cannot use namespace ${context.runtime.installData.namespace}: data missing.`);
128
107
  }
129
- else {
130
- aTexts.push(texts);
131
- if (texts.spras != systemConnector_1.SystemConnector.getLogonLanguage(true)) {
132
- aTexts.push(Object.assign(Object.assign({}, texts), { spras: systemConnector_1.SystemConnector.getLogonLanguage(true) }));
133
- }
134
- }
135
108
  if (!context.runtime.stopWarningShown) {
136
109
  context.runtime.stopWarningShown = true;
137
110
  (0, stopWarning_1.stopWarning)('install');
@@ -20,8 +20,15 @@ exports.checkTransports = {
20
20
  run: (context) => __awaiter(void 0, void 0, void 0, function* () {
21
21
  trm_commons_1.Logger.log('Check transports step', true);
22
22
  var checkExistance = [];
23
+ try {
24
+ context.runtime.packageTransportsData = yield context.rawInput.packageData.registry.contents(context.rawInput.packageData.name, context.rawInput.packageData.version || 'latest', true);
25
+ context.runtime.remotePackageData.contents = true;
26
+ }
27
+ catch (_a) {
28
+ context.runtime.remotePackageData.contents = false;
29
+ }
23
30
  trm_commons_1.Logger.loading(`Checking package transports...`);
24
- const aTransports = yield context.runtime.remotePackageData.artifact.getTransportBinaries(context.rawInput.contextData.r3transOptions);
31
+ const aTransports = yield context.runtime.remotePackageData.artifact.getTransportBinaries(context.rawInput.contextData.r3transOptions, context.runtime.remotePackageData.contents);
25
32
  trm_commons_1.Logger.log(`Package content: ${aTransports.map(o => {
26
33
  return {
27
34
  trkorr: o.trkorr,
@@ -61,9 +68,11 @@ exports.checkTransports = {
61
68
  context.runtime.packageTransports.tadir.binaries = aTadirTransports[0];
62
69
  trm_commons_1.Logger.log(`TADIR transport is ${context.runtime.packageTransports.tadir.binaries.trkorr}.`, true);
63
70
  checkExistance.push(context.runtime.packageTransports.tadir.binaries.trkorr);
64
- const tadirE071 = (0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(context.runtime.packageTransports.tadir.binaries.binaries.data, 'E071'));
65
- trm_commons_1.Logger.log(`TADIR E071: ${JSON.stringify(tadirE071)}`, true);
66
- context.runtime.packageTransportsData.e071 = context.runtime.packageTransportsData.e071.concat(tadirE071);
71
+ if (!context.runtime.remotePackageData.contents) {
72
+ const tadirE071 = (0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(context.runtime.packageTransports.tadir.binaries.binaries.data, 'E071'));
73
+ trm_commons_1.Logger.log(`TADIR E071: ${JSON.stringify(tadirE071)}`, true);
74
+ context.runtime.packageTransportsData.e071 = context.runtime.packageTransportsData.e071.concat(tadirE071);
75
+ }
67
76
  }
68
77
  if (aLangTransports.length > 0) {
69
78
  if (context.rawInput.installData.import.noLang === undefined) {
@@ -84,9 +93,11 @@ exports.checkTransports = {
84
93
  context.runtime.packageTransports.lang.binaries = aLangTransports[0];
85
94
  trm_commons_1.Logger.log(`LANG transport is ${context.runtime.packageTransports.lang.binaries.trkorr}.`, true);
86
95
  checkExistance.push(context.runtime.packageTransports.lang.binaries.trkorr);
87
- const langE071 = (0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(context.runtime.packageTransports.lang.binaries.binaries.data, 'E071'));
88
- trm_commons_1.Logger.log(`LANG E071: ${JSON.stringify(langE071)}`, true);
89
- context.runtime.packageTransportsData.e071 = context.runtime.packageTransportsData.e071.concat(langE071);
96
+ if (!context.runtime.remotePackageData.contents) {
97
+ const langE071 = (0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(context.runtime.packageTransports.lang.binaries.binaries.data, 'E071'));
98
+ trm_commons_1.Logger.log(`LANG E071: ${JSON.stringify(langE071)}`, true);
99
+ context.runtime.packageTransportsData.e071 = context.runtime.packageTransportsData.e071.concat(langE071);
100
+ }
90
101
  }
91
102
  }
92
103
  if (aCustTransports.length > 0) {
@@ -108,24 +119,30 @@ exports.checkTransports = {
108
119
  });
109
120
  trm_commons_1.Logger.log(`CUST transport are ${context.runtime.packageTransports.cust.map(o => o.binaries.trkorr)}.`, true);
110
121
  checkExistance = checkExistance.concat(context.runtime.packageTransports.cust.map(o => o.binaries.trkorr));
111
- var custE071 = [];
112
- for (const transport of context.runtime.packageTransports.cust) {
113
- custE071 = custE071.concat((0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(transport.binaries.binaries.data, 'E071')));
122
+ if (!context.runtime.remotePackageData.contents) {
123
+ var custE071 = [];
124
+ for (const transport of context.runtime.packageTransports.cust) {
125
+ custE071 = custE071.concat((0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(transport.binaries.binaries.data, 'E071')));
126
+ }
127
+ trm_commons_1.Logger.log(`CUST E071: ${JSON.stringify(custE071)}`, true);
128
+ context.runtime.packageTransportsData.e071 = context.runtime.packageTransportsData.e071.concat(custE071);
114
129
  }
115
- trm_commons_1.Logger.log(`CUST E071: ${JSON.stringify(custE071)}`, true);
116
- context.runtime.packageTransportsData.e071 = context.runtime.packageTransportsData.e071.concat(custE071);
117
130
  }
118
131
  }
119
- if (context.runtime.packageTransportsData.e071.find(o => o.pgmid === 'R3TR' && o.object === 'DEVC')) {
120
- throw new Error(`Package has undeclared devclass.`);
132
+ if (!context.runtime.remotePackageData.contents) {
133
+ if (context.runtime.packageTransportsData.e071.find(o => o.pgmid === 'R3TR' && o.object === 'DEVC')) {
134
+ throw new Error(`Package has undeclared devclass.`);
135
+ }
121
136
  }
122
- var devcE071 = (0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(context.runtime.packageTransports.devc.binaries.binaries.data, 'E071'));
123
- trm_commons_1.Logger.log(`DEVC E071: ${JSON.stringify(devcE071)}`, true);
124
- devcE071 = devcE071.filter(o => o.pgmid === 'R3TR' && o.object === 'DEVC');
125
- if (devcE071.length === 0) {
126
- throw new Error(`Package has no devclass.`);
137
+ if (!context.runtime.remotePackageData.contents) {
138
+ var devcE071 = (0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(context.runtime.packageTransports.devc.binaries.binaries.data, 'E071'));
139
+ trm_commons_1.Logger.log(`DEVC E071: ${JSON.stringify(devcE071)}`, true);
140
+ devcE071 = devcE071.filter(o => o.pgmid === 'R3TR' && o.object === 'DEVC');
141
+ if (devcE071.length === 0) {
142
+ throw new Error(`Package has no devclass.`);
143
+ }
144
+ context.runtime.packageTransportsData.e071 = context.runtime.packageTransportsData.e071.concat(devcE071);
127
145
  }
128
- context.runtime.packageTransportsData.e071 = context.runtime.packageTransportsData.e071.concat(devcE071);
129
146
  context.runtime.installData.entries = context.runtime.packageTransportsData.e071;
130
147
  trm_commons_1.Logger.loading(`Checking package transports...`);
131
148
  trm_commons_1.Logger.loading(`Checking if ${checkExistance.length} transports exist before importing them`, true);
@@ -66,6 +66,7 @@ type WorkflowRuntime = {
66
66
  data: Package;
67
67
  manifest: TrmManifest;
68
68
  artifact: TrmArtifact;
69
+ contents: boolean;
69
70
  };
70
71
  packageTransports: {
71
72
  devc: TransportRuntime;
@@ -40,7 +40,7 @@ exports.init = {
40
40
  if (registry.getRegistryType() !== registry_1.RegistryType.LOCAL) {
41
41
  trm_commons_1.Logger.loading(`Fetching package in registry ${registry.name}...`);
42
42
  packageData = yield registry.getPackage(context.rawInput.packageData.name, context.rawInput.packageData.version || 'latest');
43
- artifact = yield registry.downloadArtifact(packageData.name, packageData.manifest.version);
43
+ artifact = yield registry.downloadArtifact(packageData.name, packageData.manifest.version, true);
44
44
  const checksum = (0, crypto_1.createHash)("sha512").update(artifact.binary).digest("base64");
45
45
  if (checksum !== packageData.checksum) {
46
46
  var ping;
@@ -66,7 +66,8 @@ exports.init = {
66
66
  remotePackageData: {
67
67
  data: packageData,
68
68
  artifact,
69
- manifest
69
+ manifest,
70
+ contents: false
70
71
  },
71
72
  dependenciesToInstall: [],
72
73
  r3trans: undefined,
@@ -17,13 +17,17 @@ exports.readDevc = {
17
17
  run: (context) => __awaiter(void 0, void 0, void 0, function* () {
18
18
  trm_commons_1.Logger.log('Read DEVC step', true);
19
19
  trm_commons_1.Logger.loading(`Checking package transports...`);
20
- context.runtime.packageTransportsData.tdevc = (0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(context.runtime.packageTransports.devc.binaries.binaries.data, 'TDEVC'));
20
+ if (!context.runtime.remotePackageData.contents) {
21
+ context.runtime.packageTransportsData.tdevc = (0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(context.runtime.packageTransports.devc.binaries.binaries.data, 'TDEVC'));
22
+ }
21
23
  if (context.runtime.packageTransportsData.tdevc.length === 0) {
22
24
  throw new Error(`Package has no devclass.`);
23
25
  }
24
26
  trm_commons_1.Logger.log(`DEVC TDEVC: ${JSON.stringify(context.runtime.packageTransportsData.tdevc)}`, true);
25
27
  context.runtime.originalData.hierarchy = (0, commons_1.getPackageHierarchy)(context.runtime.packageTransportsData.tdevc);
26
- context.runtime.packageTransportsData.tdevct = (0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(context.runtime.packageTransports.devc.binaries.binaries.data, 'TDEVCT'));
28
+ if (!context.runtime.remotePackageData.contents) {
29
+ context.runtime.packageTransportsData.tdevct = (0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(context.runtime.packageTransports.devc.binaries.binaries.data, 'TDEVCT'));
30
+ }
27
31
  trm_commons_1.Logger.log(`DEVC TDEVCT: ${JSON.stringify(context.runtime.packageTransportsData.tdevct)}`, true);
28
32
  })
29
33
  };
@@ -18,7 +18,9 @@ exports.readTadir = {
18
18
  run: (context) => __awaiter(void 0, void 0, void 0, function* () {
19
19
  trm_commons_1.Logger.log('Read tadir step', true);
20
20
  trm_commons_1.Logger.loading(`Checking package transports...`);
21
- context.runtime.packageTransportsData.tadir = (0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(context.runtime.packageTransports.tadir.binaries.binaries.data, 'TADIR'));
21
+ if (!context.runtime.remotePackageData.contents) {
22
+ context.runtime.packageTransportsData.tadir = (0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(context.runtime.packageTransports.tadir.binaries.binaries.data, 'TADIR'));
23
+ }
22
24
  trm_commons_1.Logger.log(`TADIR TADIR: ${JSON.stringify(context.runtime.packageTransportsData.tadir)}`, true);
23
25
  var existingObjects = [];
24
26
  if (!systemConnector_1.SystemConnector.getSupportedBulk().getTransportObjects) {
@@ -93,7 +93,7 @@ class Lockfile {
93
93
  const registry = registry_1.RegistryProvider.getRegistry(lock.registry);
94
94
  const ping = yield registry.ping();
95
95
  const release = yield registry.getPackage(lock.name, lock.version);
96
- const artifact = yield registry.downloadArtifact(lock.name, lock.version);
96
+ const artifact = yield registry.downloadArtifact(lock.name, lock.version, true);
97
97
  const checksum = (0, crypto_1.createHash)("sha512").update(artifact.binary).digest("base64");
98
98
  if (release.checksum !== lock.integrity || checksum !== lock.integrity) {
99
99
  trm_commons_1.Logger.error(`SECURITY ISSUE! Release "${lock.name}", registry "${lock.registry}", integrity in lockfile does NOT match!`);
@@ -11,11 +11,12 @@ export declare abstract class AbstractRegistry {
11
11
  abstract ping: () => Promise<Ping>;
12
12
  abstract whoAmI: () => Promise<WhoAmI>;
13
13
  abstract getPackage: (fullName: string, version: string) => Promise<Package>;
14
- abstract downloadArtifact: (fullName: string, version: string) => Promise<TrmArtifact>;
14
+ abstract downloadArtifact: (fullName: string, version: string, log?: boolean) => Promise<TrmArtifact>;
15
15
  abstract validatePublish: (fullName: string, version: string, isPrivate: boolean) => Promise<void>;
16
16
  abstract publish: (fullName: string, version: string, artifact: TrmArtifact, readme?: string, tags?: string) => Promise<Package>;
17
17
  abstract unpublish: (fullName: string, version: string) => Promise<void>;
18
18
  abstract deprecate: (fullName: string, version: string, deprecate: Deprecate) => Promise<void>;
19
19
  abstract addDistTag: (fullName: string, distTag: DistTagAdd) => Promise<void>;
20
20
  abstract rmDistTag: (fullName: string, distTag: DistTagRm) => Promise<void>;
21
+ abstract contents: (fullName: string, version: string, log?: boolean) => Promise<any>;
21
22
  }
@@ -24,4 +24,5 @@ export declare class FileSystem implements AbstractRegistry {
24
24
  deprecate(fullName: string, version: string, deprecate: Deprecate): Promise<void>;
25
25
  addDistTag(fullName: string, distTag: DistTagAdd): Promise<void>;
26
26
  rmDistTag(fullName: string, distTag: DistTagRm): Promise<void>;
27
+ contents(fullName: string, version: string): Promise<any>;
27
28
  }
@@ -174,5 +174,10 @@ class FileSystem {
174
174
  throw new Error(`File system can't remove dist tags!`);
175
175
  });
176
176
  }
177
+ contents(fullName, version) {
178
+ return __awaiter(this, void 0, void 0, function* () {
179
+ throw new Error(`File system can't see contents!`);
180
+ });
181
+ }
177
182
  }
178
183
  exports.FileSystem = FileSystem;
@@ -24,11 +24,12 @@ export declare class RegistryV2 implements AbstractRegistry {
24
24
  ping(): Promise<Ping>;
25
25
  whoAmI(): Promise<WhoAmI>;
26
26
  getPackage(fullName: string, version?: string): Promise<Package>;
27
- downloadArtifact(fullName: string, version?: string): Promise<TrmArtifact>;
27
+ downloadArtifact(fullName: string, version?: string, log?: boolean): Promise<TrmArtifact>;
28
28
  validatePublish(fullName: string, version: string, isPrivate: boolean): Promise<void>;
29
29
  publish(fullName: string, version: string, artifact: TrmArtifact, readme?: string, tags?: string): Promise<Package>;
30
30
  unpublish(fullName: string, version: string): Promise<void>;
31
31
  deprecate(fullName: string, version: string, deprecate: Deprecate): Promise<void>;
32
32
  addDistTag(fullName: string, distTag: DistTagAdd): Promise<void>;
33
33
  rmDistTag(fullName: string, distTag: DistTagRm): Promise<void>;
34
+ contents(fullName: string, version?: string, log?: boolean): Promise<any>;
34
35
  }
@@ -58,6 +58,7 @@ const protocol_1 = require("../protocol");
58
58
  const opener_1 = __importDefault(require("opener"));
59
59
  const commons_1 = require("../commons");
60
60
  const node_cache_1 = __importDefault(require("node-cache"));
61
+ const cliProgress = __importStar(require("cli-progress"));
61
62
  const AXIOS_CTX = "RegistryV2";
62
63
  exports.PUBLIC_RESERVED_KEYWORD = 'public';
63
64
  class RegistryV2 {
@@ -397,20 +398,66 @@ class RegistryV2 {
397
398
  });
398
399
  }
399
400
  downloadArtifact(fullName_1) {
400
- return __awaiter(this, arguments, void 0, function* (fullName, version = 'latest') {
401
- var buffer;
401
+ return __awaiter(this, arguments, void 0, function* (fullName, version = 'latest', log) {
402
+ var _a;
402
403
  const packageData = yield this.getPackage(fullName, version);
404
+ const chunks = [];
405
+ let buffer;
406
+ var logProgress;
407
+ if (log) {
408
+ logProgress = new cliProgress.SingleBar({
409
+ clearOnComplete: true,
410
+ hideCursor: true,
411
+ format: `${fullName} ${version} [{bar}] {percentage}% | {value}/{total} bytes`,
412
+ barGlue: '>'
413
+ }, cliProgress.Presets.legacy);
414
+ }
403
415
  try {
404
- buffer = (yield this._axiosInstance.get(packageData.download_link, {
416
+ const response = yield this._axiosInstance.get(packageData.download_link, {
405
417
  headers: {
406
- 'Accept': 'application/octet-stream',
418
+ Accept: 'application/octet-stream',
407
419
  },
408
420
  maxRedirects: 10,
409
- responseType: 'arraybuffer',
421
+ responseType: 'stream',
410
422
  validateStatus: s => s >= 200 && s < 400,
411
- })).data;
423
+ });
424
+ const totalBytes = Number((_a = response.headers['content-length']) !== null && _a !== void 0 ? _a : 0);
425
+ let downloadedBytes = 0;
426
+ if (log) {
427
+ if (totalBytes > 0) {
428
+ trm_commons_1.Logger.forceStop();
429
+ logProgress.start(totalBytes, 0);
430
+ }
431
+ else {
432
+ trm_commons_1.Logger.warning('content-length header missing, percentage progress is unavailable');
433
+ }
434
+ }
435
+ yield new Promise((resolve, reject) => {
436
+ response.data.on('data', (chunk) => {
437
+ chunks.push(chunk);
438
+ downloadedBytes += chunk.length;
439
+ if (log) {
440
+ if (totalBytes > 0) {
441
+ logProgress.update(downloadedBytes);
442
+ }
443
+ }
444
+ });
445
+ response.data.on('end', () => resolve());
446
+ response.data.on('error', reject);
447
+ });
448
+ if (log) {
449
+ if (totalBytes > 0) {
450
+ logProgress.stop();
451
+ }
452
+ }
453
+ buffer = Buffer.concat(chunks);
412
454
  }
413
455
  catch (e) {
456
+ try {
457
+ logProgress.stop();
458
+ }
459
+ catch (_b) {
460
+ }
414
461
  trm_commons_1.Logger.error(e.toString(), true);
415
462
  trm_commons_1.Logger.error(`Failed to fetch package at ${packageData.download_link}: ${e.message}`);
416
463
  throw e;
@@ -493,5 +540,68 @@ class RegistryV2 {
493
540
  }
494
541
  });
495
542
  }
543
+ contents(fullName_1) {
544
+ return __awaiter(this, arguments, void 0, function* (fullName, version = 'latest', log) {
545
+ var _a;
546
+ const chunks = [];
547
+ var logProgress;
548
+ if (log) {
549
+ logProgress = new cliProgress.SingleBar({
550
+ clearOnComplete: true,
551
+ hideCursor: true,
552
+ format: `${fullName} ${version} contents [{bar}] {percentage}% | {value}/{total} bytes`,
553
+ barGlue: '>'
554
+ }, cliProgress.Presets.legacy);
555
+ }
556
+ try {
557
+ const response = yield this._axiosInstance.get(`/package/contents/${fullName}`, {
558
+ params: {
559
+ version: encodeURIComponent(version),
560
+ },
561
+ responseType: 'stream',
562
+ });
563
+ const totalBytes = Number((_a = response.headers['content-length']) !== null && _a !== void 0 ? _a : 0);
564
+ let downloadedBytes = 0;
565
+ if (log) {
566
+ if (totalBytes > 0) {
567
+ trm_commons_1.Logger.forceStop();
568
+ logProgress.start(totalBytes, 0);
569
+ }
570
+ else {
571
+ trm_commons_1.Logger.warning('content-length header missing, percentage progress is unavailable');
572
+ }
573
+ }
574
+ yield new Promise((resolve, reject) => {
575
+ response.data.on('data', (chunk) => {
576
+ chunks.push(chunk);
577
+ downloadedBytes += chunk.length;
578
+ if (log) {
579
+ if (totalBytes > 0) {
580
+ logProgress.update(downloadedBytes);
581
+ }
582
+ }
583
+ });
584
+ response.data.on('end', () => resolve());
585
+ response.data.on('error', reject);
586
+ });
587
+ if (log) {
588
+ if (totalBytes > 0) {
589
+ logProgress.stop();
590
+ }
591
+ }
592
+ const buffer = Buffer.concat(chunks);
593
+ return JSON.parse(buffer.toString('utf-8'));
594
+ }
595
+ catch (e) {
596
+ try {
597
+ logProgress.stop();
598
+ }
599
+ catch (_b) { }
600
+ trm_commons_1.Logger.error(e.toString(), true);
601
+ trm_commons_1.Logger.error(`Failed to fetch contents for ${fullName}: ${e.message}`);
602
+ throw e;
603
+ }
604
+ });
605
+ }
496
606
  }
497
607
  exports.RegistryV2 = RegistryV2;
@@ -16,7 +16,7 @@ export declare class TrmArtifact {
16
16
  getManifest(): Manifest | null;
17
17
  replaceManifest(oManifest: Manifest): void;
18
18
  getDistFolder(): string | null;
19
- getTransportBinaries(r3transOption?: R3transOptions): Promise<TransportBinary[]>;
19
+ getTransportBinaries(r3transOption?: R3transOptions, noCheck?: boolean): Promise<TransportBinary[]>;
20
20
  getContent(r3transConfig?: R3transOptions): Promise<any>;
21
21
  static create(data: {
22
22
  transports: Transport[];
@@ -94,7 +94,7 @@ class TrmArtifact {
94
94
  }
95
95
  return this._distFolder;
96
96
  }
97
- getTransportBinaries(r3transOption) {
97
+ getTransportBinaries(r3transOption, noCheck) {
98
98
  return __awaiter(this, void 0, void 0, function* () {
99
99
  var _a, _b;
100
100
  if (!this._binaries) {
@@ -114,7 +114,14 @@ class TrmArtifact {
114
114
  const oHeader = (_a = aPackedTransportEntries.find(o => o.comment === 'header')) === null || _a === void 0 ? void 0 : _a.getData();
115
115
  const oData = (_b = aPackedTransportEntries.find(o => o.comment === 'data')) === null || _b === void 0 ? void 0 : _b.getData();
116
116
  if (oHeader && oData) {
117
- const trkorr = yield r3trans.getTransportTrkorr(oData);
117
+ var trkorr;
118
+ if (noCheck) {
119
+ const filename = aPackedTransportEntries.find(o => o.comment === 'header').entryName;
120
+ trkorr = (filename.slice(-3) + filename.slice(0, -3)).slice(0, -1);
121
+ }
122
+ else {
123
+ trkorr = yield r3trans.getTransportTrkorr(oData);
124
+ }
118
125
  aResult.push({
119
126
  trkorr,
120
127
  type: type,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trm-core",
3
- "version": "9.0.0",
3
+ "version": "9.1.0",
4
4
  "description": "TRM (Transport Request Manager) Core",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",