@steedos/service-package-loader 2.1.89 → 2.1.92

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/index.js CHANGED
@@ -3,10 +3,12 @@
3
3
  const objectql = require('@steedos/objectql');
4
4
  const core = require('@steedos/core');
5
5
  const triggerLoader = require('./lib').triggerLoader;
6
+ const processTriggerLoader = require('./lib').processTriggerLoader;
6
7
  const sendPackageFlowToDb = require('./lib/loadPackageFlow').sendPackageFlowToDb;
7
8
  const path = require('path');
8
9
  const Future = require('fibers/future');
9
10
  const _ = require('lodash');
11
+ const globby = require("globby");
10
12
  /**
11
13
  * @typedef {import('moleculer').Context} Context Moleculer's Context
12
14
  */
@@ -71,6 +73,7 @@ module.exports = {
71
73
  await objectql.loadStandardMetadata(name, datasourceName);
72
74
  await objectql.addAllConfigFiles(packagePath, datasourceName, name);
73
75
  await triggerLoader.load(this.broker, packagePath, name);
76
+ await processTriggerLoader.load(this.broker, packagePath, name);
74
77
  core.loadClientScripts();
75
78
  let routersData = objectql.loadRouters(packagePath);
76
79
  let oldRoutersInfo = await this.broker.call(`@steedos/service-packages.getPackageRoutersInfo`, {packageName: name})
@@ -93,6 +96,24 @@ module.exports = {
93
96
  await this.broker.call(`@steedos/service-packages.setPackageRoutersInfo`, {packageName: name, data: routersInfo})
94
97
  return;
95
98
  }).promise();
99
+ },
100
+ loadPackageMetadataServices: async function (packagePath) {
101
+ const filePatten = [
102
+ path.join(packagePath, 'main', 'default', 'services', `*.service.js`),
103
+ "!" + path.join(packagePath, "**", "node_modules"),
104
+ ];
105
+ const matchedPaths = globby.sync(filePatten);
106
+ for await (const serviceFilePath of matchedPaths) {
107
+ try {
108
+ const service = this.broker.loadService(serviceFilePath);
109
+ this.packageServices.push(service);
110
+ if (!this.broker.started) {
111
+ this.broker._restartService(service)
112
+ }
113
+ } catch (error) {
114
+ this.logger.error(error)
115
+ }
116
+ }
96
117
  }
97
118
  },
98
119
 
@@ -100,6 +121,7 @@ module.exports = {
100
121
  * Service created lifecycle event handler
101
122
  */
102
123
  created() {
124
+ this.packageServices = []; //此属性不能放到settings下,否则会导致mo clone settings 时 内存溢出。
103
125
  this.logger.debug('service package loader created!!!');
104
126
  },
105
127
 
@@ -135,6 +157,9 @@ module.exports = {
135
157
 
136
158
  }
137
159
  }
160
+
161
+ await this.loadPackageMetadataServices(_path);
162
+
138
163
  console.timeEnd(`service ${this.name} started`)
139
164
  // console.log(`service ${this.name} started`);
140
165
  },
@@ -143,6 +168,13 @@ module.exports = {
143
168
  * Service stopped lifecycle event handler
144
169
  */
145
170
  async stopped() {
171
+ for await (const packageService of this.packageServices) {
172
+ try {
173
+ await this.broker.destroyService(packageService);
174
+ } catch (error) {
175
+ this.logger.errorr(error);
176
+ }
177
+ }
146
178
  this.broker.call(`@steedos/service-packages.offline`, {serviceInfo: {name: this.name, nodeID: this.broker.nodeID, instanceID: this.broker.instanceID}})
147
179
  await this.broker.call(`metadata.refreshServiceMetadatas`, { offlinePackageServices: [`${this.broker.nodeID}.${this.name}`] });
148
180
  console.log(`service ${this.name} stopped`);
package/lib/index.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export * as triggerLoader from "./triggerLoader";
2
+ export * as processTriggerLoader from "./processTriggerLoader";
package/lib/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.triggerLoader = void 0;
3
+ exports.processTriggerLoader = exports.triggerLoader = void 0;
4
4
  exports.triggerLoader = require("./triggerLoader");
5
+ exports.processTriggerLoader = require("./processTriggerLoader");
5
6
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mDAAgD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mDAAgD;AAChD,iEAA8D"}
@@ -0,0 +1 @@
1
+ export declare function load(broker: any, packagePath: string, packageServiceName: string): Promise<void>;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.load = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const _ = require("underscore");
6
+ const path = require("path");
7
+ const objectql_1 = require("@steedos/objectql");
8
+ const ENUM_WHEN = ['beforeDraftInsert', 'afterDraftInsert', 'beforeDraftSubmit', 'afterDraftSubmit', 'beforeStepSubmit', 'afterStepSubmit', 'cacluateNextStepUsers',
9
+ 'beforeCancel', 'afterCancel', 'beforeTerminate', 'afterTerminate', 'beforeEnd', 'afterEnd'];
10
+ const LISTENTO_ALL_FLOWS = 'LISTENTO_ALL_FLOWS';
11
+ function load(broker, packagePath, packageServiceName) {
12
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
13
+ let filePath = path.join(packagePath, "**");
14
+ let wTriggers = (0, objectql_1.loadProcessTriggers)(filePath);
15
+ if (_.isEmpty(wTriggers)) {
16
+ return;
17
+ }
18
+ for (const wt of wTriggers) {
19
+ if (_.isString(wt.listenTo)) {
20
+ for (const when of ENUM_WHEN) {
21
+ let handler = wt[when];
22
+ if (!handler) {
23
+ continue;
24
+ }
25
+ let name = wt.name || (0, objectql_1.getMD5)((0, objectql_1.JSONStringify)(wt));
26
+ let config = {
27
+ name: name,
28
+ "listenTo": wt.listenTo == '*' ? LISTENTO_ALL_FLOWS : wt.listenTo,
29
+ "when": when,
30
+ "handler": handler.toString()
31
+ };
32
+ yield objectql_1.registerProcessTrigger.register(broker, packageServiceName, config);
33
+ }
34
+ }
35
+ }
36
+ });
37
+ }
38
+ exports.load = load;
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/processTriggerLoader/index.ts"],"names":[],"mappings":";;;;AAAA,gCAAgC;AAChC,6BAA6B;AAC7B,gDAAuG;AAGvG,MAAM,SAAS,GAAG,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,uBAAuB;IAC/J,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AACjG,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAEhD,SAAsB,IAAI,CAAC,MAAW,EAAE,WAAmB,EAAE,kBAA0B;;QACnF,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,SAAS,GAAG,IAAA,8BAAmB,EAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YACtB,OAAO;SACV;QACD,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE;YAExB,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE;gBACzB,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;oBAC1B,IAAI,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;oBACvB,IAAI,CAAC,OAAO,EAAE;wBACV,SAAS;qBACZ;oBACD,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAA,iBAAM,EAAC,IAAA,wBAAa,EAAC,EAAE,CAAC,CAAC,CAAC;oBAChD,IAAI,MAAM,GAAY;wBAClB,IAAI,EAAE,IAAI;wBACV,UAAU,EAAE,EAAE,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ;wBACjE,MAAM,EAAE,IAAI;wBACZ,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE;qBAChC,CAAA;oBACD,MAAM,iCAAsB,CAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;iBAC7E;aAEJ;SACJ;IAEL,CAAC;CAAA;AA3BD,oBA2BC"}
@@ -0,0 +1 @@
1
+ export * from './trigger';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ (0, tslib_1.__exportStar)(require("./trigger"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/processTriggerLoader/types/index.ts"],"names":[],"mappings":";;;AAAA,yDAA0B"}
@@ -0,0 +1,6 @@
1
+ export declare type Trigger = {
2
+ name: string;
3
+ listenTo: string;
4
+ when: string | string[];
5
+ handler: Function;
6
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=trigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger.js","sourceRoot":"","sources":["../../../src/processTriggerLoader/types/trigger.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/service-package-loader",
3
- "version": "2.1.89",
3
+ "version": "2.1.92",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -11,8 +11,8 @@
11
11
  "author": "",
12
12
  "license": "MIT",
13
13
  "dependencies": {
14
- "@steedos/core": "2.1.89",
15
- "@steedos/objectql": "2.1.89",
14
+ "@steedos/core": "2.1.92",
15
+ "@steedos/objectql": "2.1.92",
16
16
  "clone": "^2.1.2",
17
17
  "globby": "^11.0.2",
18
18
  "moleculer": "^0.14.12",
@@ -32,5 +32,5 @@
32
32
  "publishConfig": {
33
33
  "access": "public"
34
34
  },
35
- "gitHead": "4b2cd15644d673357382176b925003df5d03ba31"
35
+ "gitHead": "b4f200efd338673eabbcccc0cc23f0f9c662eee2"
36
36
  }
package/src/index.ts CHANGED
@@ -1 +1,2 @@
1
- export * as triggerLoader from "./triggerLoader"
1
+ export * as triggerLoader from "./triggerLoader"
2
+ export * as processTriggerLoader from "./processTriggerLoader"
@@ -0,0 +1,37 @@
1
+ import * as _ from "underscore";
2
+ import * as path from "path";
3
+ import { getMD5, JSONStringify, loadProcessTriggers, registerProcessTrigger } from "@steedos/objectql";
4
+ import { Trigger } from "./types";
5
+
6
+ const ENUM_WHEN = ['beforeDraftInsert', 'afterDraftInsert', 'beforeDraftSubmit', 'afterDraftSubmit', 'beforeStepSubmit', 'afterStepSubmit', 'cacluateNextStepUsers',
7
+ 'beforeCancel', 'afterCancel', 'beforeTerminate', 'afterTerminate', 'beforeEnd', 'afterEnd'];
8
+ const LISTENTO_ALL_FLOWS = 'LISTENTO_ALL_FLOWS';
9
+
10
+ export async function load(broker: any, packagePath: string, packageServiceName: string) {
11
+ let filePath = path.join(packagePath, "**");
12
+ let wTriggers = loadProcessTriggers(filePath);
13
+ if (_.isEmpty(wTriggers)) {
14
+ return;
15
+ }
16
+ for (const wt of wTriggers) {
17
+
18
+ if (_.isString(wt.listenTo)) {
19
+ for (const when of ENUM_WHEN) {
20
+ let handler = wt[when];
21
+ if (!handler) {
22
+ continue;
23
+ }
24
+ let name = wt.name || getMD5(JSONStringify(wt));
25
+ let config: Trigger = {
26
+ name: name,
27
+ "listenTo": wt.listenTo == '*' ? LISTENTO_ALL_FLOWS : wt.listenTo,
28
+ "when": when,
29
+ "handler": handler.toString()
30
+ }
31
+ await registerProcessTrigger.register(broker, packageServiceName, config);
32
+ }
33
+
34
+ }
35
+ }
36
+
37
+ }
@@ -0,0 +1 @@
1
+ export * from './trigger';
@@ -0,0 +1,6 @@
1
+ export type Trigger = {
2
+ name: string,
3
+ listenTo: string,
4
+ when: string | string[],
5
+ handler: Function
6
+ }