@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/main/default/manager/registry.js +1 -1
- package/main/default/objects/steedos_packages/buttons/install_purchased_packages.button.js +42 -32
- package/main/default/objects/steedos_packages/buttons/uninstall.button.js +1 -1
- package/main/default/objects/steedos_packages/fields/metadata.$.type.field.yml +3 -1
- package/main/default/util/events.js +73 -0
- package/main/default/util/exec.js +91 -0
- package/main/default/util/hooks.js +243 -0
- package/main/default/util/i18n.js +234 -0
- package/main/default/util/index.js +81 -0
- package/main/default/util/log.js +233 -0
- package/main/default/util/util.js +987 -0
- package/package.json +8 -4
- package/package.service.js +50 -16
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steedos/service-package-registry",
|
|
3
|
-
"version": "2.1.
|
|
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
|
-
"@
|
|
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": "
|
|
27
|
+
"gitHead": "342ba8540ab4bf230529947ac1efa1180e144d23"
|
|
24
28
|
}
|
package/package.service.js
CHANGED
|
@@ -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
|
|
220
|
+
for (const _package of result.packages) {
|
|
212
221
|
try {
|
|
213
|
-
const { name, version, label, description} =
|
|
214
|
-
|
|
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[
|
|
228
|
+
installErrors[_package.name] = error.stderr
|
|
219
229
|
}else{
|
|
220
|
-
installErrors[
|
|
230
|
+
installErrors[_package.name] = error.message
|
|
221
231
|
}
|
|
222
232
|
}
|
|
223
233
|
}
|
|
224
|
-
|
|
225
|
-
|
|
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
|
|
278
|
-
const
|
|
279
|
-
const
|
|
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/
|
|
297
|
+
const response = await fetch(`${url}/api/shop/product_subscriptions/steedos-packages`, {
|
|
286
298
|
method: 'GET', headers: headers
|
|
287
299
|
});
|
|
288
|
-
|
|
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
|
},
|