@steedos/service-package-registry 2.2.52-beta.1 → 2.2.52-beta.17

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.
@@ -59,7 +59,8 @@ const loadPackages = async ()=>{
59
59
  paths: [path.join(userDir, 'node_modules')]
60
60
  }))
61
61
  if(packagePath){
62
- await loadPackage(packageName);
62
+ const packageInfo = await loadPackage(packageName);
63
+ appendToPackagesConfig(packageInfo.name, {version: packageInfo.version, description: packageInfo.description, local: false});
63
64
  }
64
65
  } catch (error) {
65
66
  try {
@@ -76,12 +77,10 @@ const loadPackages = async ()=>{
76
77
  packagePath = path.resolve(process.cwd(), packagePath)
77
78
  }
78
79
  if(packagePath){
79
- await loadPackage(packageName, packagePath);
80
+ const packageInfo = await loadPackage(packageName, packagePath);
81
+ appendToPackagesConfig(packageInfo.name, {version: packageInfo.version, description: packageInfo.description, local: true});
80
82
  }
81
83
  }
82
-
83
-
84
-
85
84
  }
86
85
  }
87
86
  }
@@ -120,7 +120,7 @@ router.post('/api/nodes/enable', core.requireAuthentication, async function (req
120
120
  router.get('/api/nodes/versions', core.requireAuthentication, async function (req, res) {
121
121
  const userSession = req.user;
122
122
  const isSpaceAdmin = userSession.is_space_admin;
123
- console.log(`req.query`, req.query)
123
+ // console.log(`req.query`, req.query)
124
124
  const body = req.query;
125
125
  const { module } = body || {};
126
126
  if(!module){
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/service-package-registry",
3
- "version": "2.2.52-beta.1",
3
+ "version": "2.2.52-beta.17",
4
4
  "description": "",
5
5
  "main": "package.service.js",
6
6
  "scripts": {
@@ -9,8 +9,8 @@
9
9
  "author": "",
10
10
  "license": "ISC",
11
11
  "dependencies": {
12
- "@steedos/service-package-license": "2.2.52-beta.1",
13
- "@steedos/service-package-loader": "2.2.52-beta.1",
12
+ "@steedos/service-package-license": "2.2.52-beta.17",
13
+ "@steedos/service-package-loader": "2.2.52-beta.17",
14
14
  "fs-extra": "8.1.0",
15
15
  "i18next": "20.3.2",
16
16
  "json-stringify-safe": "5.0.1",
@@ -18,14 +18,15 @@
18
18
  "lodash": "~4.17.21",
19
19
  "lodash.clonedeep": "^4.5.0",
20
20
  "moment-timezone": "0.5.33",
21
- "npm-package-arg": "~8.1.5",
21
+ "npm-package-arg": "~9.1.0",
22
22
  "npm-registry-client": "8.6.0",
23
23
  "package-json": "^7.0.0",
24
- "radwag-mass": "~1.0.5"
24
+ "radwag-mass": "~1.0.5",
25
+ "validator": "^13.5.2"
25
26
  },
26
27
  "private": false,
27
28
  "publishConfig": {
28
29
  "access": "public"
29
30
  },
30
- "gitHead": "deba56dae254d9d14d80e46a564a49059e5c7a16"
31
+ "gitHead": "ee0fcdafeec2bfe290c33b984f3b2fb40f9f5fac"
31
32
  }
@@ -10,13 +10,13 @@ const packageLicense = require('@steedos/service-package-license');
10
10
  const axios = require('axios');
11
11
  const _ = require(`lodash`);
12
12
  const path = require(`path`);
13
- const objectql = require('@steedos/objectql');
14
13
  const metadataApi = require('@steedos/metadata-api');
15
14
  const util = require('./main/default/manager/util');
16
15
  const fetch = require('node-fetch');
17
16
  const fs = require('fs');
18
17
  const { MoleculerError } = require("moleculer").Errors;
19
-
18
+ const validator = require('validator');
19
+ const npa = require("npm-package-arg");
20
20
  const login = require('./main/default/manager/login');
21
21
 
22
22
  const HEADER_AUTH = 'Authorization';
@@ -75,6 +75,8 @@ module.exports = {
75
75
  STEEDOS_CLOUD_SPACE_ID: process.env.STEEDOS_CLOUD_SPACE_ID,
76
76
  STEEDOS_CLOUD_API_KEY: process.env.STEEDOS_CLOUD_API_KEY,
77
77
  STEEDOS_REGISTRY_URL: process.env.STEEDOS_REGISTRY_URL ? process.env.STEEDOS_REGISTRY_URL : 'https://registry.steedos.cn/',
78
+ STEEDOS_CLOUD_SYNC_PACKAGES: validator.toBoolean(process.env.STEEDOS_CLOUD_SYNC_PACKAGES || 'false', true),
79
+ STEEDOS_INITIAL_PACKAGES: process.env.STEEDOS_INITIAL_PACKAGES
78
80
  },
79
81
 
80
82
  /**
@@ -92,13 +94,6 @@ module.exports = {
92
94
  path: "/getProjectNodes"
93
95
  },
94
96
  async handler(ctx) {
95
- // let schema = objectql.getSteedosSchema();
96
- // let broker = schema.broker;
97
- // const serviceList = broker.registry.getServiceList({ withActions: false });
98
- // const services = _.filter(serviceList, (_service)=>{
99
- // return _service.name == this.name;
100
- // })
101
- // return services;
102
97
  const data = await ctx.broker.call('metadata.filter', {key: `#package_install_node.*`}, {meta: ctx.meta})
103
98
  const nodes = [];
104
99
  _.each(data,(item)=>{
@@ -236,21 +231,29 @@ module.exports = {
236
231
  } catch (error) {
237
232
  console.error(`login steedos registry fail: `, error.message);
238
233
  }
239
- const result = await this.getCloudSaasPurchasedPackages();
234
+ const settings = this.settings;
235
+ const syncCloudPackages = settings.STEEDOS_CLOUD_SYNC_PACKAGES;
236
+ let result = null;
237
+ if(syncCloudPackages){
238
+ result = await this.getCloudSaasPurchasedPackages();
239
+ }
240
240
  //同步软件包许可证
241
241
  await this.broker.call(`@steedos/service-package-license.syncPackagesLicense`);
242
- for (const _package of result.packages) {
243
- try {
244
- const { name, version, label, description } = _package
245
- let enable = true; //安装已购买的软件包时先默认启用
246
- //TODO 处理 registry_url
247
- const packageInfo = await this.installPackage(name, version, label, description, enable, ctx.broker);
248
- installPackages.push(packageInfo)
249
- } catch (error) {
250
- if(error.stderr){
251
- installErrors[_package.name] = error.stderr
252
- }else{
253
- installErrors[_package.name] = error.message
242
+ if(result){
243
+ for (const _package of result.packages) {
244
+ try {
245
+ const { name, version, label, description } = _package
246
+ let enable = true; //安装已购买的软件包时先默认启用
247
+ //TODO 处理 registry_url
248
+ // 安装最新版
249
+ const packageInfo = await this.installPackage(name, null, label, description, enable, ctx.broker);
250
+ installPackages.push(packageInfo)
251
+ } catch (error) {
252
+ if(error.stderr){
253
+ installErrors[_package.name] = error.stderr
254
+ }else{
255
+ installErrors[_package.name] = error.message
256
+ }
254
257
  }
255
258
  }
256
259
  }
@@ -318,6 +321,11 @@ module.exports = {
318
321
  throw new MoleculerError(errorInfo, 500, "ERR_SOMETHING");
319
322
  }
320
323
  }
324
+ },
325
+ initialPackages: {
326
+ async handler(ctx) {
327
+ return await this.initialPackages();
328
+ }
321
329
  }
322
330
  },
323
331
 
@@ -563,6 +571,55 @@ module.exports = {
563
571
  await login.loginToRegistry(adminPhone, apiKey, `${adminPhone}@steedos.com`, registryUrl, undefined);
564
572
  login.setYarnrcScopes(scopes, registryUrl);
565
573
  }
574
+ },
575
+ initialPackages: {
576
+ async handler(){
577
+ const settings = this.settings;
578
+ const packages = settings.STEEDOS_INITIAL_PACKAGES;
579
+ if(_.isString(packages)){
580
+ for (const packageName of packages.split(',')) {
581
+ try {
582
+ const parsed = npa(packageName);
583
+ const installProps = {
584
+ url: null,
585
+ name: null,
586
+ version: null
587
+ };
588
+ switch (parsed.type) {
589
+ case "tag":
590
+ installProps.name = parsed.name;
591
+ installProps.version = parsed.rawSpec;
592
+ break;
593
+ case "version":
594
+ installProps.name = parsed.name;
595
+ installProps.version = parsed.rawSpec;
596
+ break;
597
+ case "range":
598
+ installProps.name = parsed.name;
599
+ installProps.version = parsed.rawSpec;
600
+ break;
601
+ case "directory":
602
+ case "remote":
603
+ case "file":
604
+ case "git":
605
+ installProps.url = parsed.rawSpec;
606
+ break;
607
+ case "alias":
608
+ throw new Error(`not support ${parsed.type}`);
609
+ }
610
+ if(installProps.url){
611
+ //module, version, url, auth, enable, registry_url, broker
612
+ await this.installPackageFromUrl(installProps.url, installProps.version, installProps.url, null, true, null, this.broker);
613
+ }else{
614
+ //module, version, label, description, enable, broker
615
+ await this.installPackage(installProps.name, installProps.version, null, null, true, this.broker);
616
+ }
617
+ } catch (error) {
618
+ this.broker.logger.error(`initialPackages: ${packageName}. ${error.message}`);
619
+ }
620
+ }
621
+ }
622
+ }
566
623
  }
567
624
  },
568
625
 
@@ -581,7 +638,7 @@ module.exports = {
581
638
  await this.loginSteedosRegistry();
582
639
  console.info(`login steedos registry success`);
583
640
  } catch (error) {
584
- console.error(`login steedos registry fail: `, error.message);
641
+ // console.error(`login steedos registry fail: `, error.message);
585
642
  }
586
643
 
587
644
  await this.broker.call(`@steedos/service-package-license.syncPackagesLicense`);