trm-core 7.5.4 → 8.0.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/LICENSE +20 -20
- package/README.md +35 -35
- package/changelog.txt +186 -171
- package/dist/actions/checkPackageDependencies/analyze.js +5 -51
- package/dist/actions/checkPackageDependencies/index.d.ts +2 -5
- package/dist/actions/checkPackageDependencies/init.js +5 -7
- package/dist/actions/checkSapEntries/analyze.js +2 -2
- package/dist/actions/checkSapEntries/index.d.ts +2 -2
- package/dist/actions/checkSapEntries/init.js +1 -4
- package/dist/actions/findDependencies/index.d.ts +0 -2
- package/dist/actions/findDependencies/setTrmDependencies.js +11 -55
- package/dist/actions/install/addNamespace.js +14 -9
- package/dist/actions/install/checkAlreadyInstalled.js +2 -2
- package/dist/actions/install/checkDependencies.js +2 -16
- package/dist/actions/install/checkSapEntries.js +1 -1
- package/dist/actions/install/checkTransports.js +2 -2
- package/dist/actions/install/executePostActivities.js +3 -3
- package/dist/actions/install/generateInstallTransport.js +40 -5
- package/dist/actions/install/index.d.ts +6 -10
- package/dist/actions/install/index.js +2 -4
- package/dist/actions/install/init.js +37 -45
- package/dist/actions/install/installDependencies.js +0 -1
- package/dist/actions/install/setPackageIntegrity.js +1 -1
- package/dist/actions/install/setTrmServerUpgradeService.js +1 -1
- package/dist/actions/installDependency/findInstallRelease.js +18 -18
- package/dist/actions/installDependency/index.d.ts +0 -1
- package/dist/actions/installDependency/init.js +0 -7
- package/dist/actions/installDependency/installRelease.js +0 -1
- package/dist/actions/publish/findDependencies.js +0 -12
- package/dist/actions/publish/generateCustTransport.js +0 -3
- package/dist/actions/publish/generateDevcTransport.js +0 -4
- package/dist/actions/publish/generateLangTransport.js +0 -3
- package/dist/actions/publish/getSourceCode.js +1 -1
- package/dist/actions/publish/index.d.ts +1 -1
- package/dist/actions/publish/init.js +71 -95
- package/dist/actions/publish/setManifestValues.js +4 -13
- package/dist/commons/getAxiosInstance.d.ts +1 -1
- package/dist/manifest/Manifest.d.ts +2 -0
- package/dist/manifest/Manifest.js +47 -17
- package/dist/manifest/TrmManifestDependency.d.ts +0 -1
- package/dist/registry/AbstractRegistry.d.ts +7 -7
- package/dist/registry/FileSystem.d.ts +7 -6
- package/dist/registry/FileSystem.js +35 -34
- package/dist/registry/RegistryProvider.js +4 -4
- package/dist/registry/{Registry.d.ts → RegistryV2.d.ts} +11 -10
- package/dist/registry/{Registry.js → RegistryV2.js} +146 -74
- package/dist/registry/index.d.ts +1 -1
- package/dist/registry/index.js +1 -1
- package/dist/systemConnector/ISystemConnectorBase.d.ts +1 -1
- package/dist/systemConnector/SystemConnector.d.ts +1 -1
- package/dist/systemConnector/SystemConnector.js +3 -3
- package/dist/systemConnector/SystemConnectorBase.d.ts +1 -1
- package/dist/systemConnector/SystemConnectorBase.js +33 -11
- package/dist/transport/Transport.d.ts +4 -1
- package/dist/transport/Transport.js +53 -30
- package/dist/trmPackage/TrmArtifact.js +3 -5
- package/dist/trmPackage/TrmPackage.d.ts +0 -16
- package/dist/trmPackage/TrmPackage.js +10 -133
- package/dist/validators/validatePackageVisibility.d.ts +1 -1
- package/dist/validators/validatePackageVisibility.js +2 -16
- package/package.json +98 -97
- package/dist/actions/install/checkIntegrity.d.ts +0 -3
- package/dist/actions/install/checkIntegrity.js +0 -42
|
@@ -78,47 +78,46 @@ class FileSystem {
|
|
|
78
78
|
return __awaiter(this, void 0, void 0, function* () {
|
|
79
79
|
if (this._filePath) {
|
|
80
80
|
return {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
81
|
+
authentication_type: trm_registry_types_1.AuthenticationType.NO_AUTH,
|
|
82
|
+
messages: [{
|
|
83
|
+
text: `File system: "${this.name}", "${this.endpoint}"`,
|
|
84
|
+
type: trm_registry_types_1.MessageType.INFO
|
|
85
|
+
}]
|
|
86
86
|
};
|
|
87
87
|
}
|
|
88
|
-
|
|
88
|
+
throw new Error(`Missing file path!`);
|
|
89
89
|
});
|
|
90
90
|
}
|
|
91
91
|
whoAmI() {
|
|
92
92
|
return __awaiter(this, void 0, void 0, function* () {
|
|
93
93
|
if (this._filePath) {
|
|
94
94
|
return {
|
|
95
|
-
|
|
95
|
+
user: (0, os_1.userInfo)().username
|
|
96
96
|
};
|
|
97
97
|
}
|
|
98
|
-
|
|
98
|
+
throw new Error(`Missing file path!`);
|
|
99
99
|
});
|
|
100
100
|
}
|
|
101
|
-
|
|
101
|
+
getPackage(fullName, version) {
|
|
102
102
|
return __awaiter(this, void 0, void 0, function* () {
|
|
103
103
|
if (this._filePath) {
|
|
104
|
-
return
|
|
104
|
+
return {
|
|
105
|
+
name: fullName,
|
|
106
|
+
latest: version,
|
|
107
|
+
versions: [],
|
|
108
|
+
yanked_versions: [],
|
|
109
|
+
deprecated: false,
|
|
110
|
+
manifest: null,
|
|
111
|
+
checksum: null,
|
|
112
|
+
download_link: this._filePath
|
|
113
|
+
};
|
|
105
114
|
}
|
|
106
|
-
|
|
115
|
+
throw new Error(`File system can't view packages!`);
|
|
107
116
|
});
|
|
108
117
|
}
|
|
109
|
-
|
|
110
|
-
return __awaiter(this,
|
|
111
|
-
|
|
112
|
-
const userAuthorizations = {
|
|
113
|
-
canCreateReleases: true
|
|
114
|
-
};
|
|
115
|
-
var error = new Error(`File system can't view packages!`);
|
|
116
|
-
error.response = {
|
|
117
|
-
userAuthorizations
|
|
118
|
-
};
|
|
119
|
-
throw error;
|
|
120
|
-
}
|
|
121
|
-
return null;
|
|
118
|
+
downloadArtifact(fullName, version) {
|
|
119
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
120
|
+
return new trmPackage_1.TrmArtifact((0, fs_1.readFileSync)(this._filePath));
|
|
122
121
|
});
|
|
123
122
|
}
|
|
124
123
|
getArtifact(name_1) {
|
|
@@ -135,30 +134,32 @@ class FileSystem {
|
|
|
135
134
|
throw new Error(`File system couldn't read package`);
|
|
136
135
|
}
|
|
137
136
|
}
|
|
138
|
-
|
|
137
|
+
throw new Error(`Missing file path!`);
|
|
139
138
|
});
|
|
140
139
|
}
|
|
141
|
-
|
|
140
|
+
validatePublish(fullName, version) {
|
|
141
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
publish(fullName, version, artifact, readme) {
|
|
142
145
|
return __awaiter(this, void 0, void 0, function* () {
|
|
143
146
|
if (this._filePath) {
|
|
144
|
-
|
|
147
|
+
yield (0, promises_1.writeFile)(this._filePath, artifact.binary, {
|
|
145
148
|
flag: 'w'
|
|
146
149
|
});
|
|
150
|
+
return this.getPackage(fullName, version);
|
|
147
151
|
}
|
|
148
|
-
|
|
152
|
+
throw new Error(`Missing file path!`);
|
|
149
153
|
});
|
|
150
154
|
}
|
|
151
|
-
unpublish(
|
|
155
|
+
unpublish(fullName, version) {
|
|
152
156
|
return __awaiter(this, void 0, void 0, function* () {
|
|
153
157
|
throw new Error(`File system can't delete packages!`);
|
|
154
158
|
});
|
|
155
159
|
}
|
|
156
|
-
|
|
160
|
+
deprecate(fullName, version, reason) {
|
|
157
161
|
return __awaiter(this, void 0, void 0, function* () {
|
|
158
|
-
|
|
159
|
-
return [];
|
|
160
|
-
}
|
|
161
|
-
return null;
|
|
162
|
+
throw new Error(`File system can't deprecate packages!`);
|
|
162
163
|
});
|
|
163
164
|
}
|
|
164
165
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RegistryProvider = void 0;
|
|
4
4
|
const FileSystem_1 = require("./FileSystem");
|
|
5
|
-
const
|
|
5
|
+
const RegistryV2_1 = require("./RegistryV2");
|
|
6
6
|
const RegistryType_1 = require("./RegistryType");
|
|
7
7
|
var RegistryProvider;
|
|
8
8
|
(function (RegistryProvider) {
|
|
@@ -12,10 +12,10 @@ var RegistryProvider;
|
|
|
12
12
|
if (endpoint) {
|
|
13
13
|
endpoint = endpoint.toLowerCase().trim();
|
|
14
14
|
}
|
|
15
|
-
if (!endpoint || endpoint ===
|
|
15
|
+
if (!endpoint || endpoint === RegistryV2_1.PUBLIC_RESERVED_KEYWORD) {
|
|
16
16
|
foundRegistry = RegistryProvider.registry.find(o => o.getRegistryType() === RegistryType_1.RegistryType.PUBLIC);
|
|
17
17
|
if (!foundRegistry) {
|
|
18
|
-
foundRegistry = new
|
|
18
|
+
foundRegistry = new RegistryV2_1.RegistryV2(RegistryV2_1.PUBLIC_RESERVED_KEYWORD);
|
|
19
19
|
RegistryProvider.registry.push(foundRegistry);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
@@ -25,7 +25,7 @@ var RegistryProvider;
|
|
|
25
25
|
else {
|
|
26
26
|
foundRegistry = RegistryProvider.registry.find(o => o.endpoint === endpoint);
|
|
27
27
|
if (!foundRegistry) {
|
|
28
|
-
foundRegistry = new
|
|
28
|
+
foundRegistry = new RegistryV2_1.RegistryV2(endpoint, endpoint);
|
|
29
29
|
RegistryProvider.registry.push(foundRegistry);
|
|
30
30
|
}
|
|
31
31
|
}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { RegistryType } from "./RegistryType";
|
|
2
|
-
import {
|
|
2
|
+
import { Package, Ping, WhoAmI } from "trm-registry-types";
|
|
3
3
|
import { TrmArtifact } from "../trmPackage/TrmArtifact";
|
|
4
4
|
import { AbstractRegistry } from "./AbstractRegistry";
|
|
5
5
|
export declare const PUBLIC_RESERVED_KEYWORD = "public";
|
|
6
|
-
export declare class
|
|
6
|
+
export declare class RegistryV2 implements AbstractRegistry {
|
|
7
7
|
endpoint: string;
|
|
8
8
|
name: string;
|
|
9
|
+
private _cache;
|
|
9
10
|
private _registryType;
|
|
10
11
|
private _axiosInstance;
|
|
11
12
|
private _authData;
|
|
12
|
-
private
|
|
13
|
-
private _whoami;
|
|
13
|
+
private _userAgent;
|
|
14
14
|
constructor(endpoint: string, name?: string);
|
|
15
|
+
private getDefaultAxiosHeaders;
|
|
15
16
|
compare(registry: AbstractRegistry): boolean;
|
|
16
17
|
getRegistryType(): RegistryType;
|
|
17
18
|
authenticate(defaultData?: any): Promise<AbstractRegistry>;
|
|
@@ -21,10 +22,10 @@ export declare class Registry implements AbstractRegistry {
|
|
|
21
22
|
getAuthData(): any;
|
|
22
23
|
ping(): Promise<Ping>;
|
|
23
24
|
whoAmI(): Promise<WhoAmI>;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
unpublish(
|
|
29
|
-
|
|
25
|
+
getPackage(fullName: string, version?: string): Promise<Package>;
|
|
26
|
+
downloadArtifact(fullName: string, version?: string): Promise<TrmArtifact>;
|
|
27
|
+
validatePublish(fullName: string, version?: string): Promise<void>;
|
|
28
|
+
publish(fullName: string, version: string, artifact: TrmArtifact, readme?: string): Promise<Package>;
|
|
29
|
+
unpublish(fullName: string, version: string): Promise<void>;
|
|
30
|
+
deprecate(fullName: string, version: string, reason: string): Promise<void>;
|
|
30
31
|
}
|
|
@@ -45,7 +45,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
45
45
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
46
46
|
};
|
|
47
47
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
-
exports.
|
|
48
|
+
exports.RegistryV2 = exports.PUBLIC_RESERVED_KEYWORD = void 0;
|
|
49
49
|
const RegistryType_1 = require("./RegistryType");
|
|
50
50
|
const normalize_url_1 = __importDefault(require("@esm2cjs/normalize-url"));
|
|
51
51
|
const axios_1 = require("axios");
|
|
@@ -57,12 +57,14 @@ const crypto_1 = require("crypto");
|
|
|
57
57
|
const protocol_1 = require("../protocol");
|
|
58
58
|
const opener_1 = __importDefault(require("opener"));
|
|
59
59
|
const commons_1 = require("../commons");
|
|
60
|
-
const
|
|
60
|
+
const node_cache_1 = __importDefault(require("node-cache"));
|
|
61
|
+
const AXIOS_CTX = "RegistryV2";
|
|
61
62
|
exports.PUBLIC_RESERVED_KEYWORD = 'public';
|
|
62
|
-
class
|
|
63
|
+
class RegistryV2 {
|
|
63
64
|
constructor(endpoint, name = 'Unknown') {
|
|
64
65
|
this.endpoint = endpoint;
|
|
65
66
|
this.name = name;
|
|
67
|
+
this._cache = new node_cache_1.default({ stdTTL: 60, useClones: false });
|
|
66
68
|
var envEndpoint = process.env.TRM_PUBLIC_REGISTRY_ENDPOINT;
|
|
67
69
|
trm_commons_1.Logger.log(`TRM_PUBLIC_REGISTRY_ENDPOINT Environment variable: ${envEndpoint}`, true);
|
|
68
70
|
if (!envEndpoint || envEndpoint.trim().toLowerCase() === exports.PUBLIC_RESERVED_KEYWORD) {
|
|
@@ -92,11 +94,23 @@ class Registry {
|
|
|
92
94
|
throw new Error(`Registry address length is too long! Maximum allowed is 100.`);
|
|
93
95
|
}
|
|
94
96
|
this._axiosInstance = (0, commons_1.getAxiosInstance)({
|
|
95
|
-
baseURL: this.endpoint
|
|
97
|
+
baseURL: this.endpoint,
|
|
98
|
+
headers: this.getDefaultAxiosHeaders()
|
|
96
99
|
}, AXIOS_CTX);
|
|
97
100
|
}
|
|
101
|
+
getDefaultAxiosHeaders() {
|
|
102
|
+
var axiosHeaders = new axios_1.AxiosHeaders();
|
|
103
|
+
if (!this._userAgent) {
|
|
104
|
+
try {
|
|
105
|
+
this._userAgent = `trm-core v${(0, commons_1.getNodePackage)().version}`;
|
|
106
|
+
}
|
|
107
|
+
catch (_a) { }
|
|
108
|
+
}
|
|
109
|
+
axiosHeaders.setUserAgent(this._userAgent || `trm-core`);
|
|
110
|
+
return axiosHeaders;
|
|
111
|
+
}
|
|
98
112
|
compare(registry) {
|
|
99
|
-
if (registry instanceof
|
|
113
|
+
if (registry instanceof RegistryV2) {
|
|
100
114
|
return this.endpoint === registry.endpoint;
|
|
101
115
|
}
|
|
102
116
|
else {
|
|
@@ -110,25 +124,25 @@ class Registry {
|
|
|
110
124
|
return __awaiter(this, arguments, void 0, function* (defaultData = {}) {
|
|
111
125
|
trm_commons_1.Logger.log(`Registry authentication request`, true);
|
|
112
126
|
const ping = yield this.ping();
|
|
113
|
-
trm_commons_1.Logger.log(`Registry authentication type is: ${ping.
|
|
114
|
-
if (ping.
|
|
115
|
-
if (ping.
|
|
127
|
+
trm_commons_1.Logger.log(`Registry authentication type is: ${ping.authentication_type}`, true);
|
|
128
|
+
if (ping.authentication_type !== trm_registry_types_1.AuthenticationType.NO_AUTH) {
|
|
129
|
+
if (ping.authentication_type === trm_registry_types_1.AuthenticationType.BASIC) {
|
|
116
130
|
yield this._basicAuth(defaultData);
|
|
117
131
|
}
|
|
118
|
-
if (ping.
|
|
132
|
+
if (ping.authentication_type === trm_registry_types_1.AuthenticationType.OAUTH2) {
|
|
119
133
|
yield this._oauth2(defaultData);
|
|
120
134
|
}
|
|
121
|
-
if (ping.
|
|
135
|
+
if (ping.authentication_type === trm_registry_types_1.AuthenticationType.TOKEN) {
|
|
122
136
|
yield this._tokenAuth(defaultData);
|
|
123
137
|
}
|
|
124
138
|
}
|
|
125
|
-
this.
|
|
139
|
+
this._cache.flushAll();
|
|
126
140
|
return this;
|
|
127
141
|
});
|
|
128
142
|
}
|
|
129
143
|
_basicAuth() {
|
|
130
144
|
return __awaiter(this, arguments, void 0, function* (defaultData = {}) {
|
|
131
|
-
var axiosHeaders =
|
|
145
|
+
var axiosHeaders = this.getDefaultAxiosHeaders();
|
|
132
146
|
var axiosDefaults = {
|
|
133
147
|
baseURL: this.endpoint,
|
|
134
148
|
headers: axiosHeaders
|
|
@@ -166,7 +180,7 @@ class Registry {
|
|
|
166
180
|
}
|
|
167
181
|
_tokenAuth() {
|
|
168
182
|
return __awaiter(this, arguments, void 0, function* (defaultData = {}) {
|
|
169
|
-
var axiosHeaders =
|
|
183
|
+
var axiosHeaders = this.getDefaultAxiosHeaders();
|
|
170
184
|
var axiosDefaults = {
|
|
171
185
|
baseURL: this.endpoint,
|
|
172
186
|
headers: axiosHeaders
|
|
@@ -186,7 +200,7 @@ class Registry {
|
|
|
186
200
|
when: !token
|
|
187
201
|
}]);
|
|
188
202
|
token = token || inq1.token;
|
|
189
|
-
axiosHeaders.setAuthorization(`
|
|
203
|
+
axiosHeaders.setAuthorization(`Bearer ${token}`);
|
|
190
204
|
this._axiosInstance = (0, commons_1.getAxiosInstance)(axiosDefaults, AXIOS_CTX);
|
|
191
205
|
this._authData = {
|
|
192
206
|
token
|
|
@@ -248,13 +262,13 @@ class Registry {
|
|
|
248
262
|
runAuthFlow = true;
|
|
249
263
|
}
|
|
250
264
|
if (runAuthFlow) {
|
|
251
|
-
const oAuth2 = ping.
|
|
265
|
+
const oAuth2 = ping.authentication_data;
|
|
252
266
|
const oAuth2ProtocolPath = "//oauth2";
|
|
253
267
|
const sRedirectUri = `trm:${oAuth2ProtocolPath}`;
|
|
254
|
-
const oAuth2Url = new URL(oAuth2.
|
|
268
|
+
const oAuth2Url = new URL(oAuth2.authorization_url);
|
|
255
269
|
const oAuth2State = (0, crypto_1.randomUUID)();
|
|
256
|
-
oAuth2Url.searchParams.append("client_id", oAuth2.
|
|
257
|
-
oAuth2Url.searchParams.append("response_type", oAuth2.
|
|
270
|
+
oAuth2Url.searchParams.append("client_id", oAuth2.client_id);
|
|
271
|
+
oAuth2Url.searchParams.append("response_type", oAuth2.response_type);
|
|
258
272
|
oAuth2Url.searchParams.append("redirect_uri", sRedirectUri);
|
|
259
273
|
oAuth2Url.searchParams.append("state", oAuth2State);
|
|
260
274
|
var sAuth2Url = oAuth2Url.toString();
|
|
@@ -291,7 +305,7 @@ class Registry {
|
|
|
291
305
|
}
|
|
292
306
|
}
|
|
293
307
|
this._authData = authData;
|
|
294
|
-
var axiosHeaders =
|
|
308
|
+
var axiosHeaders = this.getDefaultAxiosHeaders();
|
|
295
309
|
var axiosDefaults = {
|
|
296
310
|
baseURL: this.endpoint,
|
|
297
311
|
headers: axiosHeaders
|
|
@@ -305,97 +319,155 @@ class Registry {
|
|
|
305
319
|
}
|
|
306
320
|
ping() {
|
|
307
321
|
return __awaiter(this, void 0, void 0, function* () {
|
|
308
|
-
|
|
322
|
+
var data = this._cache.get('ping');
|
|
323
|
+
if (!data) {
|
|
309
324
|
try {
|
|
310
|
-
|
|
325
|
+
data = (yield this._axiosInstance.get('/', {
|
|
326
|
+
headers: {}
|
|
327
|
+
})).data;
|
|
311
328
|
}
|
|
312
329
|
catch (e) {
|
|
313
|
-
|
|
330
|
+
if (e.errors) {
|
|
331
|
+
e.errors.forEach(err => trm_commons_1.Logger.error(err.message));
|
|
332
|
+
}
|
|
333
|
+
data = new Error(`Registry "${this.name}" cannot be reached.`);
|
|
314
334
|
}
|
|
335
|
+
this._cache.set('ping', data);
|
|
336
|
+
}
|
|
337
|
+
if (data instanceof Error) {
|
|
338
|
+
throw data;
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
return data;
|
|
315
342
|
}
|
|
316
|
-
return this._ping;
|
|
317
343
|
});
|
|
318
344
|
}
|
|
319
345
|
whoAmI() {
|
|
320
346
|
return __awaiter(this, void 0, void 0, function* () {
|
|
321
|
-
|
|
322
|
-
|
|
347
|
+
var data = this._cache.get('whoami');
|
|
348
|
+
if (!data) {
|
|
349
|
+
try {
|
|
350
|
+
data = (yield this._axiosInstance.get('/whoami')).data;
|
|
351
|
+
}
|
|
352
|
+
catch (e) {
|
|
353
|
+
data = e;
|
|
354
|
+
}
|
|
355
|
+
this._cache.set('whoami', data);
|
|
356
|
+
}
|
|
357
|
+
if (data instanceof Error) {
|
|
358
|
+
throw data;
|
|
359
|
+
}
|
|
360
|
+
else {
|
|
361
|
+
return data;
|
|
323
362
|
}
|
|
324
|
-
return this._whoami;
|
|
325
363
|
});
|
|
326
364
|
}
|
|
327
|
-
|
|
328
|
-
return __awaiter(this,
|
|
329
|
-
var
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
365
|
+
getPackage(fullName_1) {
|
|
366
|
+
return __awaiter(this, arguments, void 0, function* (fullName, version = 'latest') {
|
|
367
|
+
var data = this._cache.get(`package-${fullName}-${version}`);
|
|
368
|
+
if (!data) {
|
|
369
|
+
var ttl;
|
|
370
|
+
try {
|
|
371
|
+
data = (yield this._axiosInstance.get(`/package/${fullName}`, {
|
|
372
|
+
params: {
|
|
373
|
+
version
|
|
374
|
+
}
|
|
375
|
+
})).data;
|
|
376
|
+
if (data.download_link_expiry) {
|
|
377
|
+
try {
|
|
378
|
+
ttl = Math.max(0, Math.floor((data.download_link_expiry - Date.now()) / 1000));
|
|
379
|
+
}
|
|
380
|
+
catch (_a) { }
|
|
335
381
|
}
|
|
336
|
-
}
|
|
382
|
+
}
|
|
383
|
+
catch (e) {
|
|
384
|
+
data = e;
|
|
385
|
+
}
|
|
386
|
+
this._cache.set(`package-${fullName}-${version}`, data, ttl);
|
|
387
|
+
}
|
|
388
|
+
if (data instanceof Error) {
|
|
389
|
+
throw data;
|
|
390
|
+
}
|
|
391
|
+
else {
|
|
392
|
+
return data;
|
|
393
|
+
}
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
downloadArtifact(fullName_1) {
|
|
397
|
+
return __awaiter(this, arguments, void 0, function* (fullName, version = 'latest') {
|
|
398
|
+
var buffer;
|
|
399
|
+
const packageData = yield this.getPackage(fullName, version);
|
|
400
|
+
try {
|
|
401
|
+
buffer = (yield this._axiosInstance.get(packageData.download_link, {
|
|
402
|
+
headers: {
|
|
403
|
+
'Accept': 'application/octet-stream',
|
|
404
|
+
},
|
|
405
|
+
maxRedirects: 10,
|
|
406
|
+
responseType: 'arraybuffer',
|
|
407
|
+
validateStatus: s => s >= 200 && s < 400,
|
|
408
|
+
})).data;
|
|
337
409
|
}
|
|
338
410
|
catch (e) {
|
|
339
|
-
|
|
411
|
+
trm_commons_1.Logger.error(e.toString(), true);
|
|
412
|
+
trm_commons_1.Logger.error(`Failed to fetch package at ${packageData.download_link}: ${e.message}`);
|
|
413
|
+
throw e;
|
|
340
414
|
}
|
|
341
|
-
return
|
|
415
|
+
return new TrmArtifact_1.TrmArtifact(buffer);
|
|
342
416
|
});
|
|
343
417
|
}
|
|
344
|
-
|
|
345
|
-
return __awaiter(this, arguments, void 0, function* (
|
|
346
|
-
const
|
|
418
|
+
validatePublish(fullName_1) {
|
|
419
|
+
return __awaiter(this, arguments, void 0, function* (fullName, version = 'latest') {
|
|
420
|
+
const status = (yield this._axiosInstance.get(`/publish/check/${fullName}`, {
|
|
347
421
|
params: {
|
|
348
|
-
name,
|
|
349
422
|
version
|
|
350
423
|
}
|
|
351
|
-
})).
|
|
352
|
-
|
|
424
|
+
})).status;
|
|
425
|
+
if (status !== 204) {
|
|
426
|
+
throw new Error(`Package cannot be published`);
|
|
427
|
+
}
|
|
353
428
|
});
|
|
354
429
|
}
|
|
355
|
-
|
|
356
|
-
return __awaiter(this,
|
|
357
|
-
const
|
|
430
|
+
publish(fullName, version, artifact, readme) {
|
|
431
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
432
|
+
const fileName = `${fullName}_v${version}`.replace('.', '_') + '.trm';
|
|
433
|
+
const formData = new FormData.default();
|
|
434
|
+
formData.append('artifact', artifact.binary, {
|
|
435
|
+
filename: fileName,
|
|
436
|
+
contentType: 'application/octet-stream'
|
|
437
|
+
});
|
|
438
|
+
if (readme) {
|
|
439
|
+
formData.append('readme', Buffer.from(readme), {
|
|
440
|
+
filename: 'readme.md',
|
|
441
|
+
contentType: 'text/markdown'
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
return (yield this._axiosInstance.post(`/publish/${fullName}`, formData, {
|
|
358
445
|
params: {
|
|
359
|
-
name,
|
|
360
446
|
version
|
|
361
447
|
},
|
|
362
|
-
headers: {
|
|
363
|
-
'Accept': 'application/octet-stream'
|
|
364
|
-
},
|
|
365
|
-
responseType: 'arraybuffer'
|
|
366
|
-
})).data;
|
|
367
|
-
return new TrmArtifact_1.TrmArtifact(response);
|
|
368
|
-
});
|
|
369
|
-
}
|
|
370
|
-
publishArtifact(packageName, version, artifact, readme) {
|
|
371
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
372
|
-
const fileName = `${packageName}@${version}`.replace('.', '_') + '.trm';
|
|
373
|
-
const formData = new FormData.default();
|
|
374
|
-
formData.append('artifact', artifact.binary, fileName);
|
|
375
|
-
formData.append('readme', readme);
|
|
376
|
-
yield this._axiosInstance.post('/publish', formData, {
|
|
377
448
|
headers: formData.getHeaders()
|
|
378
|
-
});
|
|
449
|
+
})).data;
|
|
379
450
|
});
|
|
380
451
|
}
|
|
381
|
-
unpublish(
|
|
452
|
+
unpublish(fullName, version) {
|
|
382
453
|
return __awaiter(this, void 0, void 0, function* () {
|
|
383
|
-
yield this._axiosInstance.post(
|
|
384
|
-
|
|
385
|
-
|
|
454
|
+
yield this._axiosInstance.post(`/unpublish/${fullName}`, null, {
|
|
455
|
+
params: {
|
|
456
|
+
version
|
|
457
|
+
}
|
|
386
458
|
});
|
|
387
459
|
});
|
|
388
460
|
}
|
|
389
|
-
|
|
461
|
+
deprecate(fullName, version, reason) {
|
|
390
462
|
return __awaiter(this, void 0, void 0, function* () {
|
|
391
|
-
|
|
463
|
+
yield this._axiosInstance.post(`/deprecate/${fullName}`, {
|
|
464
|
+
deprecate_note: reason
|
|
465
|
+
}, {
|
|
392
466
|
params: {
|
|
393
|
-
|
|
394
|
-
version: versionRange
|
|
467
|
+
version
|
|
395
468
|
}
|
|
396
|
-
})
|
|
397
|
-
return response;
|
|
469
|
+
});
|
|
398
470
|
});
|
|
399
471
|
}
|
|
400
472
|
}
|
|
401
|
-
exports.
|
|
473
|
+
exports.RegistryV2 = RegistryV2;
|
package/dist/registry/index.d.ts
CHANGED
package/dist/registry/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./RegistryV2"), exports);
|
|
18
18
|
__exportStar(require("./RegistryType"), exports);
|
|
19
19
|
__exportStar(require("./AbstractRegistry"), exports);
|
|
20
20
|
__exportStar(require("./FileSystem"), exports);
|
|
@@ -6,7 +6,7 @@ import { TrmPackage } from "../trmPackage";
|
|
|
6
6
|
import { InstallPackage } from "./InstallPackage";
|
|
7
7
|
export interface ISystemConnectorBase {
|
|
8
8
|
getTransportStatus: (trkorr: components.TRKORR) => Promise<string>;
|
|
9
|
-
|
|
9
|
+
getWbTransports: (trmPackage?: string | TrmPackage) => Promise<Transport[]>;
|
|
10
10
|
getSourceTrkorr: () => Promise<components.TRKORR[]>;
|
|
11
11
|
getIgnoredTrkorr: () => Promise<components.TRKORR[]>;
|
|
12
12
|
getObject: (pgmid: components.PGMID, object: components.TROBJTYPE, objName: components.SOBJ_NAME) => Promise<struct.TADIR>;
|
|
@@ -19,7 +19,7 @@ export declare namespace SystemConnector {
|
|
|
19
19
|
function closeConnection(): Promise<void>;
|
|
20
20
|
function checkConnection(): Promise<boolean>;
|
|
21
21
|
function getTransportStatus(trkorr: TRKORR): Promise<string>;
|
|
22
|
-
function
|
|
22
|
+
function getWbTransports(trmPackage?: string | TrmPackage): Promise<Transport[]>;
|
|
23
23
|
function getInstalledPackages(includeSources: boolean, refresh?: boolean, includeLocals?: boolean): Promise<TrmPackage[]>;
|
|
24
24
|
function getDevclass(devclass: DEVCLASS): Promise<TDEVC>;
|
|
25
25
|
function getTransportTargets(): Promise<TMSCSYS[]>;
|
|
@@ -79,13 +79,13 @@ var SystemConnector;
|
|
|
79
79
|
});
|
|
80
80
|
}
|
|
81
81
|
SystemConnector.getTransportStatus = getTransportStatus;
|
|
82
|
-
function
|
|
82
|
+
function getWbTransports(trmPackage) {
|
|
83
83
|
return __awaiter(this, void 0, void 0, function* () {
|
|
84
84
|
yield checkSystemConnector();
|
|
85
|
-
return SystemConnector.systemConnector.
|
|
85
|
+
return SystemConnector.systemConnector.getWbTransports(trmPackage);
|
|
86
86
|
});
|
|
87
87
|
}
|
|
88
|
-
SystemConnector.
|
|
88
|
+
SystemConnector.getWbTransports = getWbTransports;
|
|
89
89
|
function getInstalledPackages(includeSources, refresh, includeLocals) {
|
|
90
90
|
return __awaiter(this, void 0, void 0, function* () {
|
|
91
91
|
yield checkSystemConnector();
|
|
@@ -29,7 +29,7 @@ export declare abstract class SystemConnectorBase implements ISystemConnectorBas
|
|
|
29
29
|
protected abstract getInstalledPackagesBackend(): Promise<struct.ZTY_TRM_PACKAGE[]>;
|
|
30
30
|
constructor();
|
|
31
31
|
getTransportStatus(trkorr: TRKORR): Promise<string>;
|
|
32
|
-
|
|
32
|
+
getWbTransports(trmPackage?: string | TrmPackage): Promise<Transport[]>;
|
|
33
33
|
getSourceTrkorr(refresh?: boolean): Promise<TRKORR[]>;
|
|
34
34
|
getObject(pgmid: PGMID, object: TROBJTYPE, objName: SOBJ_NAME): Promise<TADIR>;
|
|
35
35
|
getIgnoredTrkorr(refresh?: boolean): Promise<TRKORR[]>;
|