@steedos/service-package-loader 2.2.54-beta.6 → 2.2.54

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.
Files changed (2) hide show
  1. package/index.js +48 -22
  2. package/package.json +5 -6
package/index.js CHANGED
@@ -12,6 +12,7 @@ const _ = require('lodash');
12
12
  const globby = require("globby");
13
13
  const express = require('express');
14
14
  const fs = require("fs");
15
+ const metaDataCore = require('@steedos/metadata-core');
15
16
  /**
16
17
  * @typedef {import('moleculer').Context} Context Moleculer's Context
17
18
  */
@@ -31,7 +32,7 @@ module.exports = {
31
32
  /**
32
33
  * Dependencies
33
34
  */
34
- dependencies: ['metadata-server'],
35
+ dependencies: ['metadata-server', '~packages-project-server'],
35
36
 
36
37
  /**
37
38
  * Actions
@@ -45,22 +46,13 @@ module.exports = {
45
46
  */
46
47
  events: {
47
48
  "steedos-server.started": {
48
- handler() {
49
- let packageInfo = this.settings.packageInfo;
50
- if (!packageInfo) {
51
- return;
52
- }
53
- const { path : _path } = packageInfo;
54
-
55
- this.loadPackagePublicFiles(_path);
56
-
57
- if(_path){
58
- //此处延迟10秒加载流程文件,防止工作区初始化未完成
59
- setTimeout(() => {
60
- sendPackageFlowToDb(this.broker, _path)
61
- processLoader.sendPackageProcessToDb(_path);
62
- }, 10 * 1000)
63
- }
49
+ async handler() {
50
+ await this.loadDataOnServiceStarted();
51
+ }
52
+ },
53
+ "space.initialized": {
54
+ async handler() {
55
+ await this.loadDataOnServiceStarted();
64
56
  }
65
57
  }
66
58
  },
@@ -69,6 +61,19 @@ module.exports = {
69
61
  * Methods
70
62
  */
71
63
  methods: {
64
+ loadDataOnServiceStarted: async function(){
65
+ let packageInfo = this.settings.packageInfo;
66
+ if (!packageInfo) {
67
+ return;
68
+ }
69
+ const { path : _path } = packageInfo;
70
+
71
+ this.loadPackagePublicFiles(_path);
72
+ if(_path){
73
+ sendPackageFlowToDb(this.broker, _path)
74
+ processLoader.sendPackageProcessToDb(_path);
75
+ }
76
+ },
72
77
  loadPackageMetadataFiles: async function (packagePath, name, datasourceName) {
73
78
  this.broker.logger.debug(`Loading package from ${packagePath}`)
74
79
  await Future.task(async () => {
@@ -112,7 +117,7 @@ module.exports = {
112
117
  path.join(packagePath, 'main', 'default', 'services', "**", `*.service.js`),
113
118
  "!" + path.join(packagePath, "**", "node_modules"),
114
119
  ];
115
- const matchedPaths = globby.sync(filePatten);
120
+ const matchedPaths = metaDataCore.syncMatchFiles(filePatten);
116
121
  for await (const serviceFilePath of matchedPaths) {
117
122
  try {
118
123
  const service = objectql.loadService(this.broker, serviceFilePath);
@@ -151,6 +156,13 @@ module.exports = {
151
156
  this.settings.loadedPackagePublicFiles = false;
152
157
  }
153
158
  }
159
+ },
160
+ async errorHandler(error) {
161
+ this.broker.logger.error(`[${this.name}] 启动失败: ${error.message}`);
162
+ await await this.broker.call(`~packages-project-server.disablePackage`, {
163
+ module: this.schema.packageName
164
+ })
165
+ return await this.broker.destroyService(this);
154
166
  }
155
167
  },
156
168
 
@@ -163,6 +175,7 @@ module.exports = {
163
175
  },
164
176
 
165
177
  merged(schema) {
178
+ schema.packageName = schema.name;
166
179
  schema.name = `~packages-${schema.name}`;
167
180
  },
168
181
 
@@ -170,6 +183,14 @@ module.exports = {
170
183
  * Service started lifecycle event handler
171
184
  */
172
185
  async started() {
186
+ if(this.beforeStart){
187
+ try {
188
+ await this.beforeStart()
189
+ } catch (error) {
190
+ return await this.errorHandler(error);
191
+ }
192
+ }
193
+
173
194
  console.time(`service ${this.name} started`)
174
195
  let packageInfo = this.settings.packageInfo;
175
196
  if (!packageInfo) {
@@ -182,8 +203,7 @@ module.exports = {
182
203
  return;
183
204
  }
184
205
  this.broker.waitForServices("steedos-server").then(async () => {
185
- sendPackageFlowToDb(this.broker, _path, this.name)
186
- processLoader.sendPackageProcessToDb(_path);
206
+ await this.loadDataOnServiceStarted()
187
207
  });
188
208
 
189
209
  await this.loadPackageMetadataFiles(_path, this.name, datasource);
@@ -198,10 +218,16 @@ module.exports = {
198
218
 
199
219
  await this.loadPackageMetadataServices(_path);
200
220
 
201
- await this.loadPackagePublicFiles(_path);
221
+ // await this.loadPackagePublicFiles(_path);
202
222
  this.started = true;
203
223
  console.timeEnd(`service ${this.name} started`)
204
- // console.log(`service ${this.name} started`);
224
+ if(this.afterStart){
225
+ try {
226
+ await this.afterStart();
227
+ } catch (error) {
228
+ this.broker.logger.error(`[${this.name}]: ${error.message}`);
229
+ }
230
+ }
205
231
  },
206
232
 
207
233
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/service-package-loader",
3
- "version": "2.2.54-beta.6",
3
+ "version": "2.2.54",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -10,11 +10,10 @@
10
10
  "author": "",
11
11
  "license": "MIT",
12
12
  "dependencies": {
13
- "@steedos/core": "2.2.54-beta.6",
14
- "@steedos/metadata-core": "2.2.54-beta.6",
15
- "@steedos/objectql": "2.2.54-beta.6",
13
+ "@steedos/core": "2.2.54",
14
+ "@steedos/metadata-core": "2.2.54",
15
+ "@steedos/objectql": "2.2.54",
16
16
  "clone": "^2.1.2",
17
- "globby": "^11.1.0",
18
17
  "moleculer": "^0.14.21",
19
18
  "underscore": "^1.12.0"
20
19
  },
@@ -25,5 +24,5 @@
25
24
  "publishConfig": {
26
25
  "access": "public"
27
26
  },
28
- "gitHead": "42049eee94baa827da1bf943f3736328a42ed308"
27
+ "gitHead": "c3c4c95a7010fd3a1af0cd41d999bff14718da1b"
29
28
  }