@steedos/objectql 3.0.13-beta.3 → 3.0.13-beta.30
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/lib/actions/field_updates.js +84 -153
- package/lib/actions/field_updates.js.map +1 -1
- package/lib/actions/index.js +1 -1
- package/lib/actions/workflow_notifications.js +50 -111
- package/lib/actions/workflow_notifications.js.map +1 -1
- package/lib/actions/workflow_outbound_messages.js +43 -94
- package/lib/actions/workflow_outbound_messages.js.map +1 -1
- package/lib/actions/workflow_rule.js +80 -177
- package/lib/actions/workflow_rule.js.map +1 -1
- package/lib/broker.js +19 -49
- package/lib/broker.js.map +1 -1
- package/lib/driver/field-encrytion/index.js +1 -1
- package/lib/driver/field-encrytion/mongosharedconst.js +17 -17
- package/lib/driver/field-encrytion/mongosharedconst.js.map +1 -1
- package/lib/driver/format.js +3 -3
- package/lib/driver/format.js.map +1 -1
- package/lib/driver/index.js +1 -1
- package/lib/driver/metadata.js +283 -387
- package/lib/driver/metadata.js.map +1 -1
- package/lib/driver/metadataOld.js +104 -105
- package/lib/driver/metadataOld.js.map +1 -1
- package/lib/driver/meteorMongo.js +5 -8
- package/lib/driver/meteorMongo.js.map +1 -1
- package/lib/driver/mongo.js +321 -506
- package/lib/driver/mongo.js.map +1 -1
- package/lib/driver/mysql.js +16 -20
- package/lib/driver/mysql.js.map +1 -1
- package/lib/driver/oracle.js +25 -38
- package/lib/driver/oracle.js.map +1 -1
- package/lib/driver/postgres.js +16 -20
- package/lib/driver/postgres.js.map +1 -1
- package/lib/driver/sqlite3.js +15 -19
- package/lib/driver/sqlite3.js.map +1 -1
- package/lib/driver/sqlserver.js +20 -33
- package/lib/driver/sqlserver.js.map +1 -1
- package/lib/errors/index.js +10 -11
- package/lib/errors/index.js.map +1 -1
- package/lib/formula/core.js +307 -594
- package/lib/formula/core.js.map +1 -1
- package/lib/formula/field_formula.js +80 -126
- package/lib/formula/field_formula.js.map +1 -1
- package/lib/formula/index.js +56 -97
- package/lib/formula/index.js.map +1 -1
- package/lib/formula/params.js +11 -11
- package/lib/formula/params.js.map +1 -1
- package/lib/formula/recompute.js +41 -166
- package/lib/formula/recompute.js.map +1 -1
- package/lib/formula/simple_params.js +12 -12
- package/lib/formula/simple_params.js.map +1 -1
- package/lib/formula/util.js +43 -67
- package/lib/formula/util.js.map +1 -1
- package/lib/functions/function.js +62 -87
- package/lib/functions/function.js.map +1 -1
- package/lib/index.js +3 -3
- package/lib/index.js.map +1 -1
- package/lib/services/datasourceServiceFactory.js +77 -111
- package/lib/services/datasourceServiceFactory.js.map +1 -1
- package/lib/services/index.js +3 -3
- package/lib/services/index.js.map +1 -1
- package/lib/summary/core.js +162 -355
- package/lib/summary/core.js.map +1 -1
- package/lib/summary/field_summary.js +44 -71
- package/lib/summary/field_summary.js.map +1 -1
- package/lib/summary/index.js +65 -80
- package/lib/summary/index.js.map +1 -1
- package/lib/summary/recompute.js +19 -47
- package/lib/summary/recompute.js.map +1 -1
- package/lib/triggers/trigger.js +101 -142
- package/lib/triggers/trigger.js.map +1 -1
- package/lib/ts-types/index.js +1 -1
- package/lib/typeorm/driver.js +250 -450
- package/lib/typeorm/driver.js.map +1 -1
- package/lib/typeorm/index.js +1 -1
- package/lib/typeorm/util.js +28 -28
- package/lib/typeorm/util.js.map +1 -1
- package/lib/types/action.js +24 -33
- package/lib/types/action.js.map +1 -1
- package/lib/types/app.js +210 -355
- package/lib/types/app.js.map +1 -1
- package/lib/types/connection.js +42 -78
- package/lib/types/connection.js.map +1 -1
- package/lib/types/dashboard.js +56 -77
- package/lib/types/dashboard.js.map +1 -1
- package/lib/types/datasource.js +359 -705
- package/lib/types/datasource.js.map +1 -1
- package/lib/types/defaultValue.js +53 -65
- package/lib/types/defaultValue.js.map +1 -1
- package/lib/types/field.js +165 -137
- package/lib/types/field.js.map +1 -1
- package/lib/types/field_permission.js +35 -66
- package/lib/types/field_permission.js.map +1 -1
- package/lib/types/index.js +1 -1
- package/lib/types/list_view.js +36 -43
- package/lib/types/list_view.js.map +1 -1
- package/lib/types/metadata.js +6 -6
- package/lib/types/metadata.js.map +1 -1
- package/lib/types/method_base.js +95 -128
- package/lib/types/method_base.js.map +1 -1
- package/lib/types/object.js +2005 -3015
- package/lib/types/object.js.map +1 -1
- package/lib/types/object_events.js +24 -37
- package/lib/types/object_events.js.map +1 -1
- package/lib/types/object_layouts.js +15 -38
- package/lib/types/object_layouts.js.map +1 -1
- package/lib/types/object_permission.js +99 -85
- package/lib/types/object_permission.js.map +1 -1
- package/lib/types/report.js +70 -98
- package/lib/types/report.js.map +1 -1
- package/lib/types/restrictionRule.js +47 -96
- package/lib/types/restrictionRule.js.map +1 -1
- package/lib/types/schema.js +115 -177
- package/lib/types/schema.js.map +1 -1
- package/lib/types/shareRule.js +53 -102
- package/lib/types/shareRule.js.map +1 -1
- package/lib/types/trigger.js +43 -56
- package/lib/types/trigger.js.map +1 -1
- package/lib/types/validation_rules.js +18 -56
- package/lib/types/validation_rules.js.map +1 -1
- package/lib/util/convert.js +24 -24
- package/lib/util/convert.js.map +1 -1
- package/lib/util/field.js +16 -28
- package/lib/util/field.js.map +1 -1
- package/lib/util/function_expression.js +7 -8
- package/lib/util/function_expression.js.map +1 -1
- package/lib/util/index.js +79 -97
- package/lib/util/index.js.map +1 -1
- package/lib/util/locale.js +4 -4
- package/lib/util/locale.js.map +1 -1
- package/lib/util/permission_shares.js +7 -7
- package/lib/util/permission_shares.js.map +1 -1
- package/lib/util/suffix.js +19 -19
- package/lib/util/suffix.js.map +1 -1
- package/lib/util/transform.js +1 -1
- package/lib/validators/index.js +10 -10
- package/lib/validators/index.js.map +1 -1
- package/package.json +12 -12
|
@@ -3,35 +3,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getFieldUpdateActionTargetObjectName = getFieldUpdateActionTargetObjectName;
|
|
4
4
|
exports.runFieldUpdateAction = runFieldUpdateAction;
|
|
5
5
|
exports.runFieldUpdateActions = runFieldUpdateActions;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
return [3, 5];
|
|
23
|
-
case 1: return [2, null];
|
|
24
|
-
case 2: return [2, action.literal_value];
|
|
25
|
-
case 3: return [4, (0, index_1.computeFormula)(action.formula, action.object_name, recordId, userSession)];
|
|
26
|
-
case 4: return [2, _b.sent()];
|
|
27
|
-
case 5: return [2];
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
}); };
|
|
6
|
+
const index_1 = require("../index");
|
|
7
|
+
const formula_1 = require("../formula");
|
|
8
|
+
const summary_1 = require("../summary");
|
|
9
|
+
const _ = require('underscore');
|
|
10
|
+
const getFieldValue = async (action, recordId, userSession) => {
|
|
11
|
+
switch (action.operation) {
|
|
12
|
+
case 'null':
|
|
13
|
+
return null;
|
|
14
|
+
case 'literal':
|
|
15
|
+
return action.literal_value;
|
|
16
|
+
case 'formula':
|
|
17
|
+
return await (0, index_1.computeFormula)(action.formula, action.object_name, recordId, userSession);
|
|
18
|
+
default:
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
31
22
|
function getFieldUpdateActionTargetObjectName(action) {
|
|
32
|
-
|
|
23
|
+
const isCrossedObject = action.target_object != action.object_name;
|
|
33
24
|
if (isCrossedObject) {
|
|
34
|
-
|
|
25
|
+
let result = (0, index_1.getObject)(action.object_name).getField(action.target_object).reference_to;
|
|
35
26
|
if (!_.isString(result)) {
|
|
36
27
|
throw new index_1.SteedosError('target_object must be a string');
|
|
37
28
|
}
|
|
@@ -41,133 +32,73 @@ function getFieldUpdateActionTargetObjectName(action) {
|
|
|
41
32
|
return action.object_name;
|
|
42
33
|
}
|
|
43
34
|
}
|
|
44
|
-
function runFieldUpdateAction(action, recordId, userSession) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
_d.sent();
|
|
96
|
-
return [4, (0, summary_1.runQuotedByObjectFieldSummaries)(mainObjectName, recordIdToUpdate, null, userSession, {
|
|
97
|
-
fieldNames: [action.field_name]
|
|
98
|
-
})];
|
|
99
|
-
case 11:
|
|
100
|
-
_d.sent();
|
|
101
|
-
_d.label = 12;
|
|
102
|
-
case 12: return [3, 14];
|
|
103
|
-
case 13:
|
|
104
|
-
needToReevaluate = false;
|
|
105
|
-
_d.label = 14;
|
|
106
|
-
case 14:
|
|
107
|
-
if (needToReevaluate) {
|
|
108
|
-
return [2, {
|
|
109
|
-
object_name: mainObjectName,
|
|
110
|
-
record_id: recordIdToUpdate,
|
|
111
|
-
field_name: action.field_name,
|
|
112
|
-
previous_record: previousRecord
|
|
113
|
-
}];
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
return [2, null];
|
|
117
|
-
}
|
|
118
|
-
return [2];
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
});
|
|
35
|
+
async function runFieldUpdateAction(action, recordId, userSession) {
|
|
36
|
+
const record = await (0, index_1.getObject)(action.object_name).findOne(recordId, null);
|
|
37
|
+
let recordIdToUpdate;
|
|
38
|
+
let previousRecord;
|
|
39
|
+
let needToReevaluate = false;
|
|
40
|
+
const isCrossedObject = action.target_object != action.object_name;
|
|
41
|
+
const mainObjectName = getFieldUpdateActionTargetObjectName(action);
|
|
42
|
+
if (isCrossedObject) {
|
|
43
|
+
recordIdToUpdate = record[action.target_object];
|
|
44
|
+
previousRecord = recordIdToUpdate && await (0, index_1.getObject)(mainObjectName).findOne(recordIdToUpdate, null);
|
|
45
|
+
needToReevaluate = true;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
recordIdToUpdate = record._id;
|
|
49
|
+
previousRecord = record;
|
|
50
|
+
needToReevaluate = action.reevaluate_on_change;
|
|
51
|
+
}
|
|
52
|
+
const objectToUpdate = (0, index_1.getObject)(mainObjectName);
|
|
53
|
+
const fieldToUpdate = objectToUpdate.getField(action.field_name);
|
|
54
|
+
if (["formula", "summary", "autonumber"].indexOf(fieldToUpdate.type) > -1) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
const newFieldValue = await getFieldValue(action, recordId, userSession);
|
|
58
|
+
if (recordIdToUpdate && newFieldValue !== (previousRecord && previousRecord[action.field_name])) {
|
|
59
|
+
if (action.undirect === true) {
|
|
60
|
+
await objectToUpdate.update(recordIdToUpdate, { [action.field_name]: newFieldValue });
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
await objectToUpdate.directUpdate(recordIdToUpdate, { [action.field_name]: newFieldValue });
|
|
64
|
+
await (0, formula_1.runQuotedByObjectFieldFormulas)(mainObjectName, recordIdToUpdate, userSession, {
|
|
65
|
+
fieldNames: [action.field_name]
|
|
66
|
+
});
|
|
67
|
+
await (0, summary_1.runQuotedByObjectFieldSummaries)(mainObjectName, recordIdToUpdate, null, userSession, {
|
|
68
|
+
fieldNames: [action.field_name]
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
needToReevaluate = false;
|
|
74
|
+
}
|
|
75
|
+
if (needToReevaluate) {
|
|
76
|
+
return {
|
|
77
|
+
object_name: mainObjectName,
|
|
78
|
+
record_id: recordIdToUpdate,
|
|
79
|
+
field_name: action.field_name,
|
|
80
|
+
previous_record: previousRecord
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
122
86
|
}
|
|
123
|
-
function runFieldUpdateActions(ids, recordId, userSession, spaceId) {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
if (!!_.isEmpty(filters)) return [3, 9];
|
|
136
|
-
return [4, (0, index_1.getMetadata)("action_field_updates").find(filters, (userSession === null || userSession === void 0 ? void 0 : userSession.spaceId) || spaceId)];
|
|
137
|
-
case 1:
|
|
138
|
-
actions = _b.sent();
|
|
139
|
-
_b.label = 2;
|
|
140
|
-
case 2:
|
|
141
|
-
_b.trys.push([2, 7, 8, 9]);
|
|
142
|
-
actions_1 = tslib_1.__values(actions), actions_1_1 = actions_1.next();
|
|
143
|
-
_b.label = 3;
|
|
144
|
-
case 3:
|
|
145
|
-
if (!!actions_1_1.done) return [3, 6];
|
|
146
|
-
action = actions_1_1.value;
|
|
147
|
-
return [4, runFieldUpdateAction(action, recordId, userSession)];
|
|
148
|
-
case 4:
|
|
149
|
-
target = _b.sent();
|
|
150
|
-
if (target) {
|
|
151
|
-
targets.push(target);
|
|
152
|
-
}
|
|
153
|
-
_b.label = 5;
|
|
154
|
-
case 5:
|
|
155
|
-
actions_1_1 = actions_1.next();
|
|
156
|
-
return [3, 3];
|
|
157
|
-
case 6: return [3, 9];
|
|
158
|
-
case 7:
|
|
159
|
-
e_1_1 = _b.sent();
|
|
160
|
-
e_1 = { error: e_1_1 };
|
|
161
|
-
return [3, 9];
|
|
162
|
-
case 8:
|
|
163
|
-
try {
|
|
164
|
-
if (actions_1_1 && !actions_1_1.done && (_a = actions_1.return)) _a.call(actions_1);
|
|
165
|
-
}
|
|
166
|
-
finally { if (e_1) throw e_1.error; }
|
|
167
|
-
return [7];
|
|
168
|
-
case 9: return [2, targets];
|
|
87
|
+
async function runFieldUpdateActions(ids, recordId, userSession, spaceId) {
|
|
88
|
+
const filters = [];
|
|
89
|
+
let targets = [];
|
|
90
|
+
if (!_.isEmpty(ids)) {
|
|
91
|
+
filters.push([['name', 'in', ids], 'or', ['_id', 'in', ids]]);
|
|
92
|
+
}
|
|
93
|
+
if (!_.isEmpty(filters)) {
|
|
94
|
+
const actions = await (0, index_1.getMetadata)(`action_field_updates`).find(filters, userSession?.spaceId || spaceId);
|
|
95
|
+
for (const action of actions) {
|
|
96
|
+
const target = await runFieldUpdateAction(action, recordId, userSession);
|
|
97
|
+
if (target) {
|
|
98
|
+
targets.push(target);
|
|
169
99
|
}
|
|
170
|
-
}
|
|
171
|
-
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return targets;
|
|
172
103
|
}
|
|
173
104
|
//# sourceMappingURL=field_updates.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field_updates.js","sourceRoot":"","sources":["../../src/actions/field_updates.ts"],"names":[],"mappings":";;AAmBA,oFAaC;AAED,oDA8DC;AAED,sDAoBC
|
|
1
|
+
{"version":3,"file":"field_updates.js","sourceRoot":"","sources":["../../src/actions/field_updates.ts"],"names":[],"mappings":"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"}
|
package/lib/actions/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
4
|
tslib_1.__exportStar(require("./field_updates"), exports);
|
|
5
5
|
tslib_1.__exportStar(require("./workflow_rule"), exports);
|
|
6
6
|
tslib_1.__exportStar(require("./workflow_notifications"), exports);
|
|
@@ -2,119 +2,58 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.runWorkflowNotifyActions = runWorkflowNotifyActions;
|
|
4
4
|
exports.runWorkflowNotifyAction = runWorkflowNotifyAction;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
filters = [['name', 'in', ids], 'or', ['_id', 'in', ids]];
|
|
19
|
-
return [4, (0, index_1.getMetadata)("workflow_notifications").find(filters, (userSession === null || userSession === void 0 ? void 0 : userSession.spaceId) || spaceId)];
|
|
20
|
-
case 1:
|
|
21
|
-
notifications = _b.sent();
|
|
22
|
-
_b.label = 2;
|
|
23
|
-
case 2:
|
|
24
|
-
_b.trys.push([2, 7, 8, 9]);
|
|
25
|
-
notifications_1 = tslib_1.__values(notifications), notifications_1_1 = notifications_1.next();
|
|
26
|
-
_b.label = 3;
|
|
27
|
-
case 3:
|
|
28
|
-
if (!!notifications_1_1.done) return [3, 6];
|
|
29
|
-
wn = notifications_1_1.value;
|
|
30
|
-
return [4, runWorkflowNotifyAction(wn, recordId, userSession)];
|
|
31
|
-
case 4:
|
|
32
|
-
_b.sent();
|
|
33
|
-
_b.label = 5;
|
|
34
|
-
case 5:
|
|
35
|
-
notifications_1_1 = notifications_1.next();
|
|
36
|
-
return [3, 3];
|
|
37
|
-
case 6: return [3, 9];
|
|
38
|
-
case 7:
|
|
39
|
-
e_1_1 = _b.sent();
|
|
40
|
-
e_1 = { error: e_1_1 };
|
|
41
|
-
return [3, 9];
|
|
42
|
-
case 8:
|
|
43
|
-
try {
|
|
44
|
-
if (notifications_1_1 && !notifications_1_1.done && (_a = notifications_1.return)) _a.call(notifications_1);
|
|
45
|
-
}
|
|
46
|
-
finally { if (e_1) throw e_1.error; }
|
|
47
|
-
return [7];
|
|
48
|
-
case 9: return [2];
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
});
|
|
5
|
+
const index_1 = require("../index");
|
|
6
|
+
const _ = require("underscore");
|
|
7
|
+
async function runWorkflowNotifyActions(ids, recordId, userSession, spaceId) {
|
|
8
|
+
if (_.isEmpty(ids) || _.isEmpty(recordId)) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
let filters = [['name', 'in', ids], 'or', ['_id', 'in', ids]];
|
|
12
|
+
let notifications = await (0, index_1.getMetadata)(`workflow_notifications`).find(filters, userSession?.spaceId || spaceId);
|
|
13
|
+
for (const wn of notifications) {
|
|
14
|
+
await runWorkflowNotifyAction(wn, recordId, userSession);
|
|
15
|
+
}
|
|
16
|
+
return;
|
|
52
17
|
}
|
|
53
|
-
function runWorkflowNotifyAction(workflowNotification, recordId, userSession) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
related_name: record.name,
|
|
85
|
-
from: userId,
|
|
86
|
-
space: spaceId
|
|
87
|
-
};
|
|
88
|
-
to = [];
|
|
89
|
-
if (!_.isEmpty(assignedUsers)) {
|
|
90
|
-
to = to.concat(assignedUsers);
|
|
91
|
-
}
|
|
92
|
-
if (!_.isEmpty(assignedUserField)) {
|
|
93
|
-
try {
|
|
94
|
-
for (assignedUserField_1 = tslib_1.__values(assignedUserField), assignedUserField_1_1 = assignedUserField_1.next(); !assignedUserField_1_1.done; assignedUserField_1_1 = assignedUserField_1.next()) {
|
|
95
|
-
userField = assignedUserField_1_1.value;
|
|
96
|
-
if (record[userField]) {
|
|
97
|
-
to.push(record[userField]);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
102
|
-
finally {
|
|
103
|
-
try {
|
|
104
|
-
if (assignedUserField_1_1 && !assignedUserField_1_1.done && (_a = assignedUserField_1.return)) _a.call(assignedUserField_1);
|
|
105
|
-
}
|
|
106
|
-
finally { if (e_2) throw e_2.error; }
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
to = _.uniq(_.flatten(to));
|
|
110
|
-
(0, index_1.getSteedosSchema)().broker.call('notifications.add', {
|
|
111
|
-
message: message,
|
|
112
|
-
from: userId,
|
|
113
|
-
to: to
|
|
114
|
-
});
|
|
115
|
-
return [2];
|
|
18
|
+
async function runWorkflowNotifyAction(workflowNotification, recordId, userSession) {
|
|
19
|
+
if (_.isEmpty(workflowNotification) || _.isEmpty(recordId)) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
let record = await (0, index_1.getObject)(workflowNotification.object_name).findOne(recordId, null);
|
|
23
|
+
let objectName = workflowNotification.object_name;
|
|
24
|
+
let assignedUsers = workflowNotification.assigned_users;
|
|
25
|
+
let assignedUserField = workflowNotification.assigned_user_field;
|
|
26
|
+
let userId = record.owner;
|
|
27
|
+
let spaceId = record.space;
|
|
28
|
+
let msgName = await (0, index_1.computeFormula)(workflowNotification.title, objectName, recordId, userSession);
|
|
29
|
+
let msgBody = await (0, index_1.computeFormula)(workflowNotification.body, objectName, recordId, userSession);
|
|
30
|
+
let message = {
|
|
31
|
+
name: msgName,
|
|
32
|
+
body: msgBody,
|
|
33
|
+
related_to: {
|
|
34
|
+
o: objectName,
|
|
35
|
+
ids: [record._id]
|
|
36
|
+
},
|
|
37
|
+
related_name: record.name,
|
|
38
|
+
from: userId,
|
|
39
|
+
space: spaceId
|
|
40
|
+
};
|
|
41
|
+
let to = [];
|
|
42
|
+
if (!_.isEmpty(assignedUsers)) {
|
|
43
|
+
to = to.concat(assignedUsers);
|
|
44
|
+
}
|
|
45
|
+
if (!_.isEmpty(assignedUserField)) {
|
|
46
|
+
for (const userField of assignedUserField) {
|
|
47
|
+
if (record[userField]) {
|
|
48
|
+
to.push(record[userField]);
|
|
116
49
|
}
|
|
117
|
-
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
to = _.uniq(_.flatten(to));
|
|
53
|
+
(0, index_1.getSteedosSchema)().broker.call('notifications.add', {
|
|
54
|
+
message: message,
|
|
55
|
+
from: userId,
|
|
56
|
+
to: to
|
|
118
57
|
});
|
|
119
58
|
}
|
|
120
59
|
//# sourceMappingURL=workflow_notifications.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow_notifications.js","sourceRoot":"","sources":["../../src/actions/workflow_notifications.ts"],"names":[],"mappings":";;AAqBA,4DAWC;AAQD,0DAqDC
|
|
1
|
+
{"version":3,"file":"workflow_notifications.js","sourceRoot":"","sources":["../../src/actions/workflow_notifications.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,101 +2,50 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.runWorkflowOutboundMessageActions = runWorkflowOutboundMessageActions;
|
|
4
4
|
exports.runWorkflowOutboundMessageAction = runWorkflowOutboundMessageAction;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
filters = [['name', 'in', ids], 'or', ['_id', 'in', ids]];
|
|
21
|
-
return [4, (0, index_1.getMetadata)("workflow_outbound_messages").find(filters, (userSession === null || userSession === void 0 ? void 0 : userSession.spaceId) || spaceId)];
|
|
22
|
-
case 1:
|
|
23
|
-
docs = _b.sent();
|
|
24
|
-
_b.label = 2;
|
|
25
|
-
case 2:
|
|
26
|
-
_b.trys.push([2, 7, 8, 9]);
|
|
27
|
-
docs_1 = tslib_1.__values(docs), docs_1_1 = docs_1.next();
|
|
28
|
-
_b.label = 3;
|
|
29
|
-
case 3:
|
|
30
|
-
if (!!docs_1_1.done) return [3, 6];
|
|
31
|
-
doc = docs_1_1.value;
|
|
32
|
-
return [4, runWorkflowOutboundMessageAction(doc, recordId, userSession)];
|
|
33
|
-
case 4:
|
|
34
|
-
_b.sent();
|
|
35
|
-
_b.label = 5;
|
|
36
|
-
case 5:
|
|
37
|
-
docs_1_1 = docs_1.next();
|
|
38
|
-
return [3, 3];
|
|
39
|
-
case 6: return [3, 9];
|
|
40
|
-
case 7:
|
|
41
|
-
e_1_1 = _b.sent();
|
|
42
|
-
e_1 = { error: e_1_1 };
|
|
43
|
-
return [3, 9];
|
|
44
|
-
case 8:
|
|
45
|
-
try {
|
|
46
|
-
if (docs_1_1 && !docs_1_1.done && (_a = docs_1.return)) _a.call(docs_1);
|
|
47
|
-
}
|
|
48
|
-
finally { if (e_1) throw e_1.error; }
|
|
49
|
-
return [7];
|
|
50
|
-
case 9: return [2];
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
});
|
|
5
|
+
const index_1 = require("../index");
|
|
6
|
+
const _ = require("underscore");
|
|
7
|
+
const node_fetch_1 = require("node-fetch");
|
|
8
|
+
const jwt = require('jsonwebtoken');
|
|
9
|
+
async function runWorkflowOutboundMessageActions(ids, recordId, userSession, spaceId) {
|
|
10
|
+
if (_.isEmpty(ids) || _.isEmpty(recordId)) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
let filters = [['name', 'in', ids], 'or', ['_id', 'in', ids]];
|
|
14
|
+
let docs = await (0, index_1.getMetadata)(`workflow_outbound_messages`).find(filters, userSession?.spaceId || spaceId);
|
|
15
|
+
for (const doc of docs) {
|
|
16
|
+
await runWorkflowOutboundMessageAction(doc, recordId, userSession);
|
|
17
|
+
}
|
|
18
|
+
return;
|
|
54
19
|
}
|
|
55
|
-
function runWorkflowOutboundMessageAction(workflowOutboundMessage, recordId, userSession) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
payload = jwt.sign(payload, secret, options);
|
|
85
|
-
}
|
|
86
|
-
return [4, (0, node_fetch_1.default)(endpoint_url, {
|
|
87
|
-
method: "POST",
|
|
88
|
-
headers: {
|
|
89
|
-
"Content-Type": "application/json"
|
|
90
|
-
},
|
|
91
|
-
body: JSON.stringify({
|
|
92
|
-
data: payload
|
|
93
|
-
})
|
|
94
|
-
})];
|
|
95
|
-
case 4:
|
|
96
|
-
_a.sent();
|
|
97
|
-
return [2];
|
|
98
|
-
}
|
|
99
|
-
});
|
|
20
|
+
async function runWorkflowOutboundMessageAction(workflowOutboundMessage, recordId, userSession) {
|
|
21
|
+
if (_.isEmpty(workflowOutboundMessage) || _.isEmpty(recordId)) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const { object_name, endpoint_url, object_fields_to_send, app } = workflowOutboundMessage;
|
|
25
|
+
const record = await (0, index_1.getObject)(object_name).findOne(recordId, { fields: object_fields_to_send });
|
|
26
|
+
let secret = '';
|
|
27
|
+
if (app) {
|
|
28
|
+
const appDoc = (await (0, index_1.getObject)('apps').find({ filters: [['code', '=', app]] }))[0];
|
|
29
|
+
if (appDoc && appDoc.secret) {
|
|
30
|
+
secret = appDoc.secret;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
let payload = {
|
|
34
|
+
'object_name': object_name,
|
|
35
|
+
'doc': record,
|
|
36
|
+
};
|
|
37
|
+
if (secret) {
|
|
38
|
+
const options = { expiresIn: 60 * 60 };
|
|
39
|
+
payload = jwt.sign(payload, secret, options);
|
|
40
|
+
}
|
|
41
|
+
await (0, node_fetch_1.default)(endpoint_url, {
|
|
42
|
+
method: "POST",
|
|
43
|
+
headers: {
|
|
44
|
+
"Content-Type": "application/json"
|
|
45
|
+
},
|
|
46
|
+
body: JSON.stringify({
|
|
47
|
+
data: payload
|
|
48
|
+
})
|
|
100
49
|
});
|
|
101
50
|
}
|
|
102
51
|
//# sourceMappingURL=workflow_outbound_messages.js.map
|