@steedos/service-package-registry 2.5.13-beta.1 → 2.5.13-beta.11
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/client/project_nodes.client.js +2 -2
- package/main/default/manager/loader.js +49 -25
- package/main/default/manager/packages.js +3 -1
- package/main/default/objects/steedos_packages/fields/description.field.yml +1 -1
- package/main/default/objects/steedos_packages/fields/instance_id.field.yml +1 -0
- package/main/default/objects/steedos_packages/fields/node_id.field.yml +1 -0
- package/main/default/objects/steedos_packages/fields/service_name.field.yml +1 -0
- package/main/default/objects/steedos_packages/fields/static.field.yml +4 -0
- package/main/default/routes/nodes.router.js +7 -7
- package/package.json +7 -7
- package/project.package.service.js +74 -23
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Steedos.PackageRegistry = {
|
|
2
2
|
getNodes: function(){
|
|
3
|
-
const projectNodes = Steedos.authRequest('/service/api
|
|
3
|
+
const projectNodes = Steedos.authRequest('/service/api/@steedos/service-project/getProjectNodes', {async: false});
|
|
4
4
|
return projectNodes;
|
|
5
5
|
},
|
|
6
6
|
getNodesSelect: function(){
|
|
7
|
-
const projectNodes = Steedos.authRequest('/service/api
|
|
7
|
+
const projectNodes = Steedos.authRequest('/service/api/@steedos/service-project/getProjectNodes', {async: false});
|
|
8
8
|
let selectOptions = '';
|
|
9
9
|
_.each(projectNodes, function(nodeID){
|
|
10
10
|
selectOptions = selectOptions + `<option value ="${nodeID}">${nodeID}</option>`
|
|
@@ -24,27 +24,43 @@ const appendToPackagesConfig = (packageName, options)=>{
|
|
|
24
24
|
}
|
|
25
25
|
})
|
|
26
26
|
}
|
|
27
|
-
if(
|
|
28
|
-
//如果是修改package name, 在steedos-package.yml位置保持不变
|
|
29
|
-
const newPackages = {};
|
|
30
|
-
_.each(packages, (info, key)=>{
|
|
31
|
-
if(key === changeNamePackage.module){
|
|
32
|
-
delete changeNamePackage.module
|
|
33
|
-
newPackages[packageName] = Object.assign(changeNamePackage, options)
|
|
34
|
-
}else{
|
|
35
|
-
newPackages[key] = info
|
|
36
|
-
}
|
|
37
|
-
})
|
|
38
|
-
packages = newPackages
|
|
39
|
-
}else{
|
|
27
|
+
if(options.static){
|
|
40
28
|
if(!packages[packageName]){
|
|
41
29
|
packages[packageName] = Object.assign({
|
|
42
|
-
enable:
|
|
30
|
+
enable: false,
|
|
31
|
+
local: true
|
|
43
32
|
}, options)
|
|
33
|
+
if(options.enable){
|
|
34
|
+
const packagePath = options.path || path.dirname(require.resolve(`${packageName}/package.json`))
|
|
35
|
+
loadPackage(packageName, packagePath);
|
|
36
|
+
}
|
|
44
37
|
}else{
|
|
45
38
|
packages[packageName] = Object.assign(packages[packageName], options)
|
|
46
39
|
}
|
|
40
|
+
}else{
|
|
41
|
+
if(changeNamePackage){
|
|
42
|
+
//如果是修改package name, 在steedos-package.yml位置保持不变
|
|
43
|
+
const newPackages = {};
|
|
44
|
+
_.each(packages, (info, key)=>{
|
|
45
|
+
if(key === changeNamePackage.module){
|
|
46
|
+
delete changeNamePackage.module
|
|
47
|
+
newPackages[packageName] = Object.assign(changeNamePackage, options)
|
|
48
|
+
}else{
|
|
49
|
+
newPackages[key] = info
|
|
50
|
+
}
|
|
51
|
+
})
|
|
52
|
+
packages = newPackages
|
|
53
|
+
}else{
|
|
54
|
+
if(!packages[packageName]){
|
|
55
|
+
packages[packageName] = Object.assign({
|
|
56
|
+
enable: true
|
|
57
|
+
}, options)
|
|
58
|
+
}else{
|
|
59
|
+
packages[packageName] = Object.assign(packages[packageName], options)
|
|
60
|
+
}
|
|
61
|
+
}
|
|
47
62
|
}
|
|
63
|
+
|
|
48
64
|
let data = yaml.dump(packages);
|
|
49
65
|
fs.writeFileSync(packagesFilePath, data);
|
|
50
66
|
}
|
|
@@ -72,7 +88,7 @@ const loadPackages = async ()=>{
|
|
|
72
88
|
console.error(error)
|
|
73
89
|
}
|
|
74
90
|
}
|
|
75
|
-
}else if(package.local === true){
|
|
91
|
+
}else if(package.local === true && package.static != true){
|
|
76
92
|
let packagePath = package.path;
|
|
77
93
|
if(!path.isAbsolute(packagePath)){
|
|
78
94
|
packagePath = path.resolve(process.cwd(), packagePath)
|
|
@@ -130,7 +146,8 @@ const isPackage = (name)=>{
|
|
|
130
146
|
}
|
|
131
147
|
}
|
|
132
148
|
|
|
133
|
-
const loadDependency = async (dependencyName, dependencyVersion)=>{
|
|
149
|
+
const loadDependency = async (mainPackageInfo, dependencyName, dependencyVersion)=>{
|
|
150
|
+
// console.log(`loadDependency`, mainPackageInfo, dependencyName, dependencyVersion)
|
|
134
151
|
let schema = objectql.getSteedosSchema();
|
|
135
152
|
let broker = schema.broker;
|
|
136
153
|
let packageInfo = null;
|
|
@@ -154,9 +171,11 @@ const loadDependency = async (dependencyName, dependencyVersion)=>{
|
|
|
154
171
|
await enablePackage(dependencyName)
|
|
155
172
|
}else{
|
|
156
173
|
try {
|
|
157
|
-
|
|
174
|
+
if(mainPackageInfo?.static != true){
|
|
175
|
+
await installPackage(broker, {module: dependencyName, version: dependencyVersion, enable: true})
|
|
176
|
+
}
|
|
158
177
|
} catch (error) {
|
|
159
|
-
|
|
178
|
+
// console.log(error)
|
|
160
179
|
}
|
|
161
180
|
}
|
|
162
181
|
// 如果steedos package yml 中没有该依赖,则直接安装
|
|
@@ -181,16 +200,16 @@ const loadPackage = async (packageName, packagePath)=>{
|
|
|
181
200
|
const packageInfo = require(path.join(packagePath, 'package.json'));
|
|
182
201
|
await destroyExistThePackageService(packageInfo);
|
|
183
202
|
await steedos.loadPackage(packagePath);
|
|
184
|
-
|
|
203
|
+
const packageConfig = getPackageConfig(packageName);
|
|
185
204
|
if(packageInfo.dependencies){
|
|
186
205
|
for (const dependencyName in packageInfo.dependencies) {
|
|
187
206
|
const dependencyVersion = packageInfo.dependencies[dependencyName];
|
|
188
|
-
await loadDependency(dependencyName, dependencyVersion);
|
|
207
|
+
await loadDependency(packageConfig, dependencyName, dependencyVersion);
|
|
189
208
|
}
|
|
190
209
|
}
|
|
191
210
|
return Object.assign({packagePath: packagePath}, packageInfo);
|
|
192
211
|
} catch (error) {
|
|
193
|
-
console.error(error)
|
|
212
|
+
console.error(packageName, packagePath, error)
|
|
194
213
|
}
|
|
195
214
|
}
|
|
196
215
|
|
|
@@ -243,16 +262,20 @@ const getPackageConfig = (packageName)=>{
|
|
|
243
262
|
const enablePackage = async (packageName)=>{
|
|
244
263
|
let packagePath = null;
|
|
245
264
|
let package = getPackageConfig(packageName);
|
|
246
|
-
if(package && package.local){
|
|
265
|
+
if(package && package.local && package.static !=true){
|
|
247
266
|
if(path.isAbsolute(package.path)){
|
|
248
267
|
packagePath = package.path
|
|
249
268
|
}else{
|
|
250
269
|
packagePath = path.resolve(process.cwd(), package.path)
|
|
251
270
|
}
|
|
252
271
|
}else{
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
}
|
|
272
|
+
if(package && package.static){
|
|
273
|
+
packagePath = path.dirname(require.resolve(`${packageName}/package.json`))
|
|
274
|
+
}else{
|
|
275
|
+
packagePath = path.dirname(require.resolve(`${packageName}/package.json`, {
|
|
276
|
+
paths: [path.join(userDir, 'node_modules')]
|
|
277
|
+
}))
|
|
278
|
+
}
|
|
256
279
|
}
|
|
257
280
|
await loadPackage(packageName, packagePath)
|
|
258
281
|
|
|
@@ -271,6 +294,7 @@ const enablePackage = async (packageName)=>{
|
|
|
271
294
|
}
|
|
272
295
|
appendToPackagesConfig(packageName, package);
|
|
273
296
|
let packageInfo = Object.assign({}, package, {name: packageName});
|
|
297
|
+
// console.log(`enable packageInfo`, packageInfo)
|
|
274
298
|
return packageInfo;
|
|
275
299
|
}
|
|
276
300
|
const installPackage = async (broker, options)=>{
|
|
@@ -32,6 +32,7 @@ const getAllPackages = async ()=>{
|
|
|
32
32
|
package.status = '';
|
|
33
33
|
package.new_version = package.version
|
|
34
34
|
package.local = package.local
|
|
35
|
+
package.static = package.static
|
|
35
36
|
delete package.version
|
|
36
37
|
if(installPackages[package.name]){
|
|
37
38
|
package.status = installPackages[package.name].enable ? 'enable' : 'disable'
|
|
@@ -52,7 +53,8 @@ const getAllPackages = async ()=>{
|
|
|
52
53
|
local: package.local,
|
|
53
54
|
label: package.label || packageName,
|
|
54
55
|
description: package.description,
|
|
55
|
-
metadata: package.metadata
|
|
56
|
+
metadata: package.metadata,
|
|
57
|
+
static: package.static
|
|
56
58
|
})
|
|
57
59
|
}
|
|
58
60
|
})
|
|
@@ -15,7 +15,7 @@ router.get('/api/nodes/install', core.requireAuthentication, async function (req
|
|
|
15
15
|
try {
|
|
16
16
|
const { module, version, label, description, nodeID} = body || {};
|
|
17
17
|
let broker = schema.broker;
|
|
18
|
-
const result = await broker.call(
|
|
18
|
+
const result = await broker.call(`@steedos/service-project.installPackage`, {
|
|
19
19
|
module, version, label, description
|
|
20
20
|
},{
|
|
21
21
|
nodeID: nodeID
|
|
@@ -40,7 +40,7 @@ router.post('/api/nodes/uninstall', core.requireAuthentication, async function (
|
|
|
40
40
|
await registry.uninstallModule(body.module)
|
|
41
41
|
const { module, nodeID} = body || {};
|
|
42
42
|
let broker = schema.broker;
|
|
43
|
-
const result = await broker.call(
|
|
43
|
+
const result = await broker.call(`@steedos/service-project.uninstallPackage`, {
|
|
44
44
|
module
|
|
45
45
|
},{
|
|
46
46
|
nodeID: nodeID
|
|
@@ -62,7 +62,7 @@ router.post('/api/nodes/reload', core.requireAuthentication, async function (req
|
|
|
62
62
|
try {
|
|
63
63
|
const { module, nodeID} = body || {};
|
|
64
64
|
let broker = schema.broker;
|
|
65
|
-
const result = await broker.call(
|
|
65
|
+
const result = await broker.call(`@steedos/service-project.reloadPackage`, {
|
|
66
66
|
module
|
|
67
67
|
},{
|
|
68
68
|
nodeID: nodeID
|
|
@@ -84,7 +84,7 @@ router.post('/api/nodes/disable', core.requireAuthentication, async function (re
|
|
|
84
84
|
try {
|
|
85
85
|
const { module, nodeID} = body || {};
|
|
86
86
|
let broker = schema.broker;
|
|
87
|
-
const result = await broker.call(
|
|
87
|
+
const result = await broker.call(`@steedos/service-project.disablePackage`, {
|
|
88
88
|
module
|
|
89
89
|
},{
|
|
90
90
|
nodeID: nodeID
|
|
@@ -106,7 +106,7 @@ router.post('/api/nodes/enable', core.requireAuthentication, async function (req
|
|
|
106
106
|
try {
|
|
107
107
|
const { module, nodeID} = body || {};
|
|
108
108
|
let broker = schema.broker;
|
|
109
|
-
const result = await broker.call(
|
|
109
|
+
const result = await broker.call(`@steedos/service-project.enablePackage`, {
|
|
110
110
|
module
|
|
111
111
|
},{
|
|
112
112
|
nodeID: nodeID
|
|
@@ -132,7 +132,7 @@ router.get('/api/nodes/versions', core.requireAuthentication, async function (re
|
|
|
132
132
|
try {
|
|
133
133
|
|
|
134
134
|
let broker = schema.broker;
|
|
135
|
-
const result = await broker.call(
|
|
135
|
+
const result = await broker.call(`@steedos/service-project.getPackageVersions`, {
|
|
136
136
|
module
|
|
137
137
|
})
|
|
138
138
|
res.status(200).send(result); //TODO 完善返回信息
|
|
@@ -152,7 +152,7 @@ router.post('/api/nodes/upgrade', core.requireAuthentication, async function (re
|
|
|
152
152
|
try {
|
|
153
153
|
const { module, version} = body || {};
|
|
154
154
|
let broker = schema.broker;
|
|
155
|
-
const result = await broker.call(
|
|
155
|
+
const result = await broker.call(`@steedos/service-project.upgradePackage`, {
|
|
156
156
|
module, version
|
|
157
157
|
})
|
|
158
158
|
res.status(200).send(result);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steedos/service-package-registry",
|
|
3
|
-
"version": "2.5.13-beta.
|
|
3
|
+
"version": "2.5.13-beta.11",
|
|
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.13-beta.
|
|
13
|
-
"@steedos/core": "2.5.13-beta.
|
|
14
|
-
"@steedos/metadata-core": "2.5.13-beta.
|
|
15
|
-
"@steedos/objectql": "2.5.13-beta.
|
|
16
|
-
"@steedos/service-package-loader": "2.5.13-beta.
|
|
12
|
+
"@steedos/auth": "2.5.13-beta.11",
|
|
13
|
+
"@steedos/core": "2.5.13-beta.11",
|
|
14
|
+
"@steedos/metadata-core": "2.5.13-beta.11",
|
|
15
|
+
"@steedos/objectql": "2.5.13-beta.11",
|
|
16
|
+
"@steedos/service-package-loader": "2.5.13-beta.11",
|
|
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": "187a202a62340f04d323720fdbfb5bf68d93437d"
|
|
35
35
|
}
|
|
@@ -25,7 +25,7 @@ const AUTH_TYPE = 'Bearer';
|
|
|
25
25
|
* 软件包服务启动后也需要抛出事件。
|
|
26
26
|
*/
|
|
27
27
|
module.exports = {
|
|
28
|
-
name: '
|
|
28
|
+
name: '@steedos/service-project',
|
|
29
29
|
namespace: "steedos",
|
|
30
30
|
/**
|
|
31
31
|
* Settings
|
|
@@ -149,7 +149,10 @@ module.exports = {
|
|
|
149
149
|
enablePackage:{
|
|
150
150
|
async handler(ctx) {
|
|
151
151
|
const { module } = ctx.params
|
|
152
|
-
|
|
152
|
+
let packageConfig = await loader.enablePackage(module);
|
|
153
|
+
if(packageConfig.static){
|
|
154
|
+
packageConfig = Object.assign({}, packageConfig, this.getStaticPackageInfo(packageConfig, packageConfig.name))
|
|
155
|
+
}
|
|
153
156
|
const metadata = await loader.getPackageMetadata(util.getPackageRelativePath(process.cwd(), packageConfig.path));
|
|
154
157
|
await ctx.broker.call(`@steedos/service-packages.install`, {
|
|
155
158
|
serviceInfo: Object.assign({}, packageConfig, {
|
|
@@ -275,7 +278,13 @@ module.exports = {
|
|
|
275
278
|
async handler(ctx) {
|
|
276
279
|
return await this.initialPackages();
|
|
277
280
|
}
|
|
281
|
+
},
|
|
282
|
+
addPackages: {
|
|
283
|
+
async handler(ctx) {
|
|
284
|
+
return await this.addPackages(ctx);
|
|
285
|
+
}
|
|
278
286
|
}
|
|
287
|
+
|
|
279
288
|
},
|
|
280
289
|
|
|
281
290
|
/**
|
|
@@ -544,6 +553,68 @@ module.exports = {
|
|
|
544
553
|
}
|
|
545
554
|
}
|
|
546
555
|
}
|
|
556
|
+
},
|
|
557
|
+
addPackages: {
|
|
558
|
+
async handler(ctx){
|
|
559
|
+
const { packages } = ctx.params;
|
|
560
|
+
for(const _package of packages){
|
|
561
|
+
let name = null;
|
|
562
|
+
let options = null;
|
|
563
|
+
if(_.isString(_package)){
|
|
564
|
+
name = _package;
|
|
565
|
+
options = {}
|
|
566
|
+
}else{
|
|
567
|
+
const { name: _name, ..._options} = _package;
|
|
568
|
+
name = _name;
|
|
569
|
+
options = _options;
|
|
570
|
+
}
|
|
571
|
+
if(!_.has(options, 'static')){
|
|
572
|
+
options.static = true
|
|
573
|
+
}
|
|
574
|
+
loader.appendToPackagesConfig(name, options)
|
|
575
|
+
await this.installPackagesSyncToMetaData(name);
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
},
|
|
579
|
+
getStaticPackageInfo: {
|
|
580
|
+
handler(packageInfo, packageName){
|
|
581
|
+
const _path = packageInfo.path || path.dirname(require.resolve(`${packageName}/package.json`));
|
|
582
|
+
const packageJson = require(`${_path}/package.json`);
|
|
583
|
+
return {
|
|
584
|
+
path: _path,
|
|
585
|
+
version: packageJson.version,
|
|
586
|
+
description: packageJson.description
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
},
|
|
590
|
+
installPackagesSyncToMetaData:{
|
|
591
|
+
async handler(packageName){
|
|
592
|
+
//注册本地已安装的steedos packages
|
|
593
|
+
const installPackages = loader.loadPackagesConfig();
|
|
594
|
+
for (const name in installPackages) {
|
|
595
|
+
if (Object.hasOwnProperty.call(installPackages, name) && (packageName && packageName === name)) {
|
|
596
|
+
let _packageInfo = installPackages[name];
|
|
597
|
+
if(_packageInfo.static){
|
|
598
|
+
_packageInfo = Object.assign({}, _packageInfo, this.getStaticPackageInfo(_packageInfo, name))
|
|
599
|
+
}
|
|
600
|
+
const metadata = await loader.getPackageMetadata(_packageInfo.path);
|
|
601
|
+
await this.broker.call(`@steedos/service-packages.install`, {
|
|
602
|
+
serviceInfo: {
|
|
603
|
+
name: name,
|
|
604
|
+
nodeID: this.broker.nodeID,
|
|
605
|
+
instanceID: this.broker.instanceID,
|
|
606
|
+
path: _packageInfo.path,
|
|
607
|
+
local: _packageInfo.local,
|
|
608
|
+
enable: _packageInfo.enable,
|
|
609
|
+
version: _packageInfo.version,
|
|
610
|
+
description: _packageInfo.description,
|
|
611
|
+
metadata: metadata,
|
|
612
|
+
static: _packageInfo.static
|
|
613
|
+
}
|
|
614
|
+
})
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
}
|
|
547
618
|
}
|
|
548
619
|
},
|
|
549
620
|
|
|
@@ -606,27 +677,7 @@ module.exports = {
|
|
|
606
677
|
})
|
|
607
678
|
await loader.loadPackages();
|
|
608
679
|
|
|
609
|
-
|
|
610
|
-
const installPackages = loader.loadPackagesConfig();
|
|
611
|
-
for (const name in installPackages) {
|
|
612
|
-
if (Object.hasOwnProperty.call(installPackages, name)) {
|
|
613
|
-
const _packageInfo = installPackages[name];
|
|
614
|
-
const metadata = await loader.getPackageMetadata(_packageInfo.path);
|
|
615
|
-
await this.broker.call(`@steedos/service-packages.install`, {
|
|
616
|
-
serviceInfo: {
|
|
617
|
-
name: name,
|
|
618
|
-
nodeID: this.broker.nodeID,
|
|
619
|
-
instanceID: this.broker.instanceID,
|
|
620
|
-
path: _packageInfo.path,
|
|
621
|
-
local: _packageInfo.local,
|
|
622
|
-
enable: _packageInfo.enable,
|
|
623
|
-
version: _packageInfo.version,
|
|
624
|
-
description: _packageInfo.description,
|
|
625
|
-
metadata: metadata
|
|
626
|
-
}
|
|
627
|
-
})
|
|
628
|
-
}
|
|
629
|
-
}
|
|
680
|
+
await this.installPackagesSyncToMetaData()
|
|
630
681
|
|
|
631
682
|
},
|
|
632
683
|
|