trm-core 8.1.0 → 8.1.2

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,7 +8,12 @@ Legend
8
8
  + : added
9
9
  - : removed
10
10
 
11
- 2025-10-27 v8.1.0
11
+ 2025-11-07 v8.1.2
12
+ -------------------
13
+ - encode uri in registry endpoint
14
+ + placeholder for lockfile parsing
15
+
16
+ 2025-11-04 v8.1.1
12
17
  -------------------
13
18
  + moved lock file generation to core
14
19
  + lock file can be used to determine dependency version
@@ -16,6 +21,10 @@ Legend
16
21
  + release tags
17
22
  ! getPackageHierarchy ignore multiple roots in setDevclass method
18
23
 
24
+ 2025-10-30 v8.0.2
25
+ -------------------
26
+ * fix no dependency detection comparison with latest release
27
+
19
28
  2025-10-24 v8.0.1
20
29
  -------------------
21
30
  * fix transport relevant for dependency detection issue
@@ -47,6 +47,7 @@ type WorkflowRuntime = {
47
47
  };
48
48
  };
49
49
  export type FindDependenciesActionOutput = {
50
+ abort: boolean;
50
51
  trmPackageDependencies: {
51
52
  withTrmPackage: TrmDependency[];
52
53
  withoutTrmPackage: TrmDependency[];
@@ -40,6 +40,7 @@ function findDependencies(inputData) {
40
40
  });
41
41
  trm_commons_1.Logger.log(`Workflow ${WORKFLOW_NAME} result: ${(0, util_1.inspect)(result, { breakLength: Infinity, compact: true })}`, true);
42
42
  return {
43
+ abort: !!result.runtime.abort,
43
44
  trmPackageDependencies: {
44
45
  withTrmPackage: result.runtime.dependencies.withTrmPackage,
45
46
  withoutTrmPackage: result.runtime.dependencies.withoutTrmPackage,
@@ -52,52 +52,55 @@ exports.findDependencies = {
52
52
  trm_commons_1.Logger.log(`Ready to execute sub-workflow ${SUBWORKFLOW_NAME}, input data: ${(0, trm_commons_1.inspect)(inputData, { breakLength: Infinity, compact: true })}`, true);
53
53
  const result = yield (0, __1.findDependencies)(inputData);
54
54
  trm_commons_1.Logger.log(`Workflow ${SUBWORKFLOW_NAME} result: ${(0, trm_commons_1.inspect)(result, { breakLength: Infinity, compact: true })}`, true);
55
- const aUnknownDependencyDevclass = (result.trmPackageDependencies.withoutTrmPackage).map(o => o.devclass);
56
- if (aUnknownDependencyDevclass.length > 0) {
57
- trm_commons_1.Logger.error(`Package "${context.rawInput.packageData.devclass}" has ${aUnknownDependencyDevclass.length} missing ${aUnknownDependencyDevclass.length === 1 ? 'dependency' : 'dependencies'}:`);
58
- aUnknownDependencyDevclass.forEach((d, i) => {
59
- trm_commons_1.Logger.error(` (${i + 1}/${aUnknownDependencyDevclass.length}) ${d}`);
60
- });
61
- throw new Error(`Resolve missing dependencies by publishing them as TRM packages.`);
62
- }
63
- trm_commons_1.Logger.info(`Package "${context.rawInput.packageData.devclass}" has ${result.trmPackageDependencies.withTrmPackage.length} TRM package ${result.trmPackageDependencies.withTrmPackage.length === 1 ? 'dependency' : 'dependencies'} and ${result.objectDependencies.sapObjects.reduce((sum, obj) => sum + obj.dependencies.length, 0)} required SAP ${result.objectDependencies.sapObjects.reduce((sum, obj) => sum + obj.dependencies.length, 0) === 1 ? 'object' : 'objects'}.`);
64
- trm_commons_1.Logger.log(`Adding TRM package dependencies to manifest`, true);
65
- trm_commons_1.Logger.loading(`Updating manifest...`);
66
- result.trmPackageDependencies.withTrmPackage.forEach((o, i) => {
67
- if (o.package.registry.getRegistryType() === registry_1.RegistryType.LOCAL) {
68
- trm_commons_1.Logger.error(` (${i + 1}/${result.trmPackageDependencies.withTrmPackage.length}) Cannot have dependency with ABAP package "${o.devclass}": TRM package was installed manually`);
55
+ context.rawInput.publishData.noDependenciesDetection = result.abort;
56
+ if (!context.rawInput.publishData.noDependenciesDetection) {
57
+ const aUnknownDependencyDevclass = (result.trmPackageDependencies.withoutTrmPackage).map(o => o.devclass);
58
+ if (aUnknownDependencyDevclass.length > 0) {
59
+ trm_commons_1.Logger.error(`Package "${context.rawInput.packageData.devclass}" has ${aUnknownDependencyDevclass.length} missing ${aUnknownDependencyDevclass.length === 1 ? 'dependency' : 'dependencies'}:`);
60
+ aUnknownDependencyDevclass.forEach((d, i) => {
61
+ trm_commons_1.Logger.error(` (${i + 1}/${aUnknownDependencyDevclass.length}) ${d}`);
62
+ });
63
+ throw new Error(`Resolve missing dependencies by publishing them as TRM packages.`);
69
64
  }
70
- else {
71
- if (o.package.manifest) {
72
- const dependencyManifest = o.package.manifest.get();
73
- const dependencyVersionRange = `^${dependencyManifest.version}`;
74
- const dependencyRegistry = o.package.registry.getRegistryType() === registry_1.RegistryType.PUBLIC ? undefined : o.package.registry.endpoint;
75
- context.runtime.trmPackage.manifest.dependencies.push({
76
- name: dependencyManifest.name,
77
- version: dependencyVersionRange,
78
- registry: dependencyRegistry
79
- });
65
+ trm_commons_1.Logger.info(`Package "${context.rawInput.packageData.devclass}" has ${result.trmPackageDependencies.withTrmPackage.length} TRM package ${result.trmPackageDependencies.withTrmPackage.length === 1 ? 'dependency' : 'dependencies'} and ${result.objectDependencies.sapObjects.reduce((sum, obj) => sum + obj.dependencies.length, 0)} required SAP ${result.objectDependencies.sapObjects.reduce((sum, obj) => sum + obj.dependencies.length, 0) === 1 ? 'object' : 'objects'}.`);
66
+ trm_commons_1.Logger.log(`Adding TRM package dependencies to manifest`, true);
67
+ trm_commons_1.Logger.loading(`Updating manifest...`);
68
+ result.trmPackageDependencies.withTrmPackage.forEach((o, i) => {
69
+ if (o.package.registry.getRegistryType() === registry_1.RegistryType.LOCAL) {
70
+ trm_commons_1.Logger.error(` (${i + 1}/${result.trmPackageDependencies.withTrmPackage.length}) Cannot have dependency with ABAP package "${o.devclass}": TRM package was installed manually`);
80
71
  }
81
72
  else {
82
- trm_commons_1.Logger.error(` (${i + 1}/${result.trmPackageDependencies.withTrmPackage.length}) Cannot find manifest of dependency in ABAP package "${o.devclass}"`);
73
+ if (o.package.manifest) {
74
+ const dependencyManifest = o.package.manifest.get();
75
+ const dependencyVersionRange = `^${dependencyManifest.version}`;
76
+ const dependencyRegistry = o.package.registry.getRegistryType() === registry_1.RegistryType.PUBLIC ? undefined : o.package.registry.endpoint;
77
+ context.runtime.trmPackage.manifest.dependencies.push({
78
+ name: dependencyManifest.name,
79
+ version: dependencyVersionRange,
80
+ registry: dependencyRegistry
81
+ });
82
+ }
83
+ else {
84
+ trm_commons_1.Logger.error(` (${i + 1}/${result.trmPackageDependencies.withTrmPackage.length}) Cannot find manifest of dependency in ABAP package "${o.devclass}"`);
85
+ }
83
86
  }
84
- }
85
- });
86
- trm_commons_1.Logger.log(`Adding SAP objects dependencies to manifest`, true);
87
- trm_commons_1.Logger.loading(`Updating manifest...`);
88
- result.objectDependencies.sapObjects.forEach(o => {
89
- if (!context.runtime.trmPackage.manifest.sapEntries[o.table]) {
90
- context.runtime.trmPackage.manifest.sapEntries[o.table] = [];
91
- }
92
- o.dependencies.forEach(k => {
93
- var tableKeys = k.object;
94
- if (o.table === 'TADIR') {
95
- delete tableKeys['DEVCLASS'];
96
- }
97
- if (!context.runtime.trmPackage.manifest.sapEntries[o.table].some(o => _isObjectEqual(o, tableKeys))) {
98
- context.runtime.trmPackage.manifest.sapEntries[o.table].push(tableKeys);
87
+ });
88
+ trm_commons_1.Logger.log(`Adding SAP objects dependencies to manifest`, true);
89
+ trm_commons_1.Logger.loading(`Updating manifest...`);
90
+ result.objectDependencies.sapObjects.forEach(o => {
91
+ if (!context.runtime.trmPackage.manifest.sapEntries[o.table]) {
92
+ context.runtime.trmPackage.manifest.sapEntries[o.table] = [];
99
93
  }
94
+ o.dependencies.forEach(k => {
95
+ var tableKeys = k.object;
96
+ if (o.table === 'TADIR') {
97
+ delete tableKeys['DEVCLASS'];
98
+ }
99
+ if (!context.runtime.trmPackage.manifest.sapEntries[o.table].some(o => _isObjectEqual(o, tableKeys))) {
100
+ context.runtime.trmPackage.manifest.sapEntries[o.table].push(tableKeys);
101
+ }
102
+ });
100
103
  });
101
- });
104
+ }
102
105
  })
103
106
  };
@@ -93,10 +93,11 @@ exports.setManifestValues = {
93
93
  }
94
94
  });
95
95
  if (missingDependencies.length > 0) {
96
+ trm_commons_1.Logger.warning(`Latest version of the package had the ${missingDependencies.length} dependencies that are now missing`);
96
97
  if (!context.rawInput.contextData.noInquirer) {
97
98
  const inq = yield trm_commons_1.Inquirer.prompt({
98
99
  type: 'select',
99
- message: `Dependency`,
100
+ message: `Include dependencies (if still relevant)`,
100
101
  name: 'dependencies',
101
102
  choices: missingDependencies.map(o => {
102
103
  var name;
@@ -115,7 +116,6 @@ exports.setManifestValues = {
115
116
  context.runtime.trmPackage.manifest.dependencies = (context.runtime.trmPackage.manifest.dependencies || []).concat((inq.dependencies || []));
116
117
  }
117
118
  else {
118
- trm_commons_1.Logger.warning(`Latest version of the package had the following dependencies:`);
119
119
  missingDependencies.forEach(o => {
120
120
  if (o.registry) {
121
121
  trm_commons_1.Logger.warning(` ${o.name} (${o.registry})`);
@@ -14,8 +14,9 @@ export interface LockfileContent {
14
14
  }
15
15
  export declare class Lockfile {
16
16
  lockfile: LockfileContent;
17
- constructor(lockfile: LockfileContent);
17
+ private constructor();
18
18
  static generate(root: TrmPackage, packages?: TrmPackage[]): Promise<Lockfile>;
19
+ static fromJson(json: any): Lockfile;
19
20
  toJson(): string;
20
21
  getLock(trmPackage: TrmPackage): Lock;
21
22
  static testReleaseByLock(lock: Lock): Promise<boolean>;
@@ -64,6 +64,12 @@ class Lockfile {
64
64
  return new Lockfile(lock);
65
65
  });
66
66
  }
67
+ static fromJson(json) {
68
+ if (json.lockfileVersion === 1) {
69
+ return new Lockfile(json);
70
+ }
71
+ throw new Error(`Unable to parse lockfile.`);
72
+ }
67
73
  toJson() {
68
74
  const KEYS_ORDER = [
69
75
  "lockfileVersion",
@@ -368,7 +368,7 @@ class RegistryV2 {
368
368
  if (!data) {
369
369
  var ttl;
370
370
  try {
371
- data = (yield this._axiosInstance.get(`/package/${encodeURIComponent(fullName)}`, {
371
+ data = (yield this._axiosInstance.get(`/package/${fullName}`, {
372
372
  params: {
373
373
  version: encodeURIComponent(version)
374
374
  }
@@ -417,7 +417,7 @@ class RegistryV2 {
417
417
  }
418
418
  validatePublish(fullName_1) {
419
419
  return __awaiter(this, arguments, void 0, function* (fullName, version = 'latest', isPrivate) {
420
- const status = (yield this._axiosInstance.get(`/publish/check/${encodeURIComponent(fullName)}`, {
420
+ const status = (yield this._axiosInstance.get(`/publish/check/${fullName}`, {
421
421
  params: {
422
422
  version: encodeURIComponent(version),
423
423
  private: isPrivate ? 'X' : 'N'
@@ -446,7 +446,7 @@ class RegistryV2 {
446
446
  if (!tags) {
447
447
  delete params.tags;
448
448
  }
449
- return (yield this._axiosInstance.post(`/publish/${encodeURIComponent(fullName)}`, formData, {
449
+ return (yield this._axiosInstance.post(`/publish/${fullName}`, formData, {
450
450
  params,
451
451
  headers: formData.getHeaders()
452
452
  })).data;
@@ -454,7 +454,7 @@ class RegistryV2 {
454
454
  }
455
455
  unpublish(fullName, version) {
456
456
  return __awaiter(this, void 0, void 0, function* () {
457
- yield this._axiosInstance.post(`/unpublish/${encodeURIComponent(fullName)}`, null, {
457
+ yield this._axiosInstance.post(`/unpublish/${fullName}`, null, {
458
458
  params: {
459
459
  version: encodeURIComponent(version)
460
460
  }
@@ -463,7 +463,7 @@ class RegistryV2 {
463
463
  }
464
464
  deprecate(fullName, version, deprecate) {
465
465
  return __awaiter(this, void 0, void 0, function* () {
466
- yield this._axiosInstance.post(`/deprecate/${encodeURIComponent(fullName)}`, {
466
+ yield this._axiosInstance.post(`/deprecate/${fullName}`, {
467
467
  deprecate_note: deprecate.deprecate_note
468
468
  }, {
469
469
  params: {
@@ -474,7 +474,7 @@ class RegistryV2 {
474
474
  }
475
475
  addDistTag(fullName, distTag) {
476
476
  return __awaiter(this, void 0, void 0, function* () {
477
- const status = (yield this._axiosInstance.put(`/package/tag/${encodeURIComponent(fullName)}`, distTag)).status;
477
+ const status = (yield this._axiosInstance.put(`/package/tag/${fullName}`, distTag)).status;
478
478
  if (status !== 204) {
479
479
  throw new Error(`Cannot add tag "${distTag.tag.trim().toUpperCase()}"`);
480
480
  }
@@ -482,7 +482,7 @@ class RegistryV2 {
482
482
  }
483
483
  rmDistTag(fullName, distTag) {
484
484
  return __awaiter(this, void 0, void 0, function* () {
485
- const status = (yield this._axiosInstance.delete(`/package/tag/${encodeURIComponent(fullName)}`, {
485
+ const status = (yield this._axiosInstance.delete(`/package/tag/${fullName}`, {
486
486
  data: distTag
487
487
  })).status;
488
488
  if (status !== 204) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trm-core",
3
- "version": "8.1.0",
3
+ "version": "8.1.2",
4
4
  "description": "TRM (Transport Request Manager) Core",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -63,7 +63,7 @@
63
63
  "semver": "^7.5.4",
64
64
  "semver-sort": "^1.0.0",
65
65
  "spdx-license-ids": "^3.0.13",
66
- "trm-registry-types": "^2.0.0",
66
+ "trm-registry-types": "^2.1.0",
67
67
  "uuid": "^9.0.1",
68
68
  "xml-beautify": "^1.2.3",
69
69
  "xml-js": "^1.6.11"