@steedos/service-package-registry 2.5.14-beta.7 → 2.5.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.
@@ -159,7 +159,7 @@ const isPackage = (name)=>{
159
159
  }
160
160
  }
161
161
 
162
- const loadDependency = async (mainPackageInfo, dependencyName, dependencyVersion)=>{
162
+ const loadDependency = async (mainPackageInfo = {}, dependencyName, dependencyVersion)=>{
163
163
  // console.log(`loadDependency`, mainPackageInfo, dependencyName, dependencyVersion)
164
164
  if(mainPackageInfo.static == true){
165
165
  return ;
@@ -187,7 +187,7 @@ const loadDependency = async (mainPackageInfo, dependencyName, dependencyVersion
187
187
  await enablePackage(dependencyName)
188
188
  }else{
189
189
  try {
190
- if(mainPackageInfo?.static != true){
190
+ if(mainPackageInfo && mainPackageInfo.static != true){
191
191
  await installPackage(broker, {module: dependencyName, version: dependencyVersion, enable: true})
192
192
  }
193
193
  } catch (error) {
@@ -184,9 +184,22 @@ const scanPackageMetadatas = async (packagePath) => {
184
184
  return packageMetadatas;
185
185
  }
186
186
 
187
+ const checkDependencies = async (packagePath)=>{
188
+ const packageServiceConfig = require(path.join(packagePath, 'package.service.js'));
189
+ const dependencies = (packageServiceConfig && packageServiceConfig.dependencies) || [];
190
+ for(const item of dependencies){
191
+ const hasService = await objectql.getSteedosSchema().broker.registry.hasService(item);
192
+ if(!hasService){
193
+ throw new Error(`依赖项${item}未启动, 请先启动依赖项`)
194
+ }
195
+ }
196
+ return true;
197
+ }
198
+
187
199
  module.exports = {
188
200
  maintainSystemFiles,
189
201
  getAllPackages,
190
202
  getPackageVersions,
191
- scanPackageMetadatas
203
+ scanPackageMetadatas,
204
+ checkDependencies
192
205
  }
@@ -7,6 +7,7 @@ columns:
7
7
  - field: version
8
8
  wrap: false
9
9
  - field: status
10
+ - field: static
10
11
  filter_scope: space
11
12
  label: 已安装
12
13
  scrolling_mode: standard
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/service-package-registry",
3
- "version": "2.5.14-beta.7",
3
+ "version": "2.5.14",
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.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",
12
+ "@steedos/auth": "2.5.14",
13
+ "@steedos/core": "2.5.14",
14
+ "@steedos/metadata-core": "2.5.14",
15
+ "@steedos/objectql": "2.5.14",
16
+ "@steedos/service-package-loader": "2.5.14",
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": "49d045d62677fd45d4f20fde49ecc23f01ef0d33"
34
+ "gitHead": "9007f92f87f5680039bb5a9c21675f9261784872"
35
35
  }
@@ -148,6 +148,7 @@ module.exports = {
148
148
  if(packageConfig.static){
149
149
  packageConfig = Object.assign({}, packageConfig, this.getStaticPackageInfo(packageConfig, packageConfig.name))
150
150
  }
151
+ await packages.checkDependencies(path.resolve(packageConfig.path))
151
152
  const metadata = await loader.getPackageMetadata(util.getPackageRelativePath(process.cwd(), packageConfig.path));
152
153
  await ctx.broker.call(`@steedos/service-packages.install`, {
153
154
  serviceInfo: Object.assign({}, packageConfig, {
@@ -178,9 +179,9 @@ module.exports = {
178
179
  if(!user.is_space_admin){
179
180
  throw new Error('not permission!');
180
181
  }
181
- let { module, version, url, auth, registry_url } = ctx.params
182
+ let { module, version, url, auth, registry_url, fromClient = false } = ctx.params
182
183
  const enable = true;
183
- return await this.installPackageFromUrl(module, version, url, auth, enable, registry_url, ctx.broker)
184
+ return await this.installPackageFromUrl(module, version, url, auth, enable, registry_url, ctx.broker, {fromClient})
184
185
  } catch (error) {
185
186
  let errorInfo = error.message || '';
186
187
  if (error.stderr) {
@@ -265,7 +266,7 @@ module.exports = {
265
266
  }
266
267
  },
267
268
  installPackageFromUrl: {
268
- async handler(module, version, url, auth, enable, registry_url, broker) {
269
+ async handler(module, version, url, auth, enable, registry_url, broker, {fromClient}) {
269
270
  if(!module || !_.isString(module) || !module.trim()){
270
271
  throw new Error(`无效的软件包名称`);
271
272
  } else {
@@ -290,6 +291,9 @@ module.exports = {
290
291
  const packageInfo = loader.getPackageInfo(null, packagePath);
291
292
  const packageName = packageInfo.name;
292
293
  if(enable){
294
+ if(fromClient){
295
+ await packages.checkDependencies(packagePath)
296
+ }
293
297
  await loader.loadPackage(packageName, packagePath);
294
298
  }else{
295
299
  enable = false;