@steedos/service-package-loader 2.5.1 → 2.5.3-beta.1
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 +125 -110
- package/lib/processLoader/index.js +17 -5
- package/lib/processLoader/index.js.map +1 -1
- package/lib/processTriggerLoader/index.js +5 -4
- package/lib/processTriggerLoader/index.js.map +1 -1
- package/lib/triggerLoader/index.js +17 -4
- package/lib/triggerLoader/index.js.map +1 -1
- package/package.json +5 -6
- package/src/processLoader/index.ts +15 -3
- package/src/processTriggerLoader/index.ts +9 -1
- package/src/triggerLoader/index.ts +20 -5
package/index.js
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
const objectql = require('@steedos/objectql');
|
|
4
|
-
const Future = require('fibers/future');
|
|
5
|
-
const core = require('@steedos/core');
|
|
6
3
|
const triggerLoader = require('./lib').triggerLoader;
|
|
7
4
|
const processLoader = require('./lib').processLoader;
|
|
8
5
|
const processTriggerLoader = require('./lib').processTriggerLoader;
|
|
9
6
|
const triggerYmlLoader = require('./lib').triggerYmlLoader;
|
|
10
7
|
const path = require('path');
|
|
11
8
|
const _ = require('lodash');
|
|
12
|
-
const express = require('express');
|
|
13
9
|
const fs = require("fs");
|
|
14
10
|
const metaDataCore = require('@steedos/metadata-core');
|
|
11
|
+
const { registerMetadataConfigs, loadStandardMetadata, loadRouters } = require('@steedos/metadata-registrar');
|
|
15
12
|
const loadFlowFile = new metaDataCore.LoadFlowFile();
|
|
16
13
|
|
|
17
14
|
/**
|
|
@@ -67,7 +64,47 @@ module.exports = {
|
|
|
67
64
|
* Methods
|
|
68
65
|
*/
|
|
69
66
|
methods: {
|
|
67
|
+
checkPackageMetadataFiles: async function (packagePath) {
|
|
70
68
|
|
|
69
|
+
if(this.core){
|
|
70
|
+
return ;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
let publicPath = path.join(packagePath, 'public');
|
|
74
|
+
if (this.settings.packageInfo.loadPublicFolder && fs.existsSync(publicPath)) {
|
|
75
|
+
this.broker.logger.warn(`The public folder has been deprecated. ${publicPath}`);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// 扫描软件包中的元数据, 如果有 .client.js 文件, 则输出警告信息
|
|
79
|
+
const filePatten = [
|
|
80
|
+
path.join(packagePath, "**", "*.client.js"),
|
|
81
|
+
"!" + path.join(packagePath, "node_modules"),
|
|
82
|
+
]
|
|
83
|
+
const matchedPaths = metaDataCore.syncMatchFiles(filePatten);
|
|
84
|
+
for await (const filePath of matchedPaths) {
|
|
85
|
+
this.broker.logger.warn(`The client.js file has been deprecated. ${filePath}`);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// 扫描软件包中的元数据, 如果有 .object.js 文件, 则输出警告信息
|
|
89
|
+
const filePatten2 = [
|
|
90
|
+
path.join(packagePath, "**", "*.object.js"),
|
|
91
|
+
"!" + path.join(packagePath, "node_modules"),
|
|
92
|
+
]
|
|
93
|
+
const matchedPaths2 = metaDataCore.syncMatchFiles(filePatten2);
|
|
94
|
+
for await (const filePath of matchedPaths2) {
|
|
95
|
+
this.broker.logger.warn(`The object.js file has been deprecated. ${filePath}`);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// 扫描软件包中的元数据, 如果有 .router.js 文件, 则输出警告信息
|
|
99
|
+
const filePatten3 = [
|
|
100
|
+
path.join(packagePath, "**", "*.router.js"),
|
|
101
|
+
"!" + path.join(packagePath, "node_modules"),
|
|
102
|
+
]
|
|
103
|
+
const matchedPaths3 = metaDataCore.syncMatchFiles(filePatten3);
|
|
104
|
+
for await (const filePath of matchedPaths3) {
|
|
105
|
+
this.broker.logger.warn(`The router.js file has been deprecated. ${filePath}`);
|
|
106
|
+
}
|
|
107
|
+
},
|
|
71
108
|
sendPackageFlowToDb: async function(packagePath, name) {
|
|
72
109
|
const flows = loadFlowFile.load(path.join(packagePath, '**'));
|
|
73
110
|
for (const apiName in flows) {
|
|
@@ -83,63 +120,7 @@ module.exports = {
|
|
|
83
120
|
},
|
|
84
121
|
|
|
85
122
|
importFlow: async function(flow, name) {
|
|
86
|
-
await
|
|
87
|
-
try {
|
|
88
|
-
try {
|
|
89
|
-
if(!db){
|
|
90
|
-
return
|
|
91
|
-
}
|
|
92
|
-
if(!steedosImport){
|
|
93
|
-
return
|
|
94
|
-
}
|
|
95
|
-
} catch (error) {
|
|
96
|
-
return ;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
if(db && db.flows && steedosImport){
|
|
100
|
-
const steedosConfig = objectql.getSteedosConfig();
|
|
101
|
-
let space;
|
|
102
|
-
if(steedosConfig && steedosConfig.tenant && steedosConfig.tenant._id){
|
|
103
|
-
space = db.spaces.findOne(steedosConfig.tenant._id)
|
|
104
|
-
}
|
|
105
|
-
if(!space){
|
|
106
|
-
space = db.spaces.findOne()
|
|
107
|
-
}
|
|
108
|
-
if(!space){
|
|
109
|
-
this.logger.debug(`import flow ${flow.name} fail. not find space in db`);
|
|
110
|
-
return ;
|
|
111
|
-
}
|
|
112
|
-
if(!flow.api_name){
|
|
113
|
-
this.logger.warn(`not find api_name in file`);
|
|
114
|
-
return ;
|
|
115
|
-
}
|
|
116
|
-
const dbFlow = db.flows.findOne({api_name: flow.api_name});
|
|
117
|
-
if(!dbFlow){
|
|
118
|
-
if(flow && flow.current){
|
|
119
|
-
if(!_.has(flow.current,'fields')){
|
|
120
|
-
flow.current.fields = [];
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
this.logger.info(`insert flow ${flow.api_name} from ${name}`);
|
|
124
|
-
|
|
125
|
-
let company_id = null;
|
|
126
|
-
if(flow.company_id){
|
|
127
|
-
let count = Creator.getCollection("company").find({ _id: flow.company_id, space: space._id }).count();
|
|
128
|
-
if(count > 0){
|
|
129
|
-
company_id = flow.company_id
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
return steedosImport.workflow(space.owner, space._id, flow, flow.state == 'enabled' ? true : false, company_id);
|
|
134
|
-
}
|
|
135
|
-
this.logger.debug(`not import flow. find flow `, dbFlow._id)
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
} catch (error) {
|
|
139
|
-
this.logger.error(error)
|
|
140
|
-
}
|
|
141
|
-
}).promise();
|
|
142
|
-
|
|
123
|
+
return await this.broker.call('steedos-server.importFlow', {flow, name});
|
|
143
124
|
},
|
|
144
125
|
loadDataOnServiceStarted: async function(){
|
|
145
126
|
let packageInfo = this.settings.packageInfo;
|
|
@@ -156,43 +137,23 @@ module.exports = {
|
|
|
156
137
|
},
|
|
157
138
|
loadPackageMetadataFiles: async function (packagePath, name, datasourceName) {
|
|
158
139
|
this.broker.logger.debug(`Loading package from ${packagePath}`)
|
|
140
|
+
packagePath = path.join(packagePath, '**');
|
|
159
141
|
if (!datasourceName) {
|
|
160
142
|
datasourceName = 'default';
|
|
161
143
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
if(datasource){
|
|
166
|
-
await datasource.init();
|
|
144
|
+
if(this.objectql){
|
|
145
|
+
await this.initDataSource(packagePath, datasourceName);
|
|
146
|
+
await loadStandardMetadata(name, datasourceName);
|
|
167
147
|
}
|
|
168
|
-
await
|
|
169
|
-
await objectql.addAllConfigFiles(packagePath, datasourceName, name);
|
|
148
|
+
await registerMetadataConfigs(packagePath, datasourceName, name);
|
|
170
149
|
await triggerLoader.load(this.broker, packagePath, name);
|
|
171
150
|
await processTriggerLoader.load(this.broker, packagePath, name);
|
|
172
151
|
await triggerYmlLoader.load(this.broker, packagePath, name);
|
|
173
|
-
core
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
if(oldRoutersInfo){
|
|
178
|
-
_.each(oldRoutersInfo.metadata, (info)=>{
|
|
179
|
-
const _info = _.find(routersInfo, (item)=>{
|
|
180
|
-
return item.path == info.path && JSON.stringify(item.methods) == JSON.stringify(info.methods) && item.md5 == info.md5
|
|
181
|
-
})
|
|
182
|
-
if(!_info){
|
|
183
|
-
core.removeRouter(info.path, info.methods)
|
|
184
|
-
}
|
|
185
|
-
})
|
|
152
|
+
if(this.core){
|
|
153
|
+
this.core.loadClientScripts();
|
|
154
|
+
const routersInfo = await this.loadPackageRouters(packagePath, name);
|
|
155
|
+
await this.broker.call(`@steedos/service-packages.setPackageRoutersInfo`, {packageName: name, data: routersInfo});
|
|
186
156
|
}
|
|
187
|
-
const _routers = [];
|
|
188
|
-
routersData.forEach(element => {
|
|
189
|
-
// if(element.router.default === require('@steedos/router').staticRouter()){
|
|
190
|
-
// objectql.broker.broker.logger.warn(`router error, packagePath: ${packagePath} `);
|
|
191
|
-
// }
|
|
192
|
-
_routers.push(element)
|
|
193
|
-
});
|
|
194
|
-
core.loadRouters(_routers);
|
|
195
|
-
await this.broker.call(`@steedos/service-packages.setPackageRoutersInfo`, {packageName: name, data: routersInfo});
|
|
196
157
|
await this.broker.emit(`translations.object.change`, {});
|
|
197
158
|
return;
|
|
198
159
|
},
|
|
@@ -204,7 +165,8 @@ module.exports = {
|
|
|
204
165
|
const matchedPaths = metaDataCore.syncMatchFiles(filePatten);
|
|
205
166
|
for await (const serviceFilePath of matchedPaths) {
|
|
206
167
|
try {
|
|
207
|
-
|
|
168
|
+
metaDataCore.clearRequireCache(serviceFilePath);
|
|
169
|
+
const service = this.broker.loadService(serviceFilePath);
|
|
208
170
|
this.packageServices.push(service);
|
|
209
171
|
if (!this.broker.started) {
|
|
210
172
|
this.broker._restartService(service)
|
|
@@ -228,19 +190,24 @@ module.exports = {
|
|
|
228
190
|
return
|
|
229
191
|
}
|
|
230
192
|
|
|
231
|
-
this.settings.loadedPackagePublicFiles = true;
|
|
232
193
|
try {
|
|
233
|
-
const
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
194
|
+
const express = require('express');
|
|
195
|
+
this.settings.loadedPackagePublicFiles = true;
|
|
196
|
+
try {
|
|
197
|
+
const router = require('@steedos/router').staticRouter();
|
|
198
|
+
let routerPath = "";
|
|
199
|
+
if (__meteor_runtime_config__.ROOT_URL_PATH_PREFIX) {
|
|
200
|
+
routerPath = __meteor_runtime_config__.ROOT_URL_PATH_PREFIX;
|
|
201
|
+
}
|
|
202
|
+
const cacheTime = 86400000 * 1; // one day
|
|
203
|
+
router.use(routerPath, express.static(publicPath, { maxAge: cacheTime }));
|
|
204
|
+
// WebApp.connectHandlers.use(router);
|
|
205
|
+
} catch (error) {
|
|
206
|
+
console.error(error)
|
|
207
|
+
this.settings.loadedPackagePublicFiles = false;
|
|
237
208
|
}
|
|
238
|
-
const cacheTime = 86400000 * 1; // one day
|
|
239
|
-
router.use(routerPath, express.static(publicPath, { maxAge: cacheTime }));
|
|
240
|
-
// WebApp.connectHandlers.use(router);
|
|
241
209
|
} catch (error) {
|
|
242
|
-
|
|
243
|
-
this.settings.loadedPackagePublicFiles = false;
|
|
210
|
+
|
|
244
211
|
}
|
|
245
212
|
}
|
|
246
213
|
},
|
|
@@ -252,6 +219,9 @@ module.exports = {
|
|
|
252
219
|
return await this.broker.destroyService(this);
|
|
253
220
|
},
|
|
254
221
|
async onStarted(){
|
|
222
|
+
|
|
223
|
+
this.checkPackageMetadataFiles(this.settings.packageInfo.path)
|
|
224
|
+
|
|
255
225
|
if(this.beforeStart){
|
|
256
226
|
try {
|
|
257
227
|
await this.beforeStart()
|
|
@@ -278,7 +248,7 @@ module.exports = {
|
|
|
278
248
|
await this.loadPackageMetadataFiles(_path, this.name, datasource);
|
|
279
249
|
if(isPackage !== false){
|
|
280
250
|
try {
|
|
281
|
-
const _packageInfo =
|
|
251
|
+
const _packageInfo = metaDataCore.loadJSONFile(path.join(_path, 'package.json'));
|
|
282
252
|
await this.broker.call(`@steedos/service-packages.online`, {serviceInfo: {name: this.name, nodeID: this.broker.nodeID, instanceID: this.broker.instanceID, path: _path, version: _packageInfo.version, description: _packageInfo.description}})
|
|
283
253
|
} catch (error) {
|
|
284
254
|
|
|
@@ -297,6 +267,35 @@ module.exports = {
|
|
|
297
267
|
this.broker.logger.error(`[${this.name}]: ${error.message}`);
|
|
298
268
|
}
|
|
299
269
|
}
|
|
270
|
+
},
|
|
271
|
+
async loadPackageRouters(packagePath, name){
|
|
272
|
+
let routersData = loadRouters(packagePath);
|
|
273
|
+
let oldRoutersInfo = await this.broker.call(`@steedos/service-packages.getPackageRoutersInfo`, {packageName: name})
|
|
274
|
+
let routersInfo = _.flattenDeep(_.map(routersData, 'infoList'));
|
|
275
|
+
if(oldRoutersInfo){
|
|
276
|
+
_.each(oldRoutersInfo.metadata, (info)=>{
|
|
277
|
+
const _info = _.find(routersInfo, (item)=>{
|
|
278
|
+
return item.path == info.path && JSON.stringify(item.methods) == JSON.stringify(info.methods) && item.md5 == info.md5
|
|
279
|
+
})
|
|
280
|
+
if(!_info){
|
|
281
|
+
this.core.removeRouter(info.path, info.methods)
|
|
282
|
+
}
|
|
283
|
+
})
|
|
284
|
+
}
|
|
285
|
+
const _routers = [];
|
|
286
|
+
routersData.forEach(element => {
|
|
287
|
+
_routers.push(element)
|
|
288
|
+
});
|
|
289
|
+
this.core.loadRouters(_routers);
|
|
290
|
+
return routersInfo
|
|
291
|
+
},
|
|
292
|
+
async initDataSource(packagePath, datasourceName){
|
|
293
|
+
this.objectql.getSteedosSchema(this.broker);
|
|
294
|
+
packagePath = path.join(packagePath, '**');
|
|
295
|
+
const datasource = this.objectql.getDataSource(datasourceName);
|
|
296
|
+
if(datasource){
|
|
297
|
+
await datasource.init();
|
|
298
|
+
}
|
|
300
299
|
}
|
|
301
300
|
},
|
|
302
301
|
|
|
@@ -304,8 +303,23 @@ module.exports = {
|
|
|
304
303
|
* Service created lifecycle event handler
|
|
305
304
|
*/
|
|
306
305
|
created() {
|
|
306
|
+
if(!global.broker){
|
|
307
|
+
global.broker = this.broker;
|
|
308
|
+
}
|
|
307
309
|
this.packageServices = []; //此属性不能放到settings下,否则会导致mo clone settings 时 内存溢出。
|
|
308
310
|
this.logger.debug('service package loader created!!!');
|
|
311
|
+
|
|
312
|
+
try {
|
|
313
|
+
this.core = require('@steedos/core');
|
|
314
|
+
} catch (e) {
|
|
315
|
+
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
try {
|
|
319
|
+
this.objectql = require('@steedos/objectql');
|
|
320
|
+
} catch (e) {
|
|
321
|
+
|
|
322
|
+
}
|
|
309
323
|
},
|
|
310
324
|
|
|
311
325
|
merged(schema) {
|
|
@@ -344,15 +358,16 @@ module.exports = {
|
|
|
344
358
|
}
|
|
345
359
|
};
|
|
346
360
|
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
361
|
+
if(this.core){
|
|
362
|
+
let oldRoutersInfo = await this.broker.call(`@steedos/service-packages.getPackageRoutersInfo`, {packageName: this.name})
|
|
363
|
+
if(oldRoutersInfo){
|
|
364
|
+
_.each(oldRoutersInfo.metadata, (info)=>{
|
|
365
|
+
this.core.removeRouter(info.path, info.methods)
|
|
366
|
+
})
|
|
367
|
+
}
|
|
368
|
+
await this.core.deletePackageClientScripts(this.name);
|
|
369
|
+
await this.core.loadClientScripts();
|
|
352
370
|
}
|
|
353
|
-
|
|
354
|
-
objectql.deletePackageClientScripts(this.name);
|
|
355
|
-
core.loadClientScripts();
|
|
356
371
|
this.broker.call(`@steedos/service-packages.offline`, {serviceInfo: {name: this.name, nodeID: this.broker.nodeID, instanceID: this.broker.instanceID}})
|
|
357
372
|
await this.broker.call(`metadata.refreshServiceMetadatas`, { offlinePackageServices: [{
|
|
358
373
|
name: this.name,
|
|
@@ -4,9 +4,18 @@ exports.sendPackageProcessToDb = exports.load = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const _ = require("underscore");
|
|
6
6
|
const path = require("path");
|
|
7
|
-
const objectql_1 = require("@steedos/objectql");
|
|
8
7
|
const metadata_core_1 = require("@steedos/metadata-core");
|
|
8
|
+
const metadata_registrar_1 = require("@steedos/metadata-registrar");
|
|
9
9
|
const loadProcessFile = new metadata_core_1.LoadProcessFile();
|
|
10
|
+
function getObject(objectName) {
|
|
11
|
+
try {
|
|
12
|
+
const objectql = require('@steedos/objectql');
|
|
13
|
+
return objectql.getObject(objectName);
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
10
19
|
function load(broker, packagePath, packageServiceName) {
|
|
11
20
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
12
21
|
let filePath = path.join(packagePath, "**");
|
|
@@ -27,7 +36,7 @@ function load(broker, packagePath, packageServiceName) {
|
|
|
27
36
|
}));
|
|
28
37
|
}
|
|
29
38
|
if (data.length > 0) {
|
|
30
|
-
yield
|
|
39
|
+
yield metadata_registrar_1.registerProcess.mregister(broker, packageServiceName, data);
|
|
31
40
|
}
|
|
32
41
|
});
|
|
33
42
|
}
|
|
@@ -39,9 +48,12 @@ function sendPackageProcessToDb(packagePath) {
|
|
|
39
48
|
if (_.isEmpty(processes)) {
|
|
40
49
|
return;
|
|
41
50
|
}
|
|
42
|
-
const processObj =
|
|
43
|
-
const processVersionsObj =
|
|
44
|
-
const spaceObj =
|
|
51
|
+
const processObj = getObject('process');
|
|
52
|
+
const processVersionsObj = getObject('process_versions');
|
|
53
|
+
const spaceObj = getObject('spaces');
|
|
54
|
+
if (!processObj || !processVersionsObj || !spaceObj) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
45
57
|
const spaceDoc = (yield spaceObj.find({}))[0];
|
|
46
58
|
if (!spaceDoc) {
|
|
47
59
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/processLoader/index.ts"],"names":[],"mappings":";;;;AAOA,gCAAgC;AAChC,6BAA6B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/processLoader/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,14 +4,15 @@ exports.load = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const _ = require("underscore");
|
|
6
6
|
const path = require("path");
|
|
7
|
-
const
|
|
7
|
+
const metadata_core_1 = require("@steedos/metadata-core");
|
|
8
|
+
const metadata_registrar_1 = require("@steedos/metadata-registrar");
|
|
8
9
|
const ENUM_WHEN = ['beforeDraftInsert', 'afterDraftInsert', 'beforeDraftSubmit', 'afterDraftSubmit', 'beforeStepSubmit', 'afterStepSubmit', 'cacluateNextStepUsers',
|
|
9
10
|
'beforeCancel', 'afterCancel', 'beforeTerminate', 'afterTerminate', 'beforeEnd', 'afterEnd'];
|
|
10
11
|
const LISTENTO_ALL_FLOWS = 'LISTENTO_ALL_FLOWS';
|
|
11
12
|
function load(broker, packagePath, packageServiceName) {
|
|
12
13
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
13
14
|
let filePath = path.join(packagePath, "**");
|
|
14
|
-
let wTriggers = (0,
|
|
15
|
+
let wTriggers = (0, metadata_registrar_1.loadProcessTriggers)(filePath);
|
|
15
16
|
if (_.isEmpty(wTriggers)) {
|
|
16
17
|
return;
|
|
17
18
|
}
|
|
@@ -22,14 +23,14 @@ function load(broker, packagePath, packageServiceName) {
|
|
|
22
23
|
if (!handler) {
|
|
23
24
|
continue;
|
|
24
25
|
}
|
|
25
|
-
let name = wt.name || (0,
|
|
26
|
+
let name = wt.name || (0, metadata_core_1.getMD5)((0, metadata_core_1.JSONStringify)(wt));
|
|
26
27
|
let config = {
|
|
27
28
|
name: name,
|
|
28
29
|
"listenTo": wt.listenTo == '*' ? LISTENTO_ALL_FLOWS : wt.listenTo,
|
|
29
30
|
"when": when,
|
|
30
31
|
"handler": handler.toString()
|
|
31
32
|
};
|
|
32
|
-
yield
|
|
33
|
+
yield metadata_registrar_1.registerProcessTrigger.register(broker, packageServiceName, config);
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/processTriggerLoader/index.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/processTriggerLoader/index.ts"],"names":[],"mappings":";;;;AAOA,gCAAgC;AAChC,6BAA6B;AAC7B,0DAA+D;AAE/D,oEAA0F;AAE1F,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,wCAAmB,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,sBAAM,EAAC,IAAA,6BAAa,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,2CAAsB,CAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;iBAC7E;aAEJ;SACJ;IAEL,CAAC;CAAA;AA3BD,oBA2BC"}
|
|
@@ -4,19 +4,29 @@ exports.load = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const _ = require("underscore");
|
|
6
6
|
const path = require("path");
|
|
7
|
-
const
|
|
7
|
+
const metadata_core_1 = require("@steedos/metadata-core");
|
|
8
|
+
const metadata_registrar_1 = require("@steedos/metadata-registrar");
|
|
8
9
|
const TRIGGERKEYS = ['beforeFind', 'beforeInsert', 'beforeUpdate', 'beforeDelete', 'afterFind', 'afterInsert', 'afterUpdate', 'afterDelete', 'afterFindOne', 'afterCount'];
|
|
10
|
+
function getObject(objectName) {
|
|
11
|
+
try {
|
|
12
|
+
const objectql = require('@steedos/objectql');
|
|
13
|
+
return objectql.getObject(objectName);
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
9
19
|
function load(broker, packagePath, packageServiceName) {
|
|
10
20
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
11
21
|
let actions = {};
|
|
12
22
|
let serviceName = `~triggers-${packageServiceName}`;
|
|
13
23
|
let filePath = path.join(packagePath, "**");
|
|
14
|
-
let objTriggers = (0,
|
|
24
|
+
let objTriggers = (0, metadata_registrar_1.loadObjectTriggers)(filePath, packageServiceName);
|
|
15
25
|
if (_.isEmpty(objTriggers)) {
|
|
16
26
|
return;
|
|
17
27
|
}
|
|
18
28
|
for (const trigger of objTriggers) {
|
|
19
|
-
const actionTriggerName = (0,
|
|
29
|
+
const actionTriggerName = (0, metadata_core_1.getMD5)((0, metadata_core_1.JSONStringify)(trigger));
|
|
20
30
|
actions[actionTriggerName] = generateActionTrigger(trigger);
|
|
21
31
|
broker.emit('trigger.loaded', {
|
|
22
32
|
objectName: trigger['listenTo']
|
|
@@ -96,7 +106,10 @@ function generateActionTrigger(trigger) {
|
|
|
96
106
|
}
|
|
97
107
|
}
|
|
98
108
|
if (when) {
|
|
99
|
-
const object =
|
|
109
|
+
const object = getObject(objectName);
|
|
110
|
+
if (!object) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
100
113
|
yield object.runTriggers(when, context);
|
|
101
114
|
return context;
|
|
102
115
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/triggerLoader/index.ts"],"names":[],"mappings":";;;;AAOA,gCAAgC;AAChC,6BAA6B;AAC7B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/triggerLoader/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steedos/service-package-loader",
|
|
3
|
-
"version": "2.5.1",
|
|
3
|
+
"version": "2.5.3-beta.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -10,10 +10,9 @@
|
|
|
10
10
|
"author": "",
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@steedos/core": "2.5.1",
|
|
14
|
-
"@steedos/metadata-
|
|
15
|
-
"@steedos/
|
|
16
|
-
"@steedos/router": "2.5.1",
|
|
13
|
+
"@steedos/metadata-core": "2.5.3-beta.1",
|
|
14
|
+
"@steedos/metadata-registrar": "2.5.3-beta.1",
|
|
15
|
+
"@steedos/router": "2.5.3-beta.1",
|
|
17
16
|
"clone": "^2.1.2",
|
|
18
17
|
"moleculer": "^0.14.25",
|
|
19
18
|
"underscore": "^1.12.0"
|
|
@@ -25,5 +24,5 @@
|
|
|
25
24
|
"publishConfig": {
|
|
26
25
|
"access": "public"
|
|
27
26
|
},
|
|
28
|
-
"gitHead": "
|
|
27
|
+
"gitHead": "a2e723ed4256279e8e6fa9f67d7f607c83f8638f"
|
|
29
28
|
}
|
|
@@ -1,17 +1,26 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* @Author: sunhaolin@hotoa.com
|
|
3
3
|
* @Date: 2022-03-30 11:49:53
|
|
4
|
-
* @LastEditors:
|
|
5
|
-
* @LastEditTime:
|
|
4
|
+
* @LastEditors: baozhoutao@steedos.com
|
|
5
|
+
* @LastEditTime: 2023-05-30 09:33:01
|
|
6
6
|
* @Description:
|
|
7
7
|
*/
|
|
8
8
|
import * as _ from "underscore";
|
|
9
9
|
import * as path from "path";
|
|
10
|
-
import { registerProcess, getObject } from "@steedos/objectql";
|
|
11
10
|
import { Process } from "./types";
|
|
12
11
|
import { LoadProcessFile } from '@steedos/metadata-core';
|
|
12
|
+
import { registerProcess } from '@steedos/metadata-registrar';
|
|
13
13
|
const loadProcessFile = new LoadProcessFile();
|
|
14
14
|
|
|
15
|
+
function getObject(objectName: string) {
|
|
16
|
+
try {
|
|
17
|
+
const objectql = require('@steedos/objectql');
|
|
18
|
+
return objectql.getObject(objectName);
|
|
19
|
+
} catch (error) {
|
|
20
|
+
return null
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
15
24
|
export async function load(broker: any, packagePath: string, packageServiceName: string) {
|
|
16
25
|
let filePath = path.join(packagePath, "**");
|
|
17
26
|
let processes = loadProcessFile.load(filePath);
|
|
@@ -50,6 +59,9 @@ export async function sendPackageProcessToDb(packagePath: string) {
|
|
|
50
59
|
const processObj = getObject('process');
|
|
51
60
|
const processVersionsObj = getObject('process_versions');
|
|
52
61
|
const spaceObj = getObject('spaces');
|
|
62
|
+
if(!processObj || !processVersionsObj || !spaceObj){
|
|
63
|
+
return ;
|
|
64
|
+
}
|
|
53
65
|
const spaceDoc = (await spaceObj.find({}))[0];
|
|
54
66
|
// 如果没有工作区信息则说明为空库,不加载
|
|
55
67
|
if (!spaceDoc) {
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: baozhoutao@steedos.com
|
|
3
|
+
* @Date: 2022-05-16 11:55:06
|
|
4
|
+
* @LastEditors: baozhoutao@steedos.com
|
|
5
|
+
* @LastEditTime: 2023-05-30 09:47:15
|
|
6
|
+
* @Description:
|
|
7
|
+
*/
|
|
1
8
|
import * as _ from "underscore";
|
|
2
9
|
import * as path from "path";
|
|
3
|
-
import { getMD5, JSONStringify
|
|
10
|
+
import { getMD5, JSONStringify } from '@steedos/metadata-core';
|
|
4
11
|
import { Trigger } from "./types";
|
|
12
|
+
import { registerProcessTrigger, loadProcessTriggers } from "@steedos/metadata-registrar";
|
|
5
13
|
|
|
6
14
|
const ENUM_WHEN = ['beforeDraftInsert', 'afterDraftInsert', 'beforeDraftSubmit', 'afterDraftSubmit', 'beforeStepSubmit', 'afterStepSubmit', 'cacluateNextStepUsers',
|
|
7
15
|
'beforeCancel', 'afterCancel', 'beforeTerminate', 'afterTerminate', 'beforeEnd', 'afterEnd'];
|
|
@@ -1,16 +1,28 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* @Author: sunhaolin@hotoa.com
|
|
3
3
|
* @Date: 2022-06-12 19:08:48
|
|
4
|
-
* @LastEditors:
|
|
5
|
-
* @LastEditTime: 2023-
|
|
4
|
+
* @LastEditors: baozhoutao@steedos.com
|
|
5
|
+
* @LastEditTime: 2023-05-30 09:52:23
|
|
6
6
|
* @Description: 加载*.trigger.js文件注册为新版action trigger
|
|
7
7
|
*/
|
|
8
8
|
import * as _ from "underscore";
|
|
9
9
|
import * as path from "path";
|
|
10
|
-
import {
|
|
10
|
+
import { JSONStringify, getMD5 } from "@steedos/metadata-core";
|
|
11
|
+
import { loadObjectTriggers } from "@steedos/metadata-registrar";
|
|
12
|
+
|
|
13
|
+
|
|
11
14
|
|
|
12
15
|
const TRIGGERKEYS = ['beforeFind', 'beforeInsert', 'beforeUpdate', 'beforeDelete', 'afterFind', 'afterInsert', 'afterUpdate', 'afterDelete', 'afterFindOne', 'afterCount']
|
|
13
16
|
|
|
17
|
+
function getObject(objectName: string) {
|
|
18
|
+
try {
|
|
19
|
+
const objectql = require('@steedos/objectql');
|
|
20
|
+
return objectql.getObject(objectName);
|
|
21
|
+
} catch (error) {
|
|
22
|
+
return null
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
14
26
|
export async function load(broker: any, packagePath: string, packageServiceName: string) {
|
|
15
27
|
let actions = {};
|
|
16
28
|
let serviceName = `~triggers-${packageServiceName}`;
|
|
@@ -86,9 +98,9 @@ function generateActionTrigger(trigger) {
|
|
|
86
98
|
isInsert, isUpdate, isDelete, isFind, isBefore, isAfter, isFindOne, isCount,
|
|
87
99
|
id, doc, previousDoc,
|
|
88
100
|
// size,
|
|
89
|
-
userId, spaceId, objectName, query, data }:
|
|
101
|
+
userId, spaceId, objectName, query, data }: any = ctx.params;
|
|
90
102
|
|
|
91
|
-
const context:
|
|
103
|
+
const context: any = {
|
|
92
104
|
id,
|
|
93
105
|
userId,
|
|
94
106
|
spaceId,
|
|
@@ -129,6 +141,9 @@ function generateActionTrigger(trigger) {
|
|
|
129
141
|
|
|
130
142
|
if (when) {
|
|
131
143
|
const object = getObject(objectName);
|
|
144
|
+
if(!object){
|
|
145
|
+
return ;
|
|
146
|
+
}
|
|
132
147
|
await object.runTriggers(when, context);
|
|
133
148
|
return context;
|
|
134
149
|
}
|