@steedos/service-package-registry 2.5.14-beta.7 → 2.5.14-beta.8

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 ;
@@ -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?.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
  }
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-beta.8",
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-beta.8",
13
+ "@steedos/core": "2.5.14-beta.8",
14
+ "@steedos/metadata-core": "2.5.14-beta.8",
15
+ "@steedos/objectql": "2.5.14-beta.8",
16
+ "@steedos/service-package-loader": "2.5.14-beta.8",
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": "9e2b4ac59a9a1700158c0d132b4cbc9ae4931bec"
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 checkDependencies(util.getPackageRelativePath(process.cwd(), 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;