@steedos/service-package-registry 2.1.10 → 2.1.14

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/service-package-registry",
3
- "version": "2.1.10",
3
+ "version": "2.1.14",
4
4
  "description": "",
5
5
  "main": "package.service.js",
6
6
  "scripts": {
@@ -9,10 +9,14 @@
9
9
  "author": "",
10
10
  "license": "ISC",
11
11
  "dependencies": {
12
- "@node-red/util": "2.0.5",
13
- "@steedos/service-package-loader": "2.1.10",
12
+ "@steedos/service-package-loader": "2.1.14",
14
13
  "fs-extra": "8.1.0",
14
+ "i18next": "20.3.2",
15
+ "json-stringify-safe": "5.0.1",
16
+ "jsonata": "1.8.5",
15
17
  "lodash": "~4.17.21",
18
+ "lodash.clonedeep": "^4.5.0",
19
+ "moment-timezone": "0.5.33",
16
20
  "npm-package-arg": "~8.1.5",
17
21
  "radwag-mass": "~1.0.5"
18
22
  },
@@ -20,5 +24,5 @@
20
24
  "publishConfig": {
21
25
  "access": "public"
22
26
  },
23
- "gitHead": "6c8f1ea04dcf16fddea88eb5298cd7c18742a0fb"
27
+ "gitHead": "342ba8540ab4bf230529947ac1efa1180e144d23"
24
28
  }
@@ -34,6 +34,7 @@ const getPackageMetadata = async (packagePath)=>{
34
34
  Query: '*',
35
35
  Chart: '*',
36
36
  Page: '*',
37
+ Tab: '*',
37
38
  });
38
39
 
39
40
  _.each(result, (metadataItems, metadataType)=>{
@@ -64,7 +65,10 @@ module.exports = {
64
65
  path: __dirname,
65
66
  name: this.name,
66
67
  isPackage: false
67
- }
68
+ },
69
+ STEEDOS_CLOUD_URL: process.env.STEEDOS_CLOUD_URL ? process.env.STEEDOS_CLOUD_URL : 'https://console.steedos.cn',
70
+ STEEDOS_CLOUD_SPACE_ID: process.env.STEEDOS_CLOUD_SPACE_ID,
71
+ STEEDOS_CLOUD_API_KEY: process.env.STEEDOS_CLOUD_API_KEY
68
72
  },
69
73
 
70
74
  /**
@@ -155,10 +159,12 @@ module.exports = {
155
159
  async handler(ctx) {
156
160
  const { module } = ctx.params
157
161
  const packageConfog = await loader.disablePackage(module);
162
+ const metadata = await getPackageMetadata(util.getPackageRelativePath(process.cwd(), packageConfog.path));
158
163
  await ctx.broker.call(`@steedos/service-packages.install`, {
159
164
  serviceInfo: Object.assign({}, packageConfog, {
160
165
  nodeID: ctx.broker.nodeID,
161
- instanceID: ctx.broker.instanceID,
166
+ instanceID: ctx.broker.instanceID,
167
+ metadata: metadata
162
168
  })
163
169
  })
164
170
  return {}
@@ -168,10 +174,12 @@ module.exports = {
168
174
  async handler(ctx) {
169
175
  const { module } = ctx.params
170
176
  const packageConfog = await loader.enablePackage(module);
177
+ const metadata = await getPackageMetadata(util.getPackageRelativePath(process.cwd(), packageConfog.path));
171
178
  await ctx.broker.call(`@steedos/service-packages.install`, {
172
179
  serviceInfo: Object.assign({}, packageConfog, {
173
180
  nodeID: ctx.broker.nodeID,
174
- instanceID: ctx.broker.instanceID,
181
+ instanceID: ctx.broker.instanceID,
182
+ metadata: metadata
175
183
  })
176
184
  })
177
185
  return {}
@@ -202,27 +210,30 @@ module.exports = {
202
210
  },
203
211
  async handler(ctx){
204
212
  const installErrors = {};
213
+ const installPackages = [];
205
214
  try {
206
215
  const user = ctx.meta.user;
207
216
  if(!user.is_space_admin){
208
217
  throw new Error('not permission!');
209
218
  }
210
219
  const result = await this.getCloudSaasPurchasedPackages();
211
- for (const item of result.packages) {
220
+ for (const _package of result.packages) {
212
221
  try {
213
- const { name, version, label, description} = item.package
214
- const { enable } = item
215
- await this.installPackage(name, version, label, description, enable, ctx.broker);
222
+ const { name, version, label, description } = _package
223
+ let enable = true; //安装已购买的软件包时先默认启用
224
+ const packageInfo = await this.installPackage(name, version, label, description, enable, ctx.broker);
225
+ installPackages.push(packageInfo)
216
226
  } catch (error) {
217
227
  if(error.stderr){
218
- installErrors[item.package.name] = error.stderr
228
+ installErrors[_package.name] = error.stderr
219
229
  }else{
220
- installErrors[item.package.name] = error.message
230
+ installErrors[_package.name] = error.message
221
231
  }
222
232
  }
223
233
  }
224
- if(!_.isEmpty(installErrors)){
225
- throw new Error(JSON.stringify(installErrors))
234
+ return {
235
+ installPackages: installPackages,
236
+ installErrors: installErrors
226
237
  }
227
238
  } catch (error) {
228
239
  throw new MoleculerError(error.message, 500, "ERR_SOMETHING");
@@ -274,18 +285,41 @@ module.exports = {
274
285
  },
275
286
  getCloudSaasPurchasedPackages:{
276
287
  async handler() {
277
- const apiKey = process.env.STEEDOS_CLOUD_API_KEY
278
- const spaceId = process.env.STEEDOS_CLOUD_SPACE_ID
279
- const url = process.env.STEEDOS_CLOUD_URL
288
+ const settings = this.settings;
289
+ const apiKey = settings.STEEDOS_CLOUD_API_KEY
290
+ const spaceId = settings.STEEDOS_CLOUD_SPACE_ID
291
+ const url = settings.STEEDOS_CLOUD_URL
280
292
 
281
293
  if(!apiKey || !spaceId || !url){
282
294
  throw new Error(`请配置STEEDOS_CLOUD参数`);
283
295
  }
284
296
  const headers = Object.assign({}, {'Content-Type': 'application/json'}, { [HEADER_AUTH]: `${AUTH_TYPE} apikey,${apiKey}`});
285
- const response = await fetch(`${url}/api/saas/packages/purchased/detail`, {
297
+ const response = await fetch(`${url}/api/shop/product_subscriptions/steedos-packages`, {
286
298
  method: 'GET', headers: headers
287
299
  });
288
- return await response.json()
300
+
301
+ const result = await response.json();
302
+
303
+ if(result.status === 'error'){
304
+ throw new Error(`${url}: ${result.message}`)
305
+ }
306
+
307
+ const packages = [];
308
+
309
+ _.each(result.data, (item)=>{
310
+ let isExist = _.find(packages, (_package)=>{
311
+ return _package.name === item.product.sku
312
+ })
313
+ if(!isExist){
314
+ packages.push({
315
+ name: item.product.sku,
316
+ version: null, //始终安装latest最新版
317
+ label: item.product.name,
318
+ description: item.product.description || ''
319
+ })
320
+ }
321
+ })
322
+ return { packages : packages}
289
323
  }
290
324
  },
291
325
  },