@steedos/service-package-registry 2.5.14-beta.6 → 2.5.14-beta.7
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.
|
@@ -35,6 +35,8 @@ const appendToPackagesConfig = (packageName, options)=>{
|
|
|
35
35
|
loadPackage(packageName, packagePath);
|
|
36
36
|
}
|
|
37
37
|
}else{
|
|
38
|
+
// 对于已经存在的软件包, 不支持使用传入的enable控制软件包状态.
|
|
39
|
+
delete options.enable
|
|
38
40
|
packages[packageName] = Object.assign(packages[packageName], options)
|
|
39
41
|
}
|
|
40
42
|
}else{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steedos/service-package-registry",
|
|
3
|
-
"version": "2.5.14-beta.
|
|
3
|
+
"version": "2.5.14-beta.7",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "package.service.js",
|
|
6
6
|
"scripts": {
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
"author": "",
|
|
10
10
|
"license": "ISC",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@steedos/auth": "2.5.14-beta.
|
|
13
|
-
"@steedos/core": "2.5.14-beta.
|
|
14
|
-
"@steedos/metadata-core": "2.5.14-beta.
|
|
15
|
-
"@steedos/objectql": "2.5.14-beta.
|
|
16
|
-
"@steedos/service-package-loader": "2.5.14-beta.
|
|
12
|
+
"@steedos/auth": "2.5.14-beta.7",
|
|
13
|
+
"@steedos/core": "2.5.14-beta.7",
|
|
14
|
+
"@steedos/metadata-core": "2.5.14-beta.7",
|
|
15
|
+
"@steedos/objectql": "2.5.14-beta.7",
|
|
16
|
+
"@steedos/service-package-loader": "2.5.14-beta.7",
|
|
17
17
|
"fs-extra": "8.1.0",
|
|
18
18
|
"i18next": "20.3.2",
|
|
19
19
|
"json-stringify-safe": "5.0.1",
|
|
@@ -31,5 +31,5 @@
|
|
|
31
31
|
"publishConfig": {
|
|
32
32
|
"access": "public"
|
|
33
33
|
},
|
|
34
|
-
"gitHead": "
|
|
34
|
+
"gitHead": "49d045d62677fd45d4f20fde49ecc23f01ef0d33"
|
|
35
35
|
}
|
|
@@ -36,11 +36,6 @@ module.exports = {
|
|
|
36
36
|
name: this.name,
|
|
37
37
|
isPackage: false
|
|
38
38
|
},
|
|
39
|
-
STEEDOS_CLOUD_URL: process.env.STEEDOS_CLOUD_URL ? process.env.STEEDOS_CLOUD_URL : 'https://console.steedos.cn',
|
|
40
|
-
STEEDOS_CLOUD_SPACE_ID: process.env.STEEDOS_CLOUD_SPACE_ID,
|
|
41
|
-
STEEDOS_CLOUD_API_KEY: process.env.STEEDOS_CLOUD_API_KEY,
|
|
42
|
-
STEEDOS_REGISTRY_URL: process.env.STEEDOS_REGISTRY_URL ? process.env.STEEDOS_REGISTRY_URL : 'https://registry.steedos.cn/',
|
|
43
|
-
STEEDOS_CLOUD_SYNC_PACKAGES: validator.toBoolean(process.env.STEEDOS_CLOUD_SYNC_PACKAGES || 'false', true),
|
|
44
39
|
STEEDOS_INITIAL_PACKAGES: process.env.STEEDOS_INITIAL_PACKAGES
|
|
45
40
|
},
|
|
46
41
|
|
|
@@ -164,68 +159,6 @@ module.exports = {
|
|
|
164
159
|
return {}
|
|
165
160
|
}
|
|
166
161
|
},
|
|
167
|
-
getCloudSaasPurchasedPackages:{
|
|
168
|
-
async handler(ctx) {
|
|
169
|
-
try {
|
|
170
|
-
|
|
171
|
-
const user = ctx.meta.user;
|
|
172
|
-
if(!user.is_space_admin){
|
|
173
|
-
throw new Error('not permission!');
|
|
174
|
-
}
|
|
175
|
-
return await this.getCloudSaasPurchasedPackages();
|
|
176
|
-
} catch (error) {
|
|
177
|
-
throw new MoleculerError(error.message, 500, "ERR_SOMETHING");
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
},
|
|
181
|
-
installPurchasedPackages: {
|
|
182
|
-
async handler(ctx){
|
|
183
|
-
const installErrors = {};
|
|
184
|
-
const installPackages = [];
|
|
185
|
-
try {
|
|
186
|
-
const user = ctx.meta.user;
|
|
187
|
-
if(!user.is_space_admin){
|
|
188
|
-
throw new Error('not permission!');
|
|
189
|
-
}
|
|
190
|
-
try {
|
|
191
|
-
await this.loginSteedosRegistry();
|
|
192
|
-
console.info(`login steedos registry success`);
|
|
193
|
-
} catch (error) {
|
|
194
|
-
// console.error(`login steedos registry fail: `, error.message);
|
|
195
|
-
}
|
|
196
|
-
const settings = this.settings;
|
|
197
|
-
const syncCloudPackages = settings.STEEDOS_CLOUD_SYNC_PACKAGES;
|
|
198
|
-
let result = null;
|
|
199
|
-
if(syncCloudPackages){
|
|
200
|
-
result = await this.getCloudSaasPurchasedPackages();
|
|
201
|
-
}
|
|
202
|
-
if(result){
|
|
203
|
-
for (const _package of result.packages) {
|
|
204
|
-
try {
|
|
205
|
-
const { name, version, label, description } = _package
|
|
206
|
-
let enable = true; //安装已购买的软件包时先默认启用
|
|
207
|
-
//TODO 处理 registry_url
|
|
208
|
-
// 安装最新版
|
|
209
|
-
const packageInfo = await this.installPackage(name, null, label, description, enable, ctx.broker);
|
|
210
|
-
installPackages.push(packageInfo)
|
|
211
|
-
} catch (error) {
|
|
212
|
-
if(error.stderr){
|
|
213
|
-
installErrors[_package.name] = error.stderr
|
|
214
|
-
}else{
|
|
215
|
-
installErrors[_package.name] = error.message
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
return {
|
|
221
|
-
installPackages: installPackages,
|
|
222
|
-
installErrors: installErrors
|
|
223
|
-
}
|
|
224
|
-
} catch (error) {
|
|
225
|
-
throw new MoleculerError(error.message, 500, "ERR_SOMETHING");
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
},
|
|
229
162
|
getPackageVersions: {
|
|
230
163
|
async handler(ctx) {
|
|
231
164
|
const { module } = ctx.params
|
|
@@ -245,12 +178,6 @@ module.exports = {
|
|
|
245
178
|
if(!user.is_space_admin){
|
|
246
179
|
throw new Error('not permission!');
|
|
247
180
|
}
|
|
248
|
-
try {
|
|
249
|
-
await this.loginSteedosRegistry();
|
|
250
|
-
console.info(`login steedos registry success`);
|
|
251
|
-
} catch (error) {
|
|
252
|
-
// console.error(`login steedos registry fail: `, error.message);
|
|
253
|
-
}
|
|
254
181
|
let { module, version, url, auth, registry_url } = ctx.params
|
|
255
182
|
const enable = true;
|
|
256
183
|
return await this.installPackageFromUrl(module, version, url, auth, enable, registry_url, ctx.broker)
|
|
@@ -301,47 +228,6 @@ module.exports = {
|
|
|
301
228
|
installPackage: {
|
|
302
229
|
async handler(module, version, label, description, enable, broker) {
|
|
303
230
|
return await loader.installPackage(broker, {module, version, label, description, enable})
|
|
304
|
-
}
|
|
305
|
-
},
|
|
306
|
-
getCloudSaasPurchasedPackages:{
|
|
307
|
-
async handler() {
|
|
308
|
-
const settings = this.settings;
|
|
309
|
-
const apiKey = settings.STEEDOS_CLOUD_API_KEY || process.env.STEEDOS_CLOUD_API_KEY
|
|
310
|
-
const spaceId = settings.STEEDOS_CLOUD_SPACE_ID || process.env.STEEDOS_CLOUD_SPACE_ID
|
|
311
|
-
const url = settings.STEEDOS_CLOUD_URL
|
|
312
|
-
|
|
313
|
-
if(!apiKey || !spaceId || !url){
|
|
314
|
-
throw new Error(`请配置STEEDOS_CLOUD参数`);
|
|
315
|
-
}
|
|
316
|
-
const headers = Object.assign({}, {'Content-Type': 'application/json'}, { [HEADER_AUTH]: `${AUTH_TYPE} apikey,${apiKey}`});
|
|
317
|
-
const response = await fetch(`${url}/api/shop/product_subscriptions/steedos-packages`, {
|
|
318
|
-
method: 'GET', headers: headers
|
|
319
|
-
});
|
|
320
|
-
|
|
321
|
-
const result = await response.json();
|
|
322
|
-
|
|
323
|
-
if(result.status === 'error'){
|
|
324
|
-
throw new Error(`${url}: ${result.message}`)
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
const packages = [];
|
|
328
|
-
|
|
329
|
-
_.each(result.data, (item)=>{
|
|
330
|
-
if(item.product){
|
|
331
|
-
let isExist = _.find(packages, (_package)=>{
|
|
332
|
-
return _package.name === item.product.sku
|
|
333
|
-
})
|
|
334
|
-
if(!isExist){
|
|
335
|
-
packages.push({
|
|
336
|
-
name: item.product.sku,
|
|
337
|
-
version: null, //始终安装latest最新版
|
|
338
|
-
label: item.product.name,
|
|
339
|
-
description: item.product.description || ''
|
|
340
|
-
})
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
})
|
|
344
|
-
return { packages : packages}
|
|
345
231
|
}
|
|
346
232
|
},
|
|
347
233
|
getPackageVersions: {
|
|
@@ -400,28 +286,6 @@ module.exports = {
|
|
|
400
286
|
}
|
|
401
287
|
}
|
|
402
288
|
|
|
403
|
-
const settings = this.settings;
|
|
404
|
-
if (url && url.startsWith(settings.STEEDOS_CLOUD_URL + '/api/pkg/download')) {
|
|
405
|
-
const apiKey = settings.STEEDOS_CLOUD_API_KEY || process.env.STEEDOS_CLOUD_API_KEY
|
|
406
|
-
const spaceId = settings.STEEDOS_CLOUD_SPACE_ID || process.env.STEEDOS_CLOUD_SPACE_ID
|
|
407
|
-
const cloudUrl = settings.STEEDOS_CLOUD_URL
|
|
408
|
-
|
|
409
|
-
if (!apiKey || !spaceId || !cloudUrl) {
|
|
410
|
-
throw new Error(`请配置STEEDOS_CLOUD参数`);
|
|
411
|
-
}
|
|
412
|
-
const headers = Object.assign({}, { 'Content-Type': 'application/json' }, { [HEADER_AUTH]: `${AUTH_TYPE} apikey,${apiKey}` });
|
|
413
|
-
const response = await fetch(url, {
|
|
414
|
-
method: 'POST', headers: headers, body: JSON.stringify({ _authToken: auth })
|
|
415
|
-
});
|
|
416
|
-
|
|
417
|
-
const result = await response.json();
|
|
418
|
-
|
|
419
|
-
if (result.error) {
|
|
420
|
-
throw new Error(`安装失败,软件包URL或认证信息错误`)
|
|
421
|
-
}
|
|
422
|
-
url = `${url}/${result.token}`
|
|
423
|
-
console.log(`url`, url);
|
|
424
|
-
}
|
|
425
289
|
const packagePath = await registry.installModule(module, version, url, registry_url);
|
|
426
290
|
const packageInfo = loader.getPackageInfo(null, packagePath);
|
|
427
291
|
const packageName = packageInfo.name;
|
|
@@ -477,40 +341,6 @@ module.exports = {
|
|
|
477
341
|
return result.data;
|
|
478
342
|
}
|
|
479
343
|
},
|
|
480
|
-
loginSteedosRegistry: {
|
|
481
|
-
async handler() {
|
|
482
|
-
const settings = this.settings;
|
|
483
|
-
// 配置主控地址
|
|
484
|
-
const consoleUrl = settings.STEEDOS_CLOUD_URL;
|
|
485
|
-
if (!consoleUrl) {
|
|
486
|
-
throw new Error('请配置主控地址');
|
|
487
|
-
}
|
|
488
|
-
|
|
489
|
-
// 初始化工作区数据
|
|
490
|
-
// 获取环境变量中工作区信息
|
|
491
|
-
const spaceId = settings.STEEDOS_CLOUD_SPACE_ID || process.env.STEEDOS_CLOUD_SPACE_ID;
|
|
492
|
-
const apiKey = settings.STEEDOS_CLOUD_API_KEY || process.env.STEEDOS_CLOUD_API_KEY;
|
|
493
|
-
|
|
494
|
-
if (!spaceId || !apiKey) {
|
|
495
|
-
throw new Error('请配置环境变量STEEDOS_CLOUD_SPACE_ID和STEEDOS_CLOUD_API_KEY。');
|
|
496
|
-
}
|
|
497
|
-
|
|
498
|
-
const registryUrl = settings.STEEDOS_REGISTRY_URL
|
|
499
|
-
|
|
500
|
-
// 调用接口获取初始化信息
|
|
501
|
-
const { info, scopes } = await this.getSafeScopes(spaceId, apiKey, consoleUrl);
|
|
502
|
-
const { adminPhone } = info;
|
|
503
|
-
if (!adminPhone) {
|
|
504
|
-
throw new Error('缺少工作区信息 工作区名称、管理员姓名、管理员手机号,请检查');
|
|
505
|
-
}
|
|
506
|
-
// let scope = '';
|
|
507
|
-
// if (scopes && scopes.length > 0) {
|
|
508
|
-
// scope = scopes[0];
|
|
509
|
-
// }
|
|
510
|
-
await login.loginToRegistry(adminPhone, apiKey, `${adminPhone}@steedos.com`, registryUrl, undefined);
|
|
511
|
-
login.setYarnrcScopes(scopes, registryUrl);
|
|
512
|
-
}
|
|
513
|
-
},
|
|
514
344
|
initialPackages: {
|
|
515
345
|
async handler(){
|
|
516
346
|
const settings = this.settings;
|
|
@@ -649,12 +479,6 @@ module.exports = {
|
|
|
649
479
|
* Service started lifecycle event handler
|
|
650
480
|
*/
|
|
651
481
|
async started() {
|
|
652
|
-
try {
|
|
653
|
-
await this.loginSteedosRegistry();
|
|
654
|
-
console.info(`login steedos registry success`);
|
|
655
|
-
} catch (error) {
|
|
656
|
-
// console.error(`login steedos registry fail: `, error.message);
|
|
657
|
-
}
|
|
658
482
|
|
|
659
483
|
const PACKAGE_INSTALL_NODE = process.env.PACKAGE_INSTALL_NODE
|
|
660
484
|
if(PACKAGE_INSTALL_NODE){
|
|
@@ -672,19 +496,6 @@ module.exports = {
|
|
|
672
496
|
console.log(`started error`, error)
|
|
673
497
|
}
|
|
674
498
|
|
|
675
|
-
// 新版单包项目加载
|
|
676
|
-
// try {
|
|
677
|
-
// if(fs.existsSync(path.join(process.cwd(), 'package.service.js'))){
|
|
678
|
-
// const packagePath = process.cwd();
|
|
679
|
-
// if(fs.existsSync(packagePath)){
|
|
680
|
-
// const packageInfo = require(path.join(packagePath, 'package.json'));
|
|
681
|
-
// loader.appendToPackagesConfig(`${packageInfo.name}`, {version: packageInfo.version, description: packageInfo.description, local: true, path: util.getPackageRelativePath(process.cwd(), packagePath)});
|
|
682
|
-
// }
|
|
683
|
-
// }
|
|
684
|
-
// } catch (error) {
|
|
685
|
-
// console.log(`started error`, error)
|
|
686
|
-
// }
|
|
687
|
-
|
|
688
499
|
await metadata.uncompressPackages(process.cwd());
|
|
689
500
|
const mPackages = metadata.getAllPackages(process.cwd());
|
|
690
501
|
_.each(mPackages, (packagePath)=>{
|