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 +10 -1
- package/dist/actions/findDependencies/index.d.ts +1 -0
- package/dist/actions/findDependencies/index.js +1 -0
- package/dist/actions/publish/findDependencies.js +44 -41
- package/dist/actions/publish/setManifestValues.js +2 -2
- package/dist/lockfile/Lockfile.d.ts +2 -1
- package/dist/lockfile/Lockfile.js +6 -0
- package/dist/registry/RegistryV2.js +7 -7
- package/package.json +2 -2
package/changelog.txt
CHANGED
|
@@ -8,7 +8,12 @@ Legend
|
|
|
8
8
|
+ : added
|
|
9
9
|
- : removed
|
|
10
10
|
|
|
11
|
-
2025-
|
|
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
|
|
@@ -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
|
-
|
|
56
|
-
if (
|
|
57
|
-
|
|
58
|
-
aUnknownDependencyDevclass.
|
|
59
|
-
trm_commons_1.Logger.error(`
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
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
|
-
|
|
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
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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: `
|
|
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(
|
|
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/${
|
|
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/${
|
|
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/${
|
|
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/${
|
|
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/${
|
|
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/${
|
|
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/${
|
|
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.
|
|
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.
|
|
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"
|