@steedos/objectql 2.2.55-beta.2 → 2.2.55-beta.22

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 (221) hide show
  1. package/lib/actions/field_updates.js +36 -50
  2. package/lib/actions/field_updates.js.map +1 -1
  3. package/lib/actions/workflow_notifications.d.ts +0 -12
  4. package/lib/actions/workflow_notifications.js +14 -31
  5. package/lib/actions/workflow_notifications.js.map +1 -1
  6. package/lib/actions/workflow_rule.js +33 -54
  7. package/lib/actions/workflow_rule.js.map +1 -1
  8. package/lib/broker.js +5 -5
  9. package/lib/broker.js.map +1 -1
  10. package/lib/driver/driver.d.ts +0 -38
  11. package/lib/driver/field-encrytion/index.js +0 -7
  12. package/lib/driver/field-encrytion/index.js.map +1 -1
  13. package/lib/driver/field-encrytion/mongosharedconst.js +4 -20
  14. package/lib/driver/field-encrytion/mongosharedconst.js.map +1 -1
  15. package/lib/driver/fieldDBType.js +0 -4
  16. package/lib/driver/fieldDBType.js.map +1 -1
  17. package/lib/driver/format.d.ts +0 -12
  18. package/lib/driver/format.js +0 -12
  19. package/lib/driver/format.js.map +1 -1
  20. package/lib/driver/metadata.js +2 -10
  21. package/lib/driver/metadata.js.map +1 -1
  22. package/lib/driver/meteorMongo.js +32 -36
  23. package/lib/driver/meteorMongo.js.map +1 -1
  24. package/lib/driver/mongo.d.ts +0 -3
  25. package/lib/driver/mongo.js +59 -64
  26. package/lib/driver/mongo.js.map +1 -1
  27. package/lib/driver/mysql.js +1 -8
  28. package/lib/driver/mysql.js.map +1 -1
  29. package/lib/driver/oracle.js +3 -11
  30. package/lib/driver/oracle.js.map +1 -1
  31. package/lib/driver/postgres.js +1 -8
  32. package/lib/driver/postgres.js.map +1 -1
  33. package/lib/driver/sqlite3.js +1 -8
  34. package/lib/driver/sqlite3.js.map +1 -1
  35. package/lib/driver/sqlserver.js +3 -10
  36. package/lib/driver/sqlserver.js.map +1 -1
  37. package/lib/dynamic-load/actions.js +26 -27
  38. package/lib/dynamic-load/actions.js.map +1 -1
  39. package/lib/dynamic-load/approval_process.js +0 -1
  40. package/lib/dynamic-load/approval_process.js.map +1 -1
  41. package/lib/dynamic-load/button.js +13 -13
  42. package/lib/dynamic-load/button.js.map +1 -1
  43. package/lib/dynamic-load/chart.js +3 -3
  44. package/lib/dynamic-load/chart.js.map +1 -1
  45. package/lib/dynamic-load/client_script.js +0 -24
  46. package/lib/dynamic-load/client_script.js.map +1 -1
  47. package/lib/dynamic-load/field.js +13 -13
  48. package/lib/dynamic-load/field.js.map +1 -1
  49. package/lib/dynamic-load/layout.js +16 -16
  50. package/lib/dynamic-load/layout.js.map +1 -1
  51. package/lib/dynamic-load/listview.js +13 -13
  52. package/lib/dynamic-load/listview.js.map +1 -1
  53. package/lib/dynamic-load/object_translations.js +8 -20
  54. package/lib/dynamic-load/object_translations.js.map +1 -1
  55. package/lib/dynamic-load/package.d.ts +0 -8
  56. package/lib/dynamic-load/package.js +83 -95
  57. package/lib/dynamic-load/package.js.map +1 -1
  58. package/lib/dynamic-load/page.js +3 -3
  59. package/lib/dynamic-load/page.js.map +1 -1
  60. package/lib/dynamic-load/permission.js +24 -25
  61. package/lib/dynamic-load/permission.js.map +1 -1
  62. package/lib/dynamic-load/permissionset.js +22 -23
  63. package/lib/dynamic-load/permissionset.js.map +1 -1
  64. package/lib/dynamic-load/preload_data.js +73 -73
  65. package/lib/dynamic-load/preload_data.js.map +1 -1
  66. package/lib/dynamic-load/profile.js +22 -25
  67. package/lib/dynamic-load/profile.js.map +1 -1
  68. package/lib/dynamic-load/query.js +3 -3
  69. package/lib/dynamic-load/query.js.map +1 -1
  70. package/lib/dynamic-load/restrictionRules.js +3 -3
  71. package/lib/dynamic-load/restrictionRules.js.map +1 -1
  72. package/lib/dynamic-load/shareRules.js +3 -3
  73. package/lib/dynamic-load/shareRules.js.map +1 -1
  74. package/lib/dynamic-load/tab.js +4 -4
  75. package/lib/dynamic-load/tab.js.map +1 -1
  76. package/lib/dynamic-load/tabs.d.ts +0 -3
  77. package/lib/dynamic-load/tabs.js +4 -7
  78. package/lib/dynamic-load/tabs.js.map +1 -1
  79. package/lib/dynamic-load/translations.js +17 -28
  80. package/lib/dynamic-load/translations.js.map +1 -1
  81. package/lib/dynamic-load/trigger.d.ts +0 -5
  82. package/lib/dynamic-load/trigger.js +0 -29
  83. package/lib/dynamic-load/trigger.js.map +1 -1
  84. package/lib/errors/index.js +1 -25
  85. package/lib/errors/index.js.map +1 -1
  86. package/lib/formula/core.d.ts +0 -63
  87. package/lib/formula/core.js +94 -211
  88. package/lib/formula/core.js.map +1 -1
  89. package/lib/formula/field_formula.d.ts +0 -23
  90. package/lib/formula/field_formula.js +12 -36
  91. package/lib/formula/field_formula.js.map +1 -1
  92. package/lib/formula/index.js +15 -22
  93. package/lib/formula/index.js.map +1 -1
  94. package/lib/formula/params.js +23 -48
  95. package/lib/formula/params.js.map +1 -1
  96. package/lib/formula/recompute.d.ts +0 -8
  97. package/lib/formula/recompute.js +32 -45
  98. package/lib/formula/recompute.js.map +1 -1
  99. package/lib/formula/simple_params.js +10 -10
  100. package/lib/formula/simple_params.js.map +1 -1
  101. package/lib/formula/type.d.ts +0 -52
  102. package/lib/formula/type.js +0 -4
  103. package/lib/formula/type.js.map +1 -1
  104. package/lib/formula/util.d.ts +0 -69
  105. package/lib/formula/util.js +0 -70
  106. package/lib/formula/util.js.map +1 -1
  107. package/lib/index.js +0 -7
  108. package/lib/index.js.map +1 -1
  109. package/lib/metadata-register/_base.js +13 -13
  110. package/lib/metadata-register/_base.js.map +1 -1
  111. package/lib/metadata-register/app.js +8 -8
  112. package/lib/metadata-register/app.js.map +1 -1
  113. package/lib/metadata-register/chart.js +1 -1
  114. package/lib/metadata-register/index.js +49 -49
  115. package/lib/metadata-register/index.js.map +1 -1
  116. package/lib/metadata-register/layout.js +10 -10
  117. package/lib/metadata-register/layout.js.map +1 -1
  118. package/lib/metadata-register/object.js +10 -15
  119. package/lib/metadata-register/object.js.map +1 -1
  120. package/lib/metadata-register/page.js +1 -1
  121. package/lib/metadata-register/permissionFields.js +1 -1
  122. package/lib/metadata-register/permissionset.js +6 -6
  123. package/lib/metadata-register/permissionset.js.map +1 -1
  124. package/lib/metadata-register/process.js +1 -8
  125. package/lib/metadata-register/process.js.map +1 -1
  126. package/lib/metadata-register/processTrigger.d.ts +0 -11
  127. package/lib/metadata-register/processTrigger.js +1 -12
  128. package/lib/metadata-register/processTrigger.js.map +1 -1
  129. package/lib/metadata-register/profile.js +6 -6
  130. package/lib/metadata-register/profile.js.map +1 -1
  131. package/lib/metadata-register/query.js +1 -1
  132. package/lib/metadata-register/restrictionRules.js +1 -1
  133. package/lib/metadata-register/shareRules.js +1 -1
  134. package/lib/metadata-register/tab.js +1 -1
  135. package/lib/metadata-register/tabs.d.ts +0 -3
  136. package/lib/metadata-register/tabs.js +10 -13
  137. package/lib/metadata-register/tabs.js.map +1 -1
  138. package/lib/services/datasourceServiceFactory.js +5 -8
  139. package/lib/services/datasourceServiceFactory.js.map +1 -1
  140. package/lib/services/helpers/graphql/consts.js +0 -7
  141. package/lib/services/helpers/graphql/consts.js.map +1 -1
  142. package/lib/services/helpers/graphql/getPrimaryFieldType.d.ts +0 -4
  143. package/lib/services/helpers/graphql/getPrimaryFieldType.js +0 -12
  144. package/lib/services/helpers/graphql/getPrimaryFieldType.js.map +1 -1
  145. package/lib/services/helpers/graphql/getQueryFields.js +0 -4
  146. package/lib/services/helpers/graphql/getQueryFields.js.map +1 -1
  147. package/lib/services/helpers/graphql/index.js +84 -108
  148. package/lib/services/helpers/graphql/index.js.map +1 -1
  149. package/lib/services/objectService.js +127 -179
  150. package/lib/services/objectService.js.map +1 -1
  151. package/lib/services/objectServiceDispatcher.js +87 -87
  152. package/lib/services/objectServiceDispatcher.js.map +1 -1
  153. package/lib/services/objectServiceFactory.js +4 -4
  154. package/lib/services/objectServiceFactory.js.map +1 -1
  155. package/lib/summary/core.d.ts +0 -68
  156. package/lib/summary/core.js +46 -130
  157. package/lib/summary/core.js.map +1 -1
  158. package/lib/summary/field_summary.d.ts +0 -16
  159. package/lib/summary/field_summary.js +10 -27
  160. package/lib/summary/field_summary.js.map +1 -1
  161. package/lib/summary/index.d.ts +0 -5
  162. package/lib/summary/index.js +10 -28
  163. package/lib/summary/index.js.map +1 -1
  164. package/lib/summary/recompute.d.ts +0 -8
  165. package/lib/summary/recompute.js +8 -23
  166. package/lib/summary/recompute.js.map +1 -1
  167. package/lib/summary/type.d.ts +0 -17
  168. package/lib/summary/type.js +0 -13
  169. package/lib/summary/type.js.map +1 -1
  170. package/lib/typeorm/driver.js +69 -77
  171. package/lib/typeorm/driver.js.map +1 -1
  172. package/lib/typeorm/util.js +1 -4
  173. package/lib/typeorm/util.js.map +1 -1
  174. package/lib/types/action.js +1 -1
  175. package/lib/types/app.js +38 -43
  176. package/lib/types/app.js.map +1 -1
  177. package/lib/types/config.js +11 -15
  178. package/lib/types/config.js.map +1 -1
  179. package/lib/types/connection.d.ts +0 -10
  180. package/lib/types/connection.js +9 -16
  181. package/lib/types/connection.js.map +1 -1
  182. package/lib/types/dashboard.js +1 -1
  183. package/lib/types/datasource.d.ts +0 -3
  184. package/lib/types/datasource.js +97 -110
  185. package/lib/types/datasource.js.map +1 -1
  186. package/lib/types/field.js +3 -33
  187. package/lib/types/field.js.map +1 -1
  188. package/lib/types/field_permission.js +7 -7
  189. package/lib/types/field_permission.js.map +1 -1
  190. package/lib/types/list_view.js +2 -2
  191. package/lib/types/object.d.ts +0 -38
  192. package/lib/types/object.js +288 -388
  193. package/lib/types/object.js.map +1 -1
  194. package/lib/types/object_dynamic_load.js +39 -44
  195. package/lib/types/object_dynamic_load.js.map +1 -1
  196. package/lib/types/object_events.js +4 -14
  197. package/lib/types/object_events.js.map +1 -1
  198. package/lib/types/object_layouts.js +4 -4
  199. package/lib/types/object_layouts.js.map +1 -1
  200. package/lib/types/object_permission.js +2 -2
  201. package/lib/types/query.d.ts +0 -12
  202. package/lib/types/report.js +1 -1
  203. package/lib/types/restrictionRule.js +6 -6
  204. package/lib/types/restrictionRule.js.map +1 -1
  205. package/lib/types/schema.d.ts +0 -14
  206. package/lib/types/schema.js +14 -39
  207. package/lib/types/schema.js.map +1 -1
  208. package/lib/types/shareRule.js +6 -6
  209. package/lib/types/shareRule.js.map +1 -1
  210. package/lib/types/trigger.js +1 -1
  211. package/lib/types/validation_rules.js +10 -15
  212. package/lib/types/validation_rules.js.map +1 -1
  213. package/lib/util/index.d.ts +0 -12
  214. package/lib/util/index.js +10 -50
  215. package/lib/util/index.js.map +1 -1
  216. package/lib/util/locale.d.ts +0 -6
  217. package/lib/util/locale.js +0 -6
  218. package/lib/util/locale.js.map +1 -1
  219. package/lib/util/suffix.js +39 -2
  220. package/lib/util/suffix.js.map +1 -1
  221. package/package.json +13 -13
@@ -9,27 +9,18 @@ var summary_1 = require("../summary");
9
9
  var util_1 = require("./util");
10
10
  var util_2 = require("../util");
11
11
  var _ = require("lodash");
12
- // import _eval = require('eval')
13
12
  var formula_1 = require("@steedos/formula");
14
13
  var params_1 = require("./params");
15
14
  var simple_params_1 = require("./simple_params");
16
- /**
17
- * 根据公式内容,取出其中{}中的变量
18
- * @param formula
19
- */
20
15
  var pickFormulaVars = function (formula) {
21
16
  return (0, formula_1.extract)(formula);
22
17
  };
23
18
  exports.pickFormulaVars = pickFormulaVars;
24
- /**
25
- * 根据公式内容,取出其中{}中的变量,并进一步取出这些变量中引用了当前对象的哪些字段
26
- * @param fieldFormulaConfig
27
- */
28
19
  var pickFieldFormulaVarFields = function (fieldFormulaConfigs) {
29
20
  if (!_.isArray(fieldFormulaConfigs)) {
30
21
  fieldFormulaConfigs = [fieldFormulaConfigs];
31
22
  }
32
- var result = ["space"]; //space字段作为基础字段不能少
23
+ var result = ["space"];
33
24
  fieldFormulaConfigs.forEach(function (fieldFormulaConfig) {
34
25
  var vars = fieldFormulaConfig.vars;
35
26
  result = _.union(result, (0, exports.pickFormulaVarFields)(vars));
@@ -37,15 +28,10 @@ var pickFieldFormulaVarFields = function (fieldFormulaConfigs) {
37
28
  return _.uniq(result);
38
29
  };
39
30
  exports.pickFieldFormulaVarFields = pickFieldFormulaVarFields;
40
- /**
41
- * 根据公式内容已取出的{}中的变量,进一步取出这些变量中引用了当前对象的哪些字段
42
- * @param vars
43
- */
44
31
  var pickFormulaVarFields = function (vars) {
45
- var result = ["space"]; //space字段作为基础字段不能少
32
+ var result = ["space"];
46
33
  vars.forEach(function (varItem) {
47
34
  if (varItem.paths.length) {
48
- // 如果是$user变量则paths肯定为空,所以取paths中第一个,第一个一定是当前对象中的字段
49
35
  var firstPath = varItem.paths[0];
50
36
  var firstKey = firstPath.field_name;
51
37
  result.push(firstKey);
@@ -54,12 +40,6 @@ var pickFormulaVarFields = function (vars) {
54
40
  return _.uniq(result);
55
41
  };
56
42
  exports.pickFormulaVarFields = pickFormulaVarFields;
57
- /**
58
- * 根据公式中的变量值,计算出跨对象引用的记录对应的字段值,作为公式运算的参数返回
59
- * @param doc
60
- * @param vars
61
- * return Array<SteedosFormulaParamTypeConfig>
62
- */
63
43
  var computeFormulaParams = function (doc, vars, currentUserId) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
64
44
  var params, spaceId, _loop_1, lastReferenceToField, vars_1, vars_1_1, _a, key, paths, isUserVar, isSimpleVar;
65
45
  var e_1, _b;
@@ -69,7 +49,6 @@ var computeFormulaParams = function (doc, vars, currentUserId) { return tslib_1.
69
49
  if (vars && vars.length) {
70
50
  _loop_1 = function (key, paths, isUserVar, isSimpleVar) {
71
51
  key = key.trim();
72
- // 如果变量key以$user开头,则解析为userSession,此时paths为空
73
52
  var tempValue = void 0;
74
53
  if (isUserVar) {
75
54
  if (!currentUserId) {
@@ -78,18 +57,8 @@ var computeFormulaParams = function (doc, vars, currentUserId) { return tslib_1.
78
57
  if (!spaceId) {
79
58
  throw new Error("computeFormulaParams:The 'space' property is required for the doc of the formula var key ".concat(key, " while running"));
80
59
  }
81
- // if (!currentUserId) {
82
- // throw new Error(`computeFormulaParams:The param 'currentUserId' is required for the formula var key ${key}`);
83
- // }
84
- // let tempFormulaParams = {};
85
- // let tepmFormula = key.replace(FormulaUserKey, `__params["${FormulaUserKey}"]`);
86
- // tepmFormula = `return ${tepmFormula}`
87
- // tempFormulaParams[FormulaUserKey] = currentUserId;
88
- // tempValue = evalFieldFormula(tepmFormula, tempFormulaParams);
89
60
  }
90
61
  if (isSimpleVar) {
91
- // 普通变量,取参数值时直接取值,而不用走变量上的paths属性。
92
- // 注意未传入objectName时,公式中的user var的isSimpleVar为false,还是走下面的paths取值逻辑。
93
62
  tempValue = doc[key];
94
63
  params.push({
95
64
  key: key,
@@ -102,7 +71,6 @@ var computeFormulaParams = function (doc, vars, currentUserId) { return tslib_1.
102
71
  if (index === 0) {
103
72
  lastReferenceToField = next.reference_to_field;
104
73
  if (isUserVar) {
105
- // $user变量也要按查相关表记录的方式取值,第一个path为根据id取出对应的space_users记录
106
74
  var sus = (0, util_2.wrapAsync)(function () {
107
75
  return (0, index_1.getSteedosSchema)().getObject("space_users").find({
108
76
  filters: [["user", "=", currentUserId], ["space", "=", spaceId]],
@@ -123,7 +91,6 @@ var computeFormulaParams = function (doc, vars, currentUserId) { return tslib_1.
123
91
  }
124
92
  else {
125
93
  if (!reslut) {
126
- // 当上一轮返回空值或0时,直接返回
127
94
  return reslut;
128
95
  }
129
96
  reslut = (0, util_2.wrapAsync)(function () {
@@ -163,7 +130,7 @@ var computeFormulaParams = function (doc, vars, currentUserId) { return tslib_1.
163
130
  finally { if (e_1) throw e_1.error; }
164
131
  }
165
132
  }
166
- return [2 /*return*/, params];
133
+ return [2, params];
167
134
  });
168
135
  }); };
169
136
  exports.computeFormulaParams = computeFormulaParams;
@@ -176,10 +143,10 @@ var computeFieldFormulaValue = function (doc, fieldFormulaConfig, currentUserId)
176
143
  (0, util_1.checkCurrentUserIdNotRequiredForFieldFormulas)(fieldFormulaConfig);
177
144
  }
178
145
  formula = fieldFormulaConfig.formula, vars = fieldFormulaConfig.vars, data_type = fieldFormulaConfig.data_type, formula_blank_value = fieldFormulaConfig.formula_blank_value;
179
- return [4 /*yield*/, (0, exports.computeFormulaParams)(doc, vars, currentUserId)];
146
+ return [4, (0, exports.computeFormulaParams)(doc, vars, currentUserId)];
180
147
  case 1:
181
148
  params = _a.sent();
182
- return [2 /*return*/, (0, exports.runFormula)(formula, params, {
149
+ return [2, (0, exports.runFormula)(formula, params, {
183
150
  returnType: data_type,
184
151
  blankValue: formula_blank_value
185
152
  }, fieldFormulaConfig)];
@@ -189,117 +156,82 @@ var computeFieldFormulaValue = function (doc, fieldFormulaConfig, currentUserId)
189
156
  exports.computeFieldFormulaValue = computeFieldFormulaValue;
190
157
  var evalFieldFormula = function (formula, formulaParams) {
191
158
  try {
192
- // let formulaFun = `module.exports = function (__params) { ${formula} }`;
193
- // console.log("==evalFieldFormula==formulaFun===", formulaFun);
194
- // console.log("==evalFieldFormula==formulaParams===", formulaParams);
195
- // return _eval(formulaFun)(formulaParams);
196
159
  return (0, formula_1.parse)(formula, formulaParams);
197
160
  }
198
161
  catch (ex) {
199
- formulaParams[type_1.FormulaUserKey] = "{...}"; //$user简化,打出的日志看得清楚点
162
+ formulaParams[type_1.FormulaUserKey] = "{...}";
200
163
  throw new Error("evalFieldFormula:Catch an error \"".concat(ex, "\" while eval formula \"").concat(formula, "\" with params \"").concat(JSON.stringify(formulaParams), "\""));
201
164
  }
202
165
  };
203
166
  exports.evalFieldFormula = evalFieldFormula;
204
- /**
205
- * 运行公式
206
- * @param formula 公式脚本内容
207
- * @param params 参数
208
- * @param options 公式返回类型,及空值配置
209
- * @param messageTag 用于显示错误日志的标识信息,可以是一个json对象
210
- */
211
167
  var runFormula = function (formula, params, options, messageTag) {
212
168
  if (!options) {
213
169
  options = {};
214
170
  }
215
- // console.log("===runFormula===formula====", formula);
216
- // console.log("===runFormula===params====", params);
217
171
  var returnType = options.returnType, blankValue = options.blankValue;
218
172
  var formulaParams = {};
219
173
  params.forEach(function (_a) {
220
174
  var key = _a.key, path = _a.path, value = _a.value;
221
- // formulaParams[key] = value;
222
- // 把{}括起来的变量替换为计算得到的变量值
223
- // formula = formula.replace(`{${key}}`, `__params["${key}"]`);
224
175
  if (path) {
225
176
  formulaParams[key] = (0, params_1.getFieldSubstitution)(path.reference_from, path.field_name, value, blankValue);
226
177
  }
227
178
  else {
228
- // 变量中没有path属性说明是普通变量
229
179
  formulaParams[key] = (0, simple_params_1.getSimpleParamSubstitution)(value, blankValue);
230
180
  }
231
181
  });
232
- // console.log("===runFormula===formula====", formula);
233
- // console.log("===runFormula===formulaParams====", formulaParams);
234
182
  var result = (0, exports.evalFieldFormula)(formula, formulaParams);
235
- // console.log("===runFormula===result====", result);
236
183
  var formulaValue = result.value;
237
184
  var formulaValueType = result.dataType;
238
185
  if (result.type === 'error') {
239
186
  console.error(formula, formulaParams);
240
187
  throw new Error("runFormula:Catch an error \"".concat(result.message, "\" while eval formula \"").concat(formula, "\" with params: \"").concat(JSON.stringify(formulaParams), "\" for \"").concat(JSON.stringify(messageTag), "\""));
241
- // if(blankValue === SteedosFormulaBlankValue.blanks && result.errorType === "ArgumentError"){
242
- // // 配置了空参数视为空值时会直接返回空值类型,这里就会报错,直接返回空值,而不是抛错
243
- // // TODO:result.errorType === "ArgumentError"不够细化,下一版本应该视错误情况优化返回空值的条件
244
- // formulaValue = null;
245
- // }yar
246
- // else{
247
- // throw new Error(result.message);
248
- // }
249
188
  }
250
- if (formulaValueType === "number" /* Number */ && _.isNaN(formulaValue)) {
251
- // 数值类型计算结果为NaN时,保存为空值
189
+ if (formulaValueType === "number" && _.isNaN(formulaValue)) {
252
190
  formulaValue = null;
253
191
  }
254
192
  if (returnType && formulaValueType && formulaValueType != "null") {
255
193
  switch (returnType) {
256
194
  case "boolean":
257
- if (formulaValueType !== "checkbox" /* Checkbox */) {
195
+ if (formulaValueType !== "checkbox") {
258
196
  throw new Error("runFormula:The field formula \"".concat(formula, "\" with params \"").concat(JSON.stringify(formulaParams), "\" should return a boolean type result but got a ").concat(formulaValueType, " type value '").concat(formulaValue, "'."));
259
197
  }
260
198
  break;
261
199
  case "number":
262
- if (formulaValueType !== "number" /* Number */) {
200
+ if (formulaValueType !== "number") {
263
201
  throw new Error("runFormula:The field formula \"".concat(formula, "\" with params \"").concat(JSON.stringify(formulaParams), "\" should return a number type result but got a ").concat(formulaValueType, " type value '").concat(formulaValue, "'."));
264
202
  }
265
203
  break;
266
204
  case "currency":
267
- if (formulaValueType !== "number" /* Number */) {
205
+ if (formulaValueType !== "number") {
268
206
  throw new Error("runFormula:The field formula \"".concat(formula, "\" with params \"").concat(JSON.stringify(formulaParams), "\" should return a number type result but got a ").concat(formulaValueType, " type value '").concat(formulaValue, "'."));
269
207
  }
270
208
  break;
271
209
  case "percent":
272
- if (formulaValueType !== "number" /* Number */) {
210
+ if (formulaValueType !== "number") {
273
211
  throw new Error("runFormula:The field formula \"".concat(formula, "\" with params \"").concat(JSON.stringify(formulaParams), "\" should return a number type result but got a ").concat(formulaValueType, " type value '").concat(formulaValue, "'."));
274
212
  }
275
213
  break;
276
214
  case "text":
277
- if (formulaValueType !== "text" /* Text */) {
215
+ if (formulaValueType !== "text") {
278
216
  throw new Error("runFormula:The field formula \"".concat(formula, "\" with params \"").concat(JSON.stringify(formulaParams), "\" should return a string type result but got a ").concat(formulaValueType, " type value '").concat(formulaValue, "'."));
279
217
  }
280
218
  break;
281
219
  case "date":
282
- if (formulaValueType !== "date" /* Date */) {
283
- // 这里不可以直接用result.constructor == Date或result instanceof Date,因为eval后的同一个基础类型的构造函数指向的不是同一个
220
+ if (formulaValueType !== "date") {
284
221
  throw new Error("runFormula:The field formula \"".concat(formula, "\" with params \"").concat(JSON.stringify(formulaParams), "\" should return a date type result but got a ").concat(formulaValueType, " type value '").concat(formulaValue, "'."));
285
222
  }
286
223
  break;
287
224
  case "datetime":
288
- if (formulaValueType !== "datetime" /* Datetime */) {
289
- // 这里不可以直接用result.constructor == Date或result instanceof Date,因为eval后的同一个基础类型的构造函数指向的不是同一个
225
+ if (formulaValueType !== "datetime") {
290
226
  throw new Error("runFormula:The field formula \"".concat(formula, "\" with params \"").concat(JSON.stringify(formulaParams), "\" should return a date type result but got a ").concat(formulaValueType, " type value '").concat(formulaValue, "'."));
291
227
  }
292
228
  break;
293
229
  }
294
230
  }
295
- // console.log("===runFormula===formulaValue====", formulaValue);
296
231
  return formulaValue;
297
232
  };
298
233
  exports.runFormula = runFormula;
299
234
  var addToAggregatePaths = function (varItemToAggregatePaths, toAggregatePaths) {
300
- // 当引用了同一个对象的不同属性时,只需要记录其中一个,因为一个公式里面引用的字段变更后,只需要重算一次,比如以下两个都将只有第一条会加入到toAggregatePaths中
301
- // [{"key":"account.website","paths":[{"field_name":"account","reference_from":"contacts"},{"field_name":"website","reference_from":"accounts"}]}]
302
- // [{"key":"account.name","paths":[{"field_name":"account","reference_from":"contacts"},{"field_name":"name","reference_from":"accounts"}]}]
303
235
  var pathLength = varItemToAggregatePaths.length;
304
236
  var existPath = toAggregatePaths.find(function (item) {
305
237
  return JSON.stringify(item.slice(0, pathLength)) === JSON.stringify(varItemToAggregatePaths.slice(0, pathLength));
@@ -308,16 +240,6 @@ var addToAggregatePaths = function (varItemToAggregatePaths, toAggregatePaths) {
308
240
  toAggregatePaths.push(varItemToAggregatePaths);
309
241
  }
310
242
  };
311
- /**
312
- * 在所有字段引用关系(包括跨对象的字段引用关系)中找到引用了当前正在update的对象字段的公式字段并更新其字段值
313
- * 如果当前不是update而是insert则不需要调用该函数,因为这时这条记录不可能存在引用关系
314
- * @param objectName
315
- * @param recordId
316
- * @param currentUserId
317
- * @param options.fieldNames 传入该参数时,只查找和处理引用了该对象中这些指定字段的公式字段
318
- * @param options.escapeConfigs 传入该参数时,将额外跳过这些公式字段配置的运算,提高性能
319
- * @param options.quotedByConfigs 如果已经根据objectName和fieldNames查过相关配置了,请直接传入,可以避免重复查找,提高性能
320
- */
321
243
  var runQuotedByObjectFieldFormulas = function (objectName, recordId, userSession, options) {
322
244
  if (options === void 0) { options = {}; }
323
245
  return tslib_1.__awaiter(this, void 0, void 0, function () {
@@ -328,14 +250,14 @@ var runQuotedByObjectFieldFormulas = function (objectName, recordId, userSession
328
250
  case 0:
329
251
  currentUserId = userSession ? userSession.userId : undefined;
330
252
  fieldNames = options.fieldNames, escapeConfigs = options.escapeConfigs, quotedByConfigs = options.quotedByConfigs, onlyForOwn = options.onlyForOwn, withoutCurrent = options.withoutCurrent;
331
- if (!!quotedByConfigs) return [3 /*break*/, 2];
332
- return [4 /*yield*/, (0, field_formula_1.getObjectQuotedByFieldFormulaConfigs)(objectName, fieldNames, escapeConfigs, { onlyForOwn: onlyForOwn, withoutCurrent: withoutCurrent })];
253
+ if (!!quotedByConfigs) return [3, 2];
254
+ return [4, (0, field_formula_1.getObjectQuotedByFieldFormulaConfigs)(objectName, fieldNames, escapeConfigs, { onlyForOwn: onlyForOwn, withoutCurrent: withoutCurrent })];
333
255
  case 1:
334
256
  quotedByConfigs = _d.sent();
335
257
  _d.label = 2;
336
258
  case 2:
337
259
  if (!quotedByConfigs.allConfigs.length) {
338
- return [2 /*return*/];
260
+ return [2];
339
261
  }
340
262
  if (!currentUserId) {
341
263
  (0, util_1.checkCurrentUserIdNotRequiredForFieldFormulas)(quotedByConfigs.allConfigs);
@@ -346,41 +268,32 @@ var runQuotedByObjectFieldFormulas = function (objectName, recordId, userSession
346
268
  _a = tslib_1.__values(quotedByConfigs.allConfigs), _b = _a.next();
347
269
  _d.label = 4;
348
270
  case 4:
349
- if (!!_b.done) return [3 /*break*/, 7];
271
+ if (!!_b.done) return [3, 7];
350
272
  config = _b.value;
351
- return [4 /*yield*/, (0, exports.updateQuotedByObjectFieldFormulaValue)(objectName, recordId, config, userSession, quotedByConfigs.ownConfigs)];
273
+ return [4, (0, exports.updateQuotedByObjectFieldFormulaValue)(objectName, recordId, config, userSession, quotedByConfigs.ownConfigs)];
352
274
  case 5:
353
275
  _d.sent();
354
276
  _d.label = 6;
355
277
  case 6:
356
278
  _b = _a.next();
357
- return [3 /*break*/, 4];
358
- case 7: return [3 /*break*/, 10];
279
+ return [3, 4];
280
+ case 7: return [3, 10];
359
281
  case 8:
360
282
  e_2_1 = _d.sent();
361
283
  e_2 = { error: e_2_1 };
362
- return [3 /*break*/, 10];
284
+ return [3, 10];
363
285
  case 9:
364
286
  try {
365
287
  if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
366
288
  }
367
289
  finally { if (e_2) throw e_2.error; }
368
- return [7 /*endfinally*/];
369
- case 10: return [2 /*return*/];
290
+ return [7];
291
+ case 10: return [2];
370
292
  }
371
293
  });
372
294
  });
373
295
  };
374
296
  exports.runQuotedByObjectFieldFormulas = runQuotedByObjectFieldFormulas;
375
- /**
376
- * 找到当前正在insert/update的对象中的公式字段并更新其字段值
377
- * @param objectName
378
- * @param recordId
379
- * @param doc
380
- * @param currentUserId
381
- * @param needRefetchDoc 当doc不可信赖时,需要从数据库中重新抓取doc,请传入true值
382
- * @param configs 如果已经根据objectName查过相关配置了,请直接传入,可以避免重复查找,提高性能
383
- */
384
297
  var runCurrentObjectFieldFormulas = function (objectName, recordId, doc, currentUserId, needRefetchDoc, configs) {
385
298
  return tslib_1.__awaiter(this, void 0, void 0, function () {
386
299
  var formulaVarFields, setDoc, configs_1, configs_1_1, config, _a, _b, e_3_1;
@@ -388,21 +301,21 @@ var runCurrentObjectFieldFormulas = function (objectName, recordId, doc, current
388
301
  return tslib_1.__generator(this, function (_d) {
389
302
  switch (_d.label) {
390
303
  case 0:
391
- if (!!configs) return [3 /*break*/, 2];
392
- return [4 /*yield*/, (0, field_formula_1.getObjectFieldFormulaConfigs)(objectName)];
304
+ if (!!configs) return [3, 2];
305
+ return [4, (0, field_formula_1.getObjectFieldFormulaConfigs)(objectName)];
393
306
  case 1:
394
307
  configs = _d.sent();
395
308
  _d.label = 2;
396
309
  case 2:
397
310
  if (!configs.length) {
398
- return [2 /*return*/];
311
+ return [2];
399
312
  }
400
313
  if (!currentUserId) {
401
314
  (0, util_1.checkCurrentUserIdNotRequiredForFieldFormulas)(configs);
402
315
  }
403
- if (!(needRefetchDoc !== false)) return [3 /*break*/, 4];
316
+ if (!(needRefetchDoc !== false)) return [3, 4];
404
317
  formulaVarFields = (0, exports.pickFieldFormulaVarFields)(configs);
405
- return [4 /*yield*/, (0, index_1.getSteedosSchema)().getObject(objectName).findOne(recordId, { fields: formulaVarFields })];
318
+ return [4, (0, index_1.getSteedosSchema)().getObject(objectName).findOne(recordId, { fields: formulaVarFields })];
406
319
  case 3:
407
320
  doc = _d.sent();
408
321
  _d.label = 4;
@@ -414,61 +327,55 @@ var runCurrentObjectFieldFormulas = function (objectName, recordId, doc, current
414
327
  configs_1 = tslib_1.__values(configs), configs_1_1 = configs_1.next();
415
328
  _d.label = 6;
416
329
  case 6:
417
- if (!!configs_1_1.done) return [3 /*break*/, 9];
330
+ if (!!configs_1_1.done) return [3, 9];
418
331
  config = configs_1_1.value;
419
- doc = Object.assign({}, doc, setDoc); //setDoc中计算得到的结果应该重新并到doc中支持计算
332
+ doc = Object.assign({}, doc, setDoc);
420
333
  _a = setDoc;
421
334
  _b = config.field_name;
422
- return [4 /*yield*/, (0, exports.computeFieldFormulaValue)(doc, config, currentUserId)];
335
+ return [4, (0, exports.computeFieldFormulaValue)(doc, config, currentUserId)];
423
336
  case 7:
424
337
  _a[_b] = _d.sent();
425
338
  _d.label = 8;
426
339
  case 8:
427
340
  configs_1_1 = configs_1.next();
428
- return [3 /*break*/, 6];
429
- case 9: return [3 /*break*/, 12];
341
+ return [3, 6];
342
+ case 9: return [3, 12];
430
343
  case 10:
431
344
  e_3_1 = _d.sent();
432
345
  e_3 = { error: e_3_1 };
433
- return [3 /*break*/, 12];
346
+ return [3, 12];
434
347
  case 11:
435
348
  try {
436
349
  if (configs_1_1 && !configs_1_1.done && (_c = configs_1.return)) _c.call(configs_1);
437
350
  }
438
351
  finally { if (e_3) throw e_3.error; }
439
- return [7 /*endfinally*/];
440
- case 12: return [4 /*yield*/, (0, index_1.getSteedosSchema)().getObject(objectName).directUpdate(recordId, setDoc)];
352
+ return [7];
353
+ case 12: return [4, (0, index_1.getSteedosSchema)().getObject(objectName).directUpdate(recordId, setDoc)];
441
354
  case 13:
442
355
  _d.sent();
443
- return [2 /*return*/];
356
+ return [2];
444
357
  }
445
358
  });
446
359
  });
447
360
  };
448
361
  exports.runCurrentObjectFieldFormulas = runCurrentObjectFieldFormulas;
449
- /**
450
- * 找到当前正在update的对象多条记录的公式字段并更新其字段值
451
- * @param objectName
452
- * @param filters
453
- * @param currentUserId
454
- */
455
362
  var runManyCurrentObjectFieldFormulas = function (objectName, filters, currentUserId) {
456
363
  return tslib_1.__awaiter(this, void 0, void 0, function () {
457
364
  var configs, formulaVarFields, docs, docs_1, docs_1_1, doc, e_4_1;
458
365
  var e_4, _a;
459
366
  return tslib_1.__generator(this, function (_b) {
460
367
  switch (_b.label) {
461
- case 0: return [4 /*yield*/, (0, field_formula_1.getObjectFieldFormulaConfigs)(objectName)];
368
+ case 0: return [4, (0, field_formula_1.getObjectFieldFormulaConfigs)(objectName)];
462
369
  case 1:
463
370
  configs = _b.sent();
464
371
  if (!configs.length) {
465
- return [2 /*return*/];
372
+ return [2];
466
373
  }
467
374
  if (!currentUserId) {
468
375
  (0, util_1.checkCurrentUserIdNotRequiredForFieldFormulas)(configs);
469
376
  }
470
377
  formulaVarFields = (0, exports.pickFieldFormulaVarFields)(configs);
471
- return [4 /*yield*/, (0, index_1.getSteedosSchema)().getObject(objectName).find({ filters: filters, fields: formulaVarFields })];
378
+ return [4, (0, index_1.getSteedosSchema)().getObject(objectName).find({ filters: filters, fields: formulaVarFields })];
472
379
  case 2:
473
380
  docs = _b.sent();
474
381
  _b.label = 3;
@@ -477,38 +384,32 @@ var runManyCurrentObjectFieldFormulas = function (objectName, filters, currentUs
477
384
  docs_1 = tslib_1.__values(docs), docs_1_1 = docs_1.next();
478
385
  _b.label = 4;
479
386
  case 4:
480
- if (!!docs_1_1.done) return [3 /*break*/, 7];
387
+ if (!!docs_1_1.done) return [3, 7];
481
388
  doc = docs_1_1.value;
482
- return [4 /*yield*/, (0, exports.runCurrentObjectFieldFormulas)(objectName, doc._id, doc, currentUserId, false, configs)];
389
+ return [4, (0, exports.runCurrentObjectFieldFormulas)(objectName, doc._id, doc, currentUserId, false, configs)];
483
390
  case 5:
484
391
  _b.sent();
485
392
  _b.label = 6;
486
393
  case 6:
487
394
  docs_1_1 = docs_1.next();
488
- return [3 /*break*/, 4];
489
- case 7: return [3 /*break*/, 10];
395
+ return [3, 4];
396
+ case 7: return [3, 10];
490
397
  case 8:
491
398
  e_4_1 = _b.sent();
492
399
  e_4 = { error: e_4_1 };
493
- return [3 /*break*/, 10];
400
+ return [3, 10];
494
401
  case 9:
495
402
  try {
496
403
  if (docs_1_1 && !docs_1_1.done && (_a = docs_1.return)) _a.call(docs_1);
497
404
  }
498
405
  finally { if (e_4) throw e_4.error; }
499
- return [7 /*endfinally*/];
500
- case 10: return [2 /*return*/];
406
+ return [7];
407
+ case 10: return [2];
501
408
  }
502
409
  });
503
410
  });
504
411
  };
505
412
  exports.runManyCurrentObjectFieldFormulas = runManyCurrentObjectFieldFormulas;
506
- /**
507
- * 修改记录时,根据查到的引用了该记录相关字段公式配置,重新计算字段公式,并把计算结果更新到数据库相关记录中
508
- * @param objectName 当前修改的记录所属对象名称
509
- * @param recordId 当前修改的记录ID
510
- * @param fieldFormulaConfig 查到的引用了该记录所属对象的相关字段公式配置之一
511
- */
512
413
  var updateQuotedByObjectFieldFormulaValue = function (objectName, recordId, fieldFormulaConfig, userSession, escapeConfigs) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
513
414
  var vars, fieldFormulaObjectName, currentObject, fieldFormulaObject, toAggregatePaths, vars_2, vars_2_1, varItem, paths, isInPaths, varItemToAggregatePaths, paths_1, paths_1_1, pathItem, formulaVarFields, toAggregatePaths_1, toAggregatePaths_1_1, toAggregatePathsItem, tempPath, doc, referenceToValue, record, docs, aggregateLookups, lastLookup, referenceToValue, record, aggregateFilters, docs, e_5_1;
514
415
  var e_6, _a, e_7, _b, e_5, _c;
@@ -543,7 +444,6 @@ var updateQuotedByObjectFieldFormulaValue = function (objectName, recordId, fiel
543
444
  finally { if (e_7) throw e_7.error; }
544
445
  }
545
446
  if (isInPaths) {
546
- // 添加时去除重复项
547
447
  addToAggregatePaths(varItemToAggregatePaths, toAggregatePaths);
548
448
  }
549
449
  }
@@ -562,71 +462,71 @@ var updateQuotedByObjectFieldFormulaValue = function (objectName, recordId, fiel
562
462
  toAggregatePaths_1 = tslib_1.__values(toAggregatePaths), toAggregatePaths_1_1 = toAggregatePaths_1.next();
563
463
  _d.label = 2;
564
464
  case 2:
565
- if (!!toAggregatePaths_1_1.done) return [3 /*break*/, 17];
465
+ if (!!toAggregatePaths_1_1.done) return [3, 17];
566
466
  toAggregatePathsItem = toAggregatePaths_1_1.value;
567
- if (!(toAggregatePathsItem.length < 3)) return [3 /*break*/, 11];
467
+ if (!(toAggregatePathsItem.length < 3)) return [3, 11];
568
468
  tempPath = toAggregatePathsItem[0];
569
- if (!(fieldFormulaObjectName === objectName && tempPath.reference_from === objectName)) return [3 /*break*/, 5];
570
- return [4 /*yield*/, fieldFormulaObject.findOne(recordId, { fields: formulaVarFields })];
469
+ if (!(fieldFormulaObjectName === objectName && tempPath.reference_from === objectName)) return [3, 5];
470
+ return [4, fieldFormulaObject.findOne(recordId, { fields: formulaVarFields })];
571
471
  case 3:
572
472
  doc = _d.sent();
573
- return [4 /*yield*/, (0, exports.updateDocsFieldFormulaValue)(doc, fieldFormulaConfig, userSession, escapeConfigs)];
473
+ return [4, (0, exports.updateDocsFieldFormulaValue)(doc, fieldFormulaConfig, userSession, escapeConfigs)];
574
474
  case 4:
575
475
  _d.sent();
576
- return [3 /*break*/, 10];
476
+ return [3, 10];
577
477
  case 5:
578
478
  referenceToValue = recordId;
579
- if (!(tempPath.reference_to_field && tempPath.reference_to_field !== "_id")) return [3 /*break*/, 7];
580
- return [4 /*yield*/, currentObject.findOne(recordId, { fields: [tempPath.reference_to_field] })];
479
+ if (!(tempPath.reference_to_field && tempPath.reference_to_field !== "_id")) return [3, 7];
480
+ return [4, currentObject.findOne(recordId, { fields: [tempPath.reference_to_field] })];
581
481
  case 6:
582
482
  record = _d.sent();
583
483
  referenceToValue = record && record[tempPath.reference_to_field];
584
484
  _d.label = 7;
585
- case 7: return [4 /*yield*/, fieldFormulaObject.find({ filters: [[tempPath.field_name, "=", referenceToValue]], fields: formulaVarFields })];
485
+ case 7: return [4, fieldFormulaObject.find({ filters: [[tempPath.field_name, "=", referenceToValue]], fields: formulaVarFields })];
586
486
  case 8:
587
487
  docs = _d.sent();
588
- return [4 /*yield*/, (0, exports.updateDocsFieldFormulaValue)(docs, fieldFormulaConfig, userSession, escapeConfigs)];
488
+ return [4, (0, exports.updateDocsFieldFormulaValue)(docs, fieldFormulaConfig, userSession, escapeConfigs)];
589
489
  case 9:
590
490
  _d.sent();
591
491
  _d.label = 10;
592
- case 10: return [3 /*break*/, 16];
492
+ case 10: return [3, 16];
593
493
  case 11:
594
494
  aggregateLookups = (0, util_1.getFormulaVarPathsAggregateLookups)(toAggregatePathsItem);
595
495
  lastLookup = aggregateLookups[aggregateLookups.length - 1]["$lookup"];
596
496
  referenceToValue = recordId;
597
- if (!(lastLookup.foreignField && lastLookup.foreignField !== "_id")) return [3 /*break*/, 13];
598
- return [4 /*yield*/, currentObject.findOne(recordId, { fields: [lastLookup.foreignField] })];
497
+ if (!(lastLookup.foreignField && lastLookup.foreignField !== "_id")) return [3, 13];
498
+ return [4, currentObject.findOne(recordId, { fields: [lastLookup.foreignField] })];
599
499
  case 12:
600
500
  record = _d.sent();
601
501
  referenceToValue = record && record[lastLookup.foreignField];
602
502
  _d.label = 13;
603
503
  case 13:
604
504
  aggregateFilters = [["".concat(lastLookup.as, ".").concat(lastLookup.foreignField), "=", referenceToValue]];
605
- return [4 /*yield*/, fieldFormulaObject.directAggregatePrefixalPipeline({
505
+ return [4, fieldFormulaObject.directAggregatePrefixalPipeline({
606
506
  filters: aggregateFilters,
607
507
  fields: formulaVarFields
608
508
  }, aggregateLookups)];
609
509
  case 14:
610
510
  docs = _d.sent();
611
- return [4 /*yield*/, (0, exports.updateDocsFieldFormulaValue)(docs, fieldFormulaConfig, userSession, escapeConfigs)];
511
+ return [4, (0, exports.updateDocsFieldFormulaValue)(docs, fieldFormulaConfig, userSession, escapeConfigs)];
612
512
  case 15:
613
513
  _d.sent();
614
514
  _d.label = 16;
615
515
  case 16:
616
516
  toAggregatePaths_1_1 = toAggregatePaths_1.next();
617
- return [3 /*break*/, 2];
618
- case 17: return [3 /*break*/, 20];
517
+ return [3, 2];
518
+ case 17: return [3, 20];
619
519
  case 18:
620
520
  e_5_1 = _d.sent();
621
521
  e_5 = { error: e_5_1 };
622
- return [3 /*break*/, 20];
522
+ return [3, 20];
623
523
  case 19:
624
524
  try {
625
525
  if (toAggregatePaths_1_1 && !toAggregatePaths_1_1.done && (_c = toAggregatePaths_1.return)) _c.call(toAggregatePaths_1);
626
526
  }
627
527
  finally { if (e_5) throw e_5.error; }
628
- return [7 /*endfinally*/];
629
- case 20: return [2 /*return*/];
528
+ return [7];
529
+ case 20: return [2];
630
530
  }
631
531
  });
632
532
  }); };
@@ -642,7 +542,7 @@ var updateDocsFieldFormulaValue = function (docs, fieldFormulaConfig, userSessio
642
542
  docs = [docs];
643
543
  }
644
544
  if (!docs.length) {
645
- return [2 /*return*/];
545
+ return [2];
646
546
  }
647
547
  fieldFormulaObject = (0, index_1.getSteedosSchema)().getObject(fieldFormulaObjectName);
648
548
  currentUserId = userSession ? userSession.userId : undefined;
@@ -652,38 +552,35 @@ var updateDocsFieldFormulaValue = function (docs, fieldFormulaConfig, userSessio
652
552
  docs_2 = tslib_1.__values(docs), docs_2_1 = docs_2.next();
653
553
  _b.label = 2;
654
554
  case 2:
655
- if (!!docs_2_1.done) return [3 /*break*/, 6];
555
+ if (!!docs_2_1.done) return [3, 6];
656
556
  doc = docs_2_1.value;
657
- return [4 /*yield*/, (0, exports.computeFieldFormulaValue)(doc, fieldFormulaConfig, currentUserId)];
557
+ return [4, (0, exports.computeFieldFormulaValue)(doc, fieldFormulaConfig, currentUserId)];
658
558
  case 3:
659
559
  value = _b.sent();
660
560
  setDoc = {};
661
561
  setDoc[fieldFormulaConfig.field_name] = value;
662
- return [4 /*yield*/, fieldFormulaObject.directUpdate(doc._id, setDoc)];
562
+ return [4, fieldFormulaObject.directUpdate(doc._id, setDoc)];
663
563
  case 4:
664
564
  _b.sent();
665
565
  _b.label = 5;
666
566
  case 5:
667
567
  docs_2_1 = docs_2.next();
668
- return [3 /*break*/, 2];
669
- case 6: return [3 /*break*/, 9];
568
+ return [3, 2];
569
+ case 6: return [3, 9];
670
570
  case 7:
671
571
  e_8_1 = _b.sent();
672
572
  e_8 = { error: e_8_1 };
673
- return [3 /*break*/, 9];
573
+ return [3, 9];
674
574
  case 8:
675
575
  try {
676
576
  if (docs_2_1 && !docs_2_1.done && (_a = docs_2.return)) _a.call(docs_2);
677
577
  }
678
578
  finally { if (e_8) throw e_8.error; }
679
- return [7 /*endfinally*/];
680
- case 9:
681
- // 这里特意重新遍历一次docs而不是直接在当前函数中每次更新一条记录后立即处理被引用字段的级联变更,见:公式或汇总触发级联重算时,数据类型变更可能会造成无法重算 #965
682
- return [4 /*yield*/, (0, exports.updateQuotedByDocsForFormulaType)(docs, fieldFormulaConfig, userSession, escapeConfigs)];
579
+ return [7];
580
+ case 9: return [4, (0, exports.updateQuotedByDocsForFormulaType)(docs, fieldFormulaConfig, userSession, escapeConfigs)];
683
581
  case 10:
684
- // 这里特意重新遍历一次docs而不是直接在当前函数中每次更新一条记录后立即处理被引用字段的级联变更,见:公式或汇总触发级联重算时,数据类型变更可能会造成无法重算 #965
685
582
  _b.sent();
686
- return [2 /*return*/];
583
+ return [2];
687
584
  }
688
585
  });
689
586
  }); };
@@ -699,13 +596,13 @@ var updateQuotedByDocsForFormulaType = function (docs, fieldFormulaConfig, userS
699
596
  docs = [docs];
700
597
  }
701
598
  if (!docs.length) {
702
- return [2 /*return*/];
599
+ return [2];
703
600
  }
704
601
  fieldNames = [fieldFormulaConfig.field_name];
705
- return [4 /*yield*/, (0, field_formula_1.getObjectQuotedByFieldFormulaConfigs)(fieldFormulaObjectName, fieldNames, escapeConfigs)];
602
+ return [4, (0, field_formula_1.getObjectQuotedByFieldFormulaConfigs)(fieldFormulaObjectName, fieldNames, escapeConfigs)];
706
603
  case 1:
707
604
  formulaQuotedByConfigs = _b.sent();
708
- return [4 /*yield*/, (0, summary_1.getObjectQuotedByFieldSummaryConfigs)(fieldFormulaObjectName, fieldNames)];
605
+ return [4, (0, summary_1.getObjectQuotedByFieldSummaryConfigs)(fieldFormulaObjectName, fieldNames)];
709
606
  case 2:
710
607
  summaryQuotedByConfigs = _b.sent();
711
608
  _b.label = 3;
@@ -714,69 +611,55 @@ var updateQuotedByDocsForFormulaType = function (docs, fieldFormulaConfig, userS
714
611
  docs_3 = tslib_1.__values(docs), docs_3_1 = docs_3.next();
715
612
  _b.label = 4;
716
613
  case 4:
717
- if (!!docs_3_1.done) return [3 /*break*/, 8];
614
+ if (!!docs_3_1.done) return [3, 8];
718
615
  doc = docs_3_1.value;
719
- // 公式字段修改后,需要找到引用了该公式字段的其他公式字段并更新其值
720
- return [4 /*yield*/, (0, exports.runQuotedByObjectFieldFormulas)(fieldFormulaObjectName, doc._id, userSession, {
616
+ return [4, (0, exports.runQuotedByObjectFieldFormulas)(fieldFormulaObjectName, doc._id, userSession, {
721
617
  fieldNames: fieldNames,
722
618
  quotedByConfigs: formulaQuotedByConfigs,
723
619
  escapeConfigs: escapeConfigs
724
- })
725
- // 公式字段修改后,需要找到引用了该公式字段的其他汇总字段并更新其值
726
- ];
620
+ })];
727
621
  case 5:
728
- // 公式字段修改后,需要找到引用了该公式字段的其他公式字段并更新其值
729
622
  _b.sent();
730
- // 公式字段修改后,需要找到引用了该公式字段的其他汇总字段并更新其值
731
- return [4 /*yield*/, (0, summary_1.runQuotedByObjectFieldSummaries)(fieldFormulaObjectName, doc._id, null, userSession, {
623
+ return [4, (0, summary_1.runQuotedByObjectFieldSummaries)(fieldFormulaObjectName, doc._id, null, userSession, {
732
624
  fieldNames: fieldNames,
733
625
  quotedByConfigs: summaryQuotedByConfigs
734
626
  })];
735
627
  case 6:
736
- // 公式字段修改后,需要找到引用了该公式字段的其他汇总字段并更新其值
737
628
  _b.sent();
738
629
  _b.label = 7;
739
630
  case 7:
740
631
  docs_3_1 = docs_3.next();
741
- return [3 /*break*/, 4];
742
- case 8: return [3 /*break*/, 11];
632
+ return [3, 4];
633
+ case 8: return [3, 11];
743
634
  case 9:
744
635
  e_9_1 = _b.sent();
745
636
  e_9 = { error: e_9_1 };
746
- return [3 /*break*/, 11];
637
+ return [3, 11];
747
638
  case 10:
748
639
  try {
749
640
  if (docs_3_1 && !docs_3_1.done && (_a = docs_3.return)) _a.call(docs_3);
750
641
  }
751
642
  finally { if (e_9) throw e_9.error; }
752
- return [7 /*endfinally*/];
753
- case 11: return [2 /*return*/];
643
+ return [7];
644
+ case 11: return [2];
754
645
  }
755
646
  });
756
647
  }); };
757
648
  exports.updateQuotedByDocsForFormulaType = updateQuotedByDocsForFormulaType;
758
- /**
759
- * 某个对象上的公式字段是否引用了某个对象和字段
760
- * @param formulaObjectName 公式字段在所在对象名称
761
- * @param formulaFieldName 公式字段名称
762
- * @param object_name 是否引用了该对象
763
- * @param field_name 是否引用了该字段
764
- */
765
649
  var isFormulaFieldQuotingObjectAndFields = function (formulaObjectName, formulaFieldName, objectName, fieldNames) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
766
650
  var configs;
767
651
  return tslib_1.__generator(this, function (_a) {
768
652
  switch (_a.label) {
769
- case 0: return [4 /*yield*/, (0, field_formula_1.getObjectFieldFormulaConfigs)(formulaObjectName, formulaFieldName)];
653
+ case 0: return [4, (0, field_formula_1.getObjectFieldFormulaConfigs)(formulaObjectName, formulaFieldName)];
770
654
  case 1:
771
655
  configs = _a.sent();
772
656
  if (configs && configs.length) {
773
- return [2 /*return*/, (0, util_1.isFieldFormulaConfigQuotingObjectAndFields)(configs[0], objectName, fieldNames)];
657
+ return [2, (0, util_1.isFieldFormulaConfigQuotingObjectAndFields)(configs[0], objectName, fieldNames)];
774
658
  }
775
659
  else {
776
- // 没找到公式字段配置说明传入的参数不是公式字段
777
- return [2 /*return*/, false];
660
+ return [2, false];
778
661
  }
779
- return [2 /*return*/];
662
+ return [2];
780
663
  }
781
664
  });
782
665
  }); };