oak-domain 2.0.2 → 2.0.3

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 (150) hide show
  1. package/lib/actions/action.d.ts +16 -16
  2. package/lib/actions/action.js +17 -17
  3. package/lib/actions/relation.d.ts +1 -1
  4. package/lib/actions/relation.js +2 -2
  5. package/lib/base-app-domain/ActionDefDict.d.ts +5 -5
  6. package/lib/base-app-domain/ActionDefDict.js +7 -7
  7. package/lib/base-app-domain/EntityDict.d.ts +12 -12
  8. package/lib/base-app-domain/EntityDict.js +2 -2
  9. package/lib/base-app-domain/Modi/Action.d.ts +10 -10
  10. package/lib/base-app-domain/Modi/Action.js +14 -14
  11. package/lib/base-app-domain/Modi/Schema.d.ts +161 -161
  12. package/lib/base-app-domain/Modi/Schema.js +2 -2
  13. package/lib/base-app-domain/Modi/Storage.d.ts +3 -3
  14. package/lib/base-app-domain/Modi/Storage.js +60 -60
  15. package/lib/base-app-domain/ModiEntity/Schema.d.ts +176 -176
  16. package/lib/base-app-domain/ModiEntity/Schema.js +2 -2
  17. package/lib/base-app-domain/ModiEntity/Storage.d.ts +3 -3
  18. package/lib/base-app-domain/ModiEntity/Storage.js +26 -26
  19. package/lib/base-app-domain/Oper/Schema.d.ts +158 -158
  20. package/lib/base-app-domain/Oper/Schema.js +2 -2
  21. package/lib/base-app-domain/Oper/Storage.d.ts +3 -3
  22. package/lib/base-app-domain/Oper/Storage.js +29 -29
  23. package/lib/base-app-domain/OperEntity/Schema.d.ts +193 -193
  24. package/lib/base-app-domain/OperEntity/Schema.js +2 -2
  25. package/lib/base-app-domain/OperEntity/Storage.d.ts +3 -3
  26. package/lib/base-app-domain/OperEntity/Storage.js +26 -26
  27. package/lib/base-app-domain/Storage.d.ts +3 -3
  28. package/lib/base-app-domain/Storage.js +15 -15
  29. package/lib/base-app-domain/User/Schema.d.ts +137 -137
  30. package/lib/base-app-domain/User/Schema.js +2 -2
  31. package/lib/base-app-domain/User/Storage.d.ts +3 -3
  32. package/lib/base-app-domain/User/Storage.js +25 -25
  33. package/lib/base-app-domain/_SubQuery.d.ts +36 -36
  34. package/lib/base-app-domain/_SubQuery.js +2 -2
  35. package/lib/base-app-domain/index.d.ts +3 -3
  36. package/lib/base-app-domain/index.js +6 -6
  37. package/lib/checkers/index.d.ts +5 -5
  38. package/lib/checkers/index.js +8 -8
  39. package/lib/compiler/env.d.ts +11 -11
  40. package/lib/compiler/env.js +39 -39
  41. package/lib/compiler/schemalBuilder.d.ts +2 -2
  42. package/lib/compiler/schemalBuilder.js +3137 -3137
  43. package/lib/compiler/uiBuilder.d.ts +1 -1
  44. package/lib/compiler/uiBuilder.js +3 -3
  45. package/lib/entities/Modi.d.ts +11 -11
  46. package/lib/entities/Modi.js +46 -46
  47. package/lib/entities/ModiEntity.d.ts +8 -8
  48. package/lib/entities/ModiEntity.js +15 -15
  49. package/lib/entities/Oper.d.ts +10 -10
  50. package/lib/entities/Oper.js +17 -17
  51. package/lib/entities/OperEntity.d.ts +8 -8
  52. package/lib/entities/OperEntity.js +15 -15
  53. package/lib/entities/User.d.ts +7 -7
  54. package/lib/entities/User.js +12 -12
  55. package/lib/store/AsyncRowStore.d.ts +45 -45
  56. package/lib/store/AsyncRowStore.js +180 -180
  57. package/lib/store/CascadeStore.d.ts +89 -89
  58. package/lib/store/CascadeStore.js +1515 -1511
  59. package/lib/store/SyncRowStore.d.ts +26 -26
  60. package/lib/store/SyncRowStore.js +45 -45
  61. package/lib/store/TriggerExecutor.d.ts +32 -32
  62. package/lib/store/TriggerExecutor.js +470 -470
  63. package/lib/store/actionDef.d.ts +9 -9
  64. package/lib/store/actionDef.js +135 -135
  65. package/lib/store/checker.d.ts +6 -6
  66. package/lib/store/checker.js +218 -165
  67. package/lib/store/filter.d.ts +99 -99
  68. package/lib/store/filter.js +855 -855
  69. package/lib/store/modi.d.ts +13 -13
  70. package/lib/store/modi.js +172 -172
  71. package/lib/store/relation.d.ts +13 -13
  72. package/lib/store/relation.js +64 -64
  73. package/lib/store/selection.d.ts +7 -7
  74. package/lib/store/selection.js +228 -228
  75. package/lib/triggers/index.d.ts +6 -6
  76. package/lib/triggers/index.js +11 -11
  77. package/lib/triggers/modi.d.ts +5 -5
  78. package/lib/triggers/modi.js +72 -72
  79. package/lib/types/Action.d.ts +14 -14
  80. package/lib/types/Action.js +2 -2
  81. package/lib/types/AppLoader.d.ts +11 -11
  82. package/lib/types/AppLoader.js +10 -10
  83. package/lib/types/Aspect.d.ts +12 -12
  84. package/lib/types/Aspect.js +4 -4
  85. package/lib/types/Auth.d.ts +57 -31
  86. package/lib/types/Auth.js +2 -2
  87. package/lib/types/Connector.d.ts +26 -26
  88. package/lib/types/Connector.js +9 -9
  89. package/lib/types/Context.d.ts +6 -6
  90. package/lib/types/Context.js +3 -3
  91. package/lib/types/DataType.d.ts +18 -18
  92. package/lib/types/DataType.js +5 -5
  93. package/lib/types/Demand.d.ts +77 -77
  94. package/lib/types/Demand.js +9 -9
  95. package/lib/types/Entity.d.ts +159 -159
  96. package/lib/types/Entity.js +15 -15
  97. package/lib/types/Exception.d.ts +83 -83
  98. package/lib/types/Exception.js +252 -252
  99. package/lib/types/Expression.d.ts +141 -141
  100. package/lib/types/Expression.js +387 -387
  101. package/lib/types/Geo.d.ts +18 -18
  102. package/lib/types/Geo.js +2 -2
  103. package/lib/types/Locale.d.ts +24 -24
  104. package/lib/types/Locale.js +2 -2
  105. package/lib/types/Logger.d.ts +5 -5
  106. package/lib/types/Logger.js +3 -3
  107. package/lib/types/Polyfill.d.ts +23 -23
  108. package/lib/types/Polyfill.js +2 -2
  109. package/lib/types/RowStore.d.ts +12 -12
  110. package/lib/types/RowStore.js +34 -34
  111. package/lib/types/Storage.d.ts +55 -55
  112. package/lib/types/Storage.js +2 -2
  113. package/lib/types/Trigger.d.ts +88 -89
  114. package/lib/types/Trigger.js +39 -39
  115. package/lib/types/Txn.d.ts +2 -2
  116. package/lib/types/Txn.js +3 -3
  117. package/lib/types/Watcher.d.ts +19 -19
  118. package/lib/types/Watcher.js +4 -4
  119. package/lib/types/index.d.ts +18 -18
  120. package/lib/types/index.js +21 -21
  121. package/lib/types/schema/DataTypes.d.ts +32 -32
  122. package/lib/types/schema/DataTypes.js +3 -3
  123. package/lib/utils/SimpleConnector.d.ts +30 -30
  124. package/lib/utils/SimpleConnector.js +102 -102
  125. package/lib/utils/assert.d.ts +5 -5
  126. package/lib/utils/assert.js +9 -9
  127. package/lib/utils/concurrent.d.ts +15 -15
  128. package/lib/utils/concurrent.js +89 -89
  129. package/lib/utils/geo.d.ts +4 -4
  130. package/lib/utils/geo.js +24 -24
  131. package/lib/utils/lodash.d.ts +5 -5
  132. package/lib/utils/lodash.js +38 -38
  133. package/lib/utils/random/random.d.ts +1 -1
  134. package/lib/utils/random/random.js +24 -24
  135. package/lib/utils/random/random.mp.d.ts +1 -1
  136. package/lib/utils/random/random.mp.js +25 -25
  137. package/lib/utils/random/random.web.d.ts +1 -1
  138. package/lib/utils/random/random.web.js +17 -17
  139. package/lib/utils/string.d.ts +22 -22
  140. package/lib/utils/string.js +70 -70
  141. package/lib/utils/uuid.d.ts +12 -12
  142. package/lib/utils/uuid.js +182 -182
  143. package/lib/utils/validator.d.ts +23 -23
  144. package/lib/utils/validator.js +123 -123
  145. package/package.json +47 -47
  146. package/src/entities/Modi.ts +68 -68
  147. package/src/entities/ModiEntity.ts +24 -24
  148. package/src/entities/Oper.ts +28 -28
  149. package/src/entities/OperEntity.ts +24 -24
  150. package/src/entities/User.ts +19 -19
@@ -1,165 +1,218 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.translateCheckerInSyncContext = exports.translateCheckerInAsyncContext = void 0;
4
- var tslib_1 = require("tslib");
5
- var assert_1 = tslib_1.__importDefault(require("assert"));
6
- var filter_1 = require("../store/filter");
7
- var Exception_1 = require("../types/Exception");
8
- var actionDef_1 = require("./actionDef");
9
- function translateCheckerInAsyncContext(checker) {
10
- var _this = this;
11
- var entity = checker.entity, type = checker.type;
12
- switch (type) {
13
- case 'data': {
14
- var checkerFn_1 = checker.checker;
15
- return (function (_a, context) {
16
- var operation = _a.operation;
17
- return tslib_1.__awaiter(_this, void 0, void 0, function () {
18
- var data;
19
- return tslib_1.__generator(this, function (_b) {
20
- data = operation.data;
21
- checkerFn_1(data, context);
22
- return [2 /*return*/, 0];
23
- });
24
- });
25
- });
26
- }
27
- case 'row': {
28
- var filter_2 = checker.filter, errMsg_1 = checker.errMsg, inconsistentRows_1 = checker.inconsistentRows;
29
- return (function (_a, context, option) {
30
- var operation = _a.operation;
31
- return tslib_1.__awaiter(_this, void 0, void 0, function () {
32
- var operationFilter, action, filter2, entity2, selection2, rows2, data_1, rows2, data_2;
33
- var _b, _c;
34
- return tslib_1.__generator(this, function (_d) {
35
- switch (_d.label) {
36
- case 0:
37
- operationFilter = operation.filter, action = operation.action;
38
- (0, assert_1.default)(operationFilter);
39
- filter2 = typeof filter_2 === 'function' ? filter_2(context, option) : filter_2;
40
- if (!['select', 'count', 'stat'].includes(action)) return [3 /*break*/, 1];
41
- operation.filter = (0, filter_1.addFilterSegment)(operationFilter, filter2);
42
- return [2 /*return*/, 0];
43
- case 1: return [4 /*yield*/, (0, filter_1.checkFilterContains)(entity, context, filter2, operationFilter)];
44
- case 2:
45
- if (_d.sent()) {
46
- return [2 /*return*/, 0];
47
- }
48
- if (!inconsistentRows_1) return [3 /*break*/, 4];
49
- entity2 = inconsistentRows_1.entity, selection2 = inconsistentRows_1.selection;
50
- return [4 /*yield*/, context.select(entity2, selection2(operationFilter), {
51
- dontCollect: true,
52
- blockTrigger: true,
53
- })];
54
- case 3:
55
- rows2 = _d.sent();
56
- data_1 = {};
57
- rows2.forEach(function (ele) {
58
- var _a;
59
- return Object.assign(data_1, (_a = {},
60
- _a[ele.id] = ele,
61
- _a));
62
- });
63
- throw new Exception_1.OakRowInconsistencyException({
64
- a: 's',
65
- d: (_b = {},
66
- _b[entity2] = data_1,
67
- _b)
68
- }, errMsg_1);
69
- case 4: return [4 /*yield*/, context.select(entity, {
70
- data: (0, actionDef_1.getFullProjection)(entity, context.getSchema()),
71
- filter: Object.assign({}, operationFilter, {
72
- $not: filter2,
73
- })
74
- }, {
75
- dontCollect: true,
76
- blockTrigger: true,
77
- })];
78
- case 5:
79
- rows2 = _d.sent();
80
- data_2 = {};
81
- rows2.forEach(function (ele) {
82
- var _a;
83
- return Object.assign(data_2, (_a = {},
84
- _a[ele.id] = ele,
85
- _a));
86
- });
87
- throw new Exception_1.OakRowInconsistencyException({
88
- a: 's',
89
- d: (_c = {},
90
- _c[entity] = data_2,
91
- _c)
92
- }, errMsg_1);
93
- }
94
- });
95
- });
96
- });
97
- }
98
- case 'relation': {
99
- var relationFilter_1 = checker.relationFilter;
100
- return (function (_a, context, option) {
101
- var operation = _a.operation;
102
- return tslib_1.__awaiter(_this, void 0, void 0, function () {
103
- return tslib_1.__generator(this, function (_b) {
104
- if (context.isRoot()) {
105
- return [2 /*return*/, 0];
106
- }
107
- // 对后台而言,将生成的relationFilter加到filter之上(select可以在此加以权限的过滤)
108
- operation.filter = (0, filter_1.combineFilters)([operation.filter, relationFilter_1(context, option)]);
109
- return [2 /*return*/, 0];
110
- });
111
- });
112
- });
113
- }
114
- default: {
115
- (0, assert_1.default)(false);
116
- }
117
- }
118
- }
119
- exports.translateCheckerInAsyncContext = translateCheckerInAsyncContext;
120
- function translateCheckerInSyncContext(checker) {
121
- var entity = checker.entity, type = checker.type;
122
- switch (type) {
123
- case 'data': {
124
- var checkerFn_2 = checker.checker;
125
- return function (operation, context) { return checkerFn_2(operation.data, context); };
126
- }
127
- case 'row': {
128
- var filter_3 = checker.filter, errMsg_2 = checker.errMsg;
129
- return function (operation, context, option) {
130
- var operationFilter = operation.filter, action = operation.action;
131
- var filter2 = typeof filter_3 === 'function' ? filter_3(context, option) : filter_3;
132
- (0, assert_1.default)(operationFilter);
133
- if (['select', 'count', 'stat'].includes(action)) {
134
- operation.filter = (0, filter_1.addFilterSegment)(operationFilter, filter2);
135
- return 0;
136
- }
137
- else {
138
- if ((0, filter_1.checkFilterContains)(entity, context, filter2, operationFilter)) {
139
- return;
140
- }
141
- throw new Exception_1.OakRowInconsistencyException(undefined, errMsg_2);
142
- }
143
- };
144
- }
145
- case 'relation': {
146
- var filter_4 = checker.relationFilter, errMsg_3 = checker.errMsg;
147
- return function (operation, context, option) {
148
- if (context.isRoot()) {
149
- return;
150
- }
151
- var filter2 = typeof filter_4 === 'function' ? filter_4(context, option) : filter_4;
152
- var operationFilter = operation.filter;
153
- (0, assert_1.default)(operationFilter);
154
- if ((0, filter_1.checkFilterContains)(entity, context, filter2, operationFilter)) {
155
- return;
156
- }
157
- throw new Exception_1.OakUserUnpermittedException(errMsg_3);
158
- };
159
- }
160
- default: {
161
- (0, assert_1.default)(false);
162
- }
163
- }
164
- }
165
- exports.translateCheckerInSyncContext = translateCheckerInSyncContext;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.translateCheckerInSyncContext = exports.translateCheckerInAsyncContext = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var assert_1 = tslib_1.__importDefault(require("assert"));
6
+ var filter_1 = require("../store/filter");
7
+ var Exception_1 = require("../types/Exception");
8
+ var actionDef_1 = require("./actionDef");
9
+ function translateCheckerInAsyncContext(checker) {
10
+ var _this = this;
11
+ var entity = checker.entity, type = checker.type;
12
+ switch (type) {
13
+ case 'data': {
14
+ var checkerFn_1 = checker.checker;
15
+ return (function (_a, context) {
16
+ var operation = _a.operation;
17
+ return tslib_1.__awaiter(_this, void 0, void 0, function () {
18
+ var data;
19
+ return tslib_1.__generator(this, function (_b) {
20
+ data = operation.data;
21
+ checkerFn_1(data, context);
22
+ return [2 /*return*/, 0];
23
+ });
24
+ });
25
+ });
26
+ }
27
+ case 'row': {
28
+ var filter_2 = checker.filter, errMsg_1 = checker.errMsg, inconsistentRows_1 = checker.inconsistentRows;
29
+ return (function (_a, context, option) {
30
+ var operation = _a.operation;
31
+ return tslib_1.__awaiter(_this, void 0, void 0, function () {
32
+ var operationFilter, action, filter2, entity2, selection2, rows2, data_1, rows2, data_2;
33
+ var _b, _c;
34
+ return tslib_1.__generator(this, function (_d) {
35
+ switch (_d.label) {
36
+ case 0:
37
+ operationFilter = operation.filter, action = operation.action;
38
+ (0, assert_1.default)(operationFilter);
39
+ filter2 = typeof filter_2 === 'function' ? filter_2(operation, context, option) : filter_2;
40
+ if (!['select', 'count', 'stat'].includes(action)) return [3 /*break*/, 1];
41
+ operation.filter = (0, filter_1.addFilterSegment)(operationFilter, filter2);
42
+ return [2 /*return*/, 0];
43
+ case 1: return [4 /*yield*/, (0, filter_1.checkFilterContains)(entity, context, filter2, operationFilter)];
44
+ case 2:
45
+ if (_d.sent()) {
46
+ return [2 /*return*/, 0];
47
+ }
48
+ if (!inconsistentRows_1) return [3 /*break*/, 4];
49
+ entity2 = inconsistentRows_1.entity, selection2 = inconsistentRows_1.selection;
50
+ return [4 /*yield*/, context.select(entity2, selection2(operationFilter), {
51
+ dontCollect: true,
52
+ blockTrigger: true,
53
+ })];
54
+ case 3:
55
+ rows2 = _d.sent();
56
+ data_1 = {};
57
+ rows2.forEach(function (ele) {
58
+ var _a;
59
+ return Object.assign(data_1, (_a = {},
60
+ _a[ele.id] = ele,
61
+ _a));
62
+ });
63
+ throw new Exception_1.OakRowInconsistencyException({
64
+ a: 's',
65
+ d: (_b = {},
66
+ _b[entity2] = data_1,
67
+ _b)
68
+ }, errMsg_1);
69
+ case 4: return [4 /*yield*/, context.select(entity, {
70
+ data: (0, actionDef_1.getFullProjection)(entity, context.getSchema()),
71
+ filter: Object.assign({}, operationFilter, {
72
+ $not: filter2,
73
+ })
74
+ }, {
75
+ dontCollect: true,
76
+ blockTrigger: true,
77
+ })];
78
+ case 5:
79
+ rows2 = _d.sent();
80
+ data_2 = {};
81
+ rows2.forEach(function (ele) {
82
+ var _a;
83
+ return Object.assign(data_2, (_a = {},
84
+ _a[ele.id] = ele,
85
+ _a));
86
+ });
87
+ throw new Exception_1.OakRowInconsistencyException({
88
+ a: 's',
89
+ d: (_c = {},
90
+ _c[entity] = data_2,
91
+ _c)
92
+ }, errMsg_1);
93
+ }
94
+ });
95
+ });
96
+ });
97
+ }
98
+ case 'relation': {
99
+ var relationFilter_1 = checker.relationFilter;
100
+ return (function (_a, context, option) {
101
+ var operation = _a.operation;
102
+ return tslib_1.__awaiter(_this, void 0, void 0, function () {
103
+ return tslib_1.__generator(this, function (_b) {
104
+ if (context.isRoot()) {
105
+ return [2 /*return*/, 0];
106
+ }
107
+ // 对后台而言,将生成的relationFilter加到filter之上(select可以在此加以权限的过滤)
108
+ operation.filter = (0, filter_1.combineFilters)([operation.filter, relationFilter_1(operation, context, option)]);
109
+ return [2 /*return*/, 0];
110
+ });
111
+ });
112
+ });
113
+ }
114
+ case 'expression':
115
+ case 'expressionRelation': {
116
+ var expression_1 = checker.expression, errMsg_2 = checker.errMsg;
117
+ return (function (_a, context, option) {
118
+ var operation = _a.operation;
119
+ return tslib_1.__awaiter(_this, void 0, void 0, function () {
120
+ var _b, expressionEntity, expr, expressionFilter, _c, result;
121
+ return tslib_1.__generator(this, function (_d) {
122
+ switch (_d.label) {
123
+ case 0:
124
+ if (context.isRoot() && type === 'expressionRelation') {
125
+ return [2 /*return*/, 0];
126
+ }
127
+ _b = expression_1(operation, context, option), expressionEntity = _b.entity, expr = _b.expr, expressionFilter = _b.filter;
128
+ return [4 /*yield*/, context.select(expressionEntity, {
129
+ data: {
130
+ $expr: expr,
131
+ },
132
+ filter: expressionFilter,
133
+ }, Object.assign({}, option, { dontCollect: true }))];
134
+ case 1:
135
+ _c = tslib_1.__read.apply(void 0, [_d.sent(), 1]), result = _c[0];
136
+ if (!result) {
137
+ // 条件判定为假,抛异常
138
+ throw new Exception_1.OakRowInconsistencyException(undefined, errMsg_2);
139
+ }
140
+ return [2 /*return*/, 0];
141
+ }
142
+ });
143
+ });
144
+ });
145
+ }
146
+ default: {
147
+ (0, assert_1.default)(false);
148
+ }
149
+ }
150
+ }
151
+ exports.translateCheckerInAsyncContext = translateCheckerInAsyncContext;
152
+ function translateCheckerInSyncContext(checker) {
153
+ var entity = checker.entity, type = checker.type;
154
+ switch (type) {
155
+ case 'data': {
156
+ var checkerFn_2 = checker.checker;
157
+ return function (operation, context) { return checkerFn_2(operation.data, context); };
158
+ }
159
+ case 'row': {
160
+ var filter_3 = checker.filter, errMsg_3 = checker.errMsg;
161
+ return function (operation, context, option) {
162
+ var operationFilter = operation.filter, action = operation.action;
163
+ var filter2 = typeof filter_3 === 'function' ? filter_3(operation, context, option) : filter_3;
164
+ (0, assert_1.default)(operationFilter);
165
+ if (['select', 'count', 'stat'].includes(action)) {
166
+ operation.filter = (0, filter_1.addFilterSegment)(operationFilter, filter2);
167
+ return 0;
168
+ }
169
+ else {
170
+ if ((0, filter_1.checkFilterContains)(entity, context, filter2, operationFilter)) {
171
+ return;
172
+ }
173
+ throw new Exception_1.OakRowInconsistencyException(undefined, errMsg_3);
174
+ }
175
+ };
176
+ }
177
+ case 'relation': {
178
+ var filter_4 = checker.relationFilter, errMsg_4 = checker.errMsg;
179
+ return function (operation, context, option) {
180
+ if (context.isRoot()) {
181
+ return;
182
+ }
183
+ var filter2 = typeof filter_4 === 'function' ? filter_4(operation, context, option) : filter_4;
184
+ var operationFilter = operation.filter;
185
+ (0, assert_1.default)(operationFilter);
186
+ if ((0, filter_1.checkFilterContains)(entity, context, filter2, operationFilter)) {
187
+ return;
188
+ }
189
+ throw new Exception_1.OakUserUnpermittedException(errMsg_4);
190
+ };
191
+ }
192
+ case 'expression':
193
+ case 'expressionRelation': {
194
+ var expression_2 = checker.expression, errMsg_5 = checker.errMsg;
195
+ return function (operation, context, option) {
196
+ if (context.isRoot() && type === 'expressionRelation') {
197
+ return;
198
+ }
199
+ var _a = expression_2(operation, context, option), expressionEntity = _a.entity, expr = _a.expr, expressionFilter = _a.filter;
200
+ var _b = tslib_1.__read(context.select(expressionEntity, {
201
+ data: {
202
+ $expr: expr,
203
+ },
204
+ filter: expressionFilter,
205
+ }, Object.assign({}, option, { dontCollect: true })), 1), result = _b[0];
206
+ if (!result.$expr) {
207
+ // 条件判定为假,抛异常
208
+ throw new Exception_1.OakRowInconsistencyException(undefined, errMsg_5);
209
+ }
210
+ return;
211
+ };
212
+ }
213
+ default: {
214
+ (0, assert_1.default)(false);
215
+ }
216
+ }
217
+ }
218
+ exports.translateCheckerInSyncContext = translateCheckerInSyncContext;
@@ -1,99 +1,99 @@
1
- import { StorageSchema } from '../types';
2
- import { EntityDict } from "../types/Entity";
3
- import { AsyncContext } from './AsyncRowStore';
4
- import { SyncContext } from './SyncRowStore';
5
- export declare function addFilterSegment<ED extends EntityDict, T extends keyof ED>(...filters: ED[T]['Selection']['filter'][]): ED[T]["Selection"]["filter"];
6
- export declare function unionFilterSegment<ED extends EntityDict, T extends keyof ED>(...filters: ED[T]['Selection']['filter'][]): ED[T]["Selection"]["filter"];
7
- export declare function combineFilters<ED extends EntityDict, T extends keyof ED>(filters: Array<ED[T]['Selection']['filter']>, union?: true): ED[T]["Selection"]["filter"];
8
- /**
9
- * 判断value1表达的单个属性查询与同属性上value2表达的查询是包容还是相斥
10
- * 相容即value1所表达的查询结果一定被value2表达的查询结果所包含,例如:
11
- * value1: {
12
- * $eq: 12
13
- * }
14
- * value2: {
15
- * $gt: 8,
16
- * }
17
- * 此时value1相容value2
18
- *
19
- * 相斥即value1所表达的查询结果与value2一定毫无联系,例如:
20
- * value1: {
21
- * $gt: 8,
22
- * }
23
- * value2: {
24
- * $lt: 2,
25
- * }
26
- *
27
- *
28
- * @param value1
29
- * @param value2
30
- * @attention: 1)这里的测试不够充分,有些算子之间的相容或相斥可能有遗漏, 2)有新的算子加入需要修改代码
31
- */
32
- export declare function judgeValueRelation(value1: any, value2: any, contained: boolean): boolean;
33
- /**
34
- *
35
- * 判断filter是否包含conditionalFilter中的查询条件,即filter查询的结果一定满足conditionalFilter的约束
36
- * filter = {
37
- * a: 1
38
- * b: 2,
39
- * c: 3,
40
- * },
41
- * conditionalFilter = {
42
- * a: 1
43
- * }
44
- * 则包含
45
- * @param entity
46
- * @param schema
47
- * @param filter
48
- * @param conditionalFilter
49
- * @returns
50
- */
51
- export declare function contains<ED extends EntityDict, T extends keyof ED>(entity: T, schema: StorageSchema<ED>, filter: ED[T]['Selection']['filter'], conditionalFilter: ED[T]['Selection']['filter']): boolean;
52
- /**
53
- * 判断filter1和filter2是否相斥,即filter1和filter2查询的结果一定没有交集
54
- * filter1 = {
55
- * a: 2
56
- * },
57
- * filter2 = {
58
- * a: 1
59
- * }
60
- * 则包含
61
- * @param entity
62
- * @param schema
63
- * @param filter
64
- * @param conditionalFilter
65
- */
66
- export declare function repel<ED extends EntityDict, T extends keyof ED>(entity: T, schema: StorageSchema<ED>, filter1: ED[T]['Selection']['filter'], filter2: ED[T]['Selection']['filter']): boolean;
67
- /**
68
- * 从filter中判断是否有确定的id对象,如果有则返回这些id,没有返回空数组
69
- * @param filter
70
- * @returns
71
- */
72
- export declare function getRelevantIds<ED extends EntityDict, T extends keyof ED>(filter: ED[T]['Selection']['filter']): string[];
73
- /**
74
- * 判断两个过滤条件是否完全一致
75
- * @param entity
76
- * @param schema
77
- * @param filter1
78
- * @param filter2
79
- */
80
- export declare function same<ED extends EntityDict, T extends keyof ED>(entity: T, schema: StorageSchema<ED>, filter1: ED[T]['Selection']['filter'], filter2: ED[T]['Selection']['filter']): boolean;
81
- /**
82
- * 寻找在树形结构中满足条件的数据行的上层数据
83
- * 例如在area表中,如果“杭州市”满足这一条件,则希望查到更高层的“浙江省”和“中国”,即可构造出满足条件的filter
84
- * @param entity
85
- * @param parentKey parentId属性名
86
- * @param filter 查询当前行的条件
87
- * @param level
88
- */
89
- export declare function makeTreeAncestorFilter<ED extends EntityDict, T extends keyof ED>(entity: T, parentKey: string, filter: ED[T]['Selection']['filter'], level?: number, includeAll?: boolean, includeSelf?: boolean): ED[T]['Selection']['filter'];
90
- /**
91
- * 寻找在树形结构中满足条件的数据行的下层数据
92
- * 例如在area表中,如果“杭州市”满足这一条件,则希望查到更低层的“西湖区”,即可构造出满足条件的filter
93
- * @param entity
94
- * @param parentKey parentId属性名
95
- * @param filter 查询当前行的条件
96
- * @param level
97
- */
98
- export declare function makeTreeDescendantFilter<ED extends EntityDict, T extends keyof ED>(entity: T, parentKey: string, filter: ED[T]['Selection']['filter'], level?: number, includeAll?: boolean, includeSelf?: boolean): ED[T]['Selection']['filter'];
99
- export declare function checkFilterContains<ED extends EntityDict, T extends keyof ED, Cxt extends SyncContext<ED> | AsyncContext<ED>>(entity: T, context: Cxt, contained: ED[T]['Selection']['filter'], filter?: ED[T]['Selection']['filter']): boolean | Promise<boolean>;
1
+ import { StorageSchema } from '../types';
2
+ import { EntityDict } from "../types/Entity";
3
+ import { AsyncContext } from './AsyncRowStore';
4
+ import { SyncContext } from './SyncRowStore';
5
+ export declare function addFilterSegment<ED extends EntityDict, T extends keyof ED>(...filters: ED[T]['Selection']['filter'][]): ED[T]["Selection"]["filter"];
6
+ export declare function unionFilterSegment<ED extends EntityDict, T extends keyof ED>(...filters: ED[T]['Selection']['filter'][]): ED[T]["Selection"]["filter"];
7
+ export declare function combineFilters<ED extends EntityDict, T extends keyof ED>(filters: Array<ED[T]['Selection']['filter']>, union?: true): ED[T]["Selection"]["filter"];
8
+ /**
9
+ * 判断value1表达的单个属性查询与同属性上value2表达的查询是包容还是相斥
10
+ * 相容即value1所表达的查询结果一定被value2表达的查询结果所包含,例如:
11
+ * value1: {
12
+ * $eq: 12
13
+ * }
14
+ * value2: {
15
+ * $gt: 8,
16
+ * }
17
+ * 此时value1相容value2
18
+ *
19
+ * 相斥即value1所表达的查询结果与value2一定毫无联系,例如:
20
+ * value1: {
21
+ * $gt: 8,
22
+ * }
23
+ * value2: {
24
+ * $lt: 2,
25
+ * }
26
+ *
27
+ *
28
+ * @param value1
29
+ * @param value2
30
+ * @attention: 1)这里的测试不够充分,有些算子之间的相容或相斥可能有遗漏, 2)有新的算子加入需要修改代码
31
+ */
32
+ export declare function judgeValueRelation(value1: any, value2: any, contained: boolean): boolean;
33
+ /**
34
+ *
35
+ * 判断filter是否包含conditionalFilter中的查询条件,即filter查询的结果一定满足conditionalFilter的约束
36
+ * filter = {
37
+ * a: 1
38
+ * b: 2,
39
+ * c: 3,
40
+ * },
41
+ * conditionalFilter = {
42
+ * a: 1
43
+ * }
44
+ * 则包含
45
+ * @param entity
46
+ * @param schema
47
+ * @param filter
48
+ * @param conditionalFilter
49
+ * @returns
50
+ */
51
+ export declare function contains<ED extends EntityDict, T extends keyof ED>(entity: T, schema: StorageSchema<ED>, filter: ED[T]['Selection']['filter'], conditionalFilter: ED[T]['Selection']['filter']): boolean;
52
+ /**
53
+ * 判断filter1和filter2是否相斥,即filter1和filter2查询的结果一定没有交集
54
+ * filter1 = {
55
+ * a: 2
56
+ * },
57
+ * filter2 = {
58
+ * a: 1
59
+ * }
60
+ * 则包含
61
+ * @param entity
62
+ * @param schema
63
+ * @param filter
64
+ * @param conditionalFilter
65
+ */
66
+ export declare function repel<ED extends EntityDict, T extends keyof ED>(entity: T, schema: StorageSchema<ED>, filter1: ED[T]['Selection']['filter'], filter2: ED[T]['Selection']['filter']): boolean;
67
+ /**
68
+ * 从filter中判断是否有确定的id对象,如果有则返回这些id,没有返回空数组
69
+ * @param filter
70
+ * @returns
71
+ */
72
+ export declare function getRelevantIds<ED extends EntityDict, T extends keyof ED>(filter: ED[T]['Selection']['filter']): string[];
73
+ /**
74
+ * 判断两个过滤条件是否完全一致
75
+ * @param entity
76
+ * @param schema
77
+ * @param filter1
78
+ * @param filter2
79
+ */
80
+ export declare function same<ED extends EntityDict, T extends keyof ED>(entity: T, schema: StorageSchema<ED>, filter1: ED[T]['Selection']['filter'], filter2: ED[T]['Selection']['filter']): boolean;
81
+ /**
82
+ * 寻找在树形结构中满足条件的数据行的上层数据
83
+ * 例如在area表中,如果“杭州市”满足这一条件,则希望查到更高层的“浙江省”和“中国”,即可构造出满足条件的filter
84
+ * @param entity
85
+ * @param parentKey parentId属性名
86
+ * @param filter 查询当前行的条件
87
+ * @param level
88
+ */
89
+ export declare function makeTreeAncestorFilter<ED extends EntityDict, T extends keyof ED>(entity: T, parentKey: string, filter: ED[T]['Selection']['filter'], level?: number, includeAll?: boolean, includeSelf?: boolean): ED[T]['Selection']['filter'];
90
+ /**
91
+ * 寻找在树形结构中满足条件的数据行的下层数据
92
+ * 例如在area表中,如果“杭州市”满足这一条件,则希望查到更低层的“西湖区”,即可构造出满足条件的filter
93
+ * @param entity
94
+ * @param parentKey parentId属性名
95
+ * @param filter 查询当前行的条件
96
+ * @param level
97
+ */
98
+ export declare function makeTreeDescendantFilter<ED extends EntityDict, T extends keyof ED>(entity: T, parentKey: string, filter: ED[T]['Selection']['filter'], level?: number, includeAll?: boolean, includeSelf?: boolean): ED[T]['Selection']['filter'];
99
+ export declare function checkFilterContains<ED extends EntityDict, T extends keyof ED, Cxt extends SyncContext<ED> | AsyncContext<ED>>(entity: T, context: Cxt, contained: ED[T]['Selection']['filter'], filter?: ED[T]['Selection']['filter']): boolean | Promise<boolean>;