oak-domain 2.4.0 → 2.4.2
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/action.d.ts +16 -16
- package/lib/actions/action.js +17 -17
- package/lib/actions/relation.d.ts +5 -5
- package/lib/actions/relation.js +38 -38
- package/lib/base-app-domain/ActionDefDict.d.ts +5 -5
- package/lib/base-app-domain/ActionDefDict.js +7 -7
- package/lib/base-app-domain/EntityDict.d.ts +12 -12
- package/lib/base-app-domain/EntityDict.js +2 -2
- package/lib/base-app-domain/Modi/Action.d.ts +10 -10
- package/lib/base-app-domain/Modi/Action.js +14 -14
- package/lib/base-app-domain/Modi/Schema.d.ts +146 -146
- package/lib/base-app-domain/Modi/Schema.js +2 -2
- package/lib/base-app-domain/Modi/Storage.d.ts +3 -3
- package/lib/base-app-domain/Modi/Storage.js +60 -60
- package/lib/base-app-domain/ModiEntity/Schema.d.ts +162 -162
- package/lib/base-app-domain/ModiEntity/Schema.js +2 -2
- package/lib/base-app-domain/ModiEntity/Storage.d.ts +3 -3
- package/lib/base-app-domain/ModiEntity/Storage.js +26 -26
- package/lib/base-app-domain/Oper/Schema.d.ts +144 -144
- package/lib/base-app-domain/Oper/Schema.js +2 -2
- package/lib/base-app-domain/Oper/Storage.d.ts +3 -3
- package/lib/base-app-domain/Oper/Storage.js +29 -29
- package/lib/base-app-domain/OperEntity/Schema.d.ts +178 -178
- package/lib/base-app-domain/OperEntity/Schema.js +2 -2
- package/lib/base-app-domain/OperEntity/Storage.d.ts +3 -3
- package/lib/base-app-domain/OperEntity/Storage.js +26 -26
- package/lib/base-app-domain/Storage.d.ts +3 -3
- package/lib/base-app-domain/Storage.js +15 -15
- package/lib/base-app-domain/User/Schema.d.ts +128 -128
- package/lib/base-app-domain/User/Schema.js +2 -2
- package/lib/base-app-domain/User/Storage.d.ts +3 -3
- package/lib/base-app-domain/User/Storage.js +25 -25
- package/lib/base-app-domain/_SubQuery.d.ts +36 -36
- package/lib/base-app-domain/_SubQuery.js +2 -2
- package/lib/base-app-domain/index.d.ts +3 -3
- package/lib/base-app-domain/index.js +6 -6
- package/lib/checkers/index.d.ts +5 -5
- package/lib/checkers/index.js +15 -15
- package/lib/compiler/env.d.ts +11 -11
- package/lib/compiler/env.js +39 -39
- package/lib/compiler/schemalBuilder.d.ts +2 -2
- package/lib/compiler/schemalBuilder.js +3303 -3301
- package/lib/compiler/uiBuilder.d.ts +1 -1
- package/lib/compiler/uiBuilder.js +3 -3
- package/lib/entities/Modi.d.ts +11 -11
- package/lib/entities/Modi.js +46 -46
- package/lib/entities/ModiEntity.d.ts +8 -8
- package/lib/entities/ModiEntity.js +15 -15
- package/lib/entities/Oper.d.ts +10 -10
- package/lib/entities/Oper.js +17 -17
- package/lib/entities/OperEntity.d.ts +8 -8
- package/lib/entities/OperEntity.js +15 -15
- package/lib/entities/User.d.ts +7 -7
- package/lib/entities/User.js +12 -12
- package/lib/store/AsyncRowStore.d.ts +48 -48
- package/lib/store/AsyncRowStore.js +183 -183
- package/lib/store/CascadeStore.d.ts +91 -91
- package/lib/store/CascadeStore.js +1590 -1594
- package/lib/store/SyncRowStore.d.ts +29 -29
- package/lib/store/SyncRowStore.js +48 -48
- package/lib/store/TriggerExecutor.d.ts +32 -32
- package/lib/store/TriggerExecutor.js +527 -527
- package/lib/store/actionDef.d.ts +9 -9
- package/lib/store/actionDef.js +333 -135
- package/lib/store/checker.d.ts +13 -13
- package/lib/store/checker.js +498 -498
- package/lib/store/filter.d.ts +109 -109
- package/lib/store/filter.js +893 -893
- package/lib/store/modi.d.ts +13 -13
- package/lib/store/modi.js +198 -198
- package/lib/store/relation.d.ts +13 -13
- package/lib/store/relation.js +66 -66
- package/lib/store/selection.d.ts +7 -7
- package/lib/store/selection.js +235 -235
- package/lib/triggers/index.d.ts +6 -6
- package/lib/triggers/index.js +11 -11
- package/lib/triggers/modi.d.ts +5 -5
- package/lib/triggers/modi.js +72 -72
- package/lib/types/Action.d.ts +18 -18
- package/lib/types/Action.js +2 -2
- package/lib/types/AppLoader.d.ts +11 -11
- package/lib/types/AppLoader.js +10 -10
- package/lib/types/Aspect.d.ts +12 -12
- package/lib/types/Aspect.js +4 -4
- package/lib/types/Auth.d.ts +66 -66
- package/lib/types/Auth.js +2 -2
- package/lib/types/Connector.d.ts +26 -26
- package/lib/types/Connector.js +9 -9
- package/lib/types/Context.d.ts +7 -7
- package/lib/types/Context.js +3 -3
- package/lib/types/DataType.d.ts +18 -18
- package/lib/types/DataType.js +5 -5
- package/lib/types/Demand.d.ts +77 -77
- package/lib/types/Demand.js +9 -9
- package/lib/types/Endpoint.d.ts +11 -10
- package/lib/types/Endpoint.js +3 -3
- package/lib/types/Entity.d.ts +183 -176
- package/lib/types/Entity.js +14 -14
- package/lib/types/Exception.d.ts +98 -88
- package/lib/types/Exception.js +283 -267
- package/lib/types/Expression.d.ts +163 -163
- package/lib/types/Expression.js +427 -427
- package/lib/types/Geo.d.ts +18 -18
- package/lib/types/Geo.js +2 -2
- package/lib/types/Locale.d.ts +24 -24
- package/lib/types/Locale.js +2 -2
- package/lib/types/Logger.d.ts +5 -5
- package/lib/types/Logger.js +3 -3
- package/lib/types/Polyfill.d.ts +23 -23
- package/lib/types/Polyfill.js +2 -2
- package/lib/types/Port.d.ts +17 -17
- package/lib/types/Port.js +2 -2
- package/lib/types/RowStore.d.ts +12 -12
- package/lib/types/RowStore.js +34 -34
- package/lib/types/Storage.d.ts +56 -56
- package/lib/types/Storage.js +2 -2
- package/lib/types/Timer.d.ts +13 -13
- package/lib/types/Timer.js +2 -2
- package/lib/types/Trigger.d.ts +100 -100
- package/lib/types/Trigger.js +39 -39
- package/lib/types/Txn.d.ts +2 -2
- package/lib/types/Txn.js +3 -3
- package/lib/types/Watcher.d.ts +19 -19
- package/lib/types/Watcher.js +4 -4
- package/lib/types/index.d.ts +21 -21
- package/lib/types/index.js +24 -24
- package/lib/types/schema/DataTypes.d.ts +32 -32
- package/lib/types/schema/DataTypes.js +3 -3
- package/lib/utils/SimpleConnector.d.ts +30 -30
- package/lib/utils/SimpleConnector.js +117 -117
- package/lib/utils/assert.d.ts +5 -5
- package/lib/utils/assert.js +9 -9
- package/lib/utils/concurrent.d.ts +15 -15
- package/lib/utils/concurrent.js +89 -89
- package/lib/utils/cron.d.ts +1 -1
- package/lib/utils/cron.js +18 -18
- package/lib/utils/date.d.ts +1 -1
- package/lib/utils/date.js +18 -18
- package/lib/utils/geo.d.ts +4 -4
- package/lib/utils/geo.js +24 -24
- package/lib/utils/lodash.d.ts +20 -20
- package/lib/utils/lodash.js +55 -55
- package/lib/utils/random/random.d.ts +1 -1
- package/lib/utils/random/random.js +24 -24
- package/lib/utils/random/random.mp.d.ts +1 -1
- package/lib/utils/random/random.mp.js +25 -25
- package/lib/utils/random/random.web.d.ts +1 -1
- package/lib/utils/random/random.web.js +17 -17
- package/lib/utils/string.d.ts +22 -22
- package/lib/utils/string.js +70 -70
- package/lib/utils/uuid.d.ts +12 -12
- package/lib/utils/uuid.js +194 -194
- package/lib/utils/validator.d.ts +23 -23
- package/lib/utils/validator.js +123 -123
- package/package.json +48 -48
- package/src/entities/Modi.ts +68 -68
- package/src/entities/ModiEntity.ts +24 -24
- package/src/entities/Oper.ts +28 -28
- package/src/entities/OperEntity.ts +24 -24
- package/src/entities/User.ts +19 -19
package/lib/types/Expression.js
CHANGED
|
@@ -1,427 +1,427 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getAttrRefInExpression = exports.execOp = exports.opMultipleParams = exports.isExpression = exports.isAggrExpression = exports.isStringExpression = exports.isMathExpression = exports.isCompareExpression = exports.isBoolExpression = exports.isLogicExpression = exports.isDateExpression = exports.isGeoExpression = void 0;
|
|
4
|
-
var tslib_1 = require("tslib");
|
|
5
|
-
var assert_1 = tslib_1.__importDefault(require("assert"));
|
|
6
|
-
var dayjs_1 = tslib_1.__importDefault(require("dayjs"));
|
|
7
|
-
var weekOfYear_1 = tslib_1.__importDefault(require("dayjs/plugin/weekOfYear"));
|
|
8
|
-
var dayOfYear_1 = tslib_1.__importDefault(require("dayjs/plugin/dayOfYear"));
|
|
9
|
-
var geo_1 = require("../utils/geo");
|
|
10
|
-
dayjs_1.default.extend(weekOfYear_1.default);
|
|
11
|
-
dayjs_1.default.extend(dayOfYear_1.default);
|
|
12
|
-
;
|
|
13
|
-
;
|
|
14
|
-
;
|
|
15
|
-
;
|
|
16
|
-
;
|
|
17
|
-
;
|
|
18
|
-
;
|
|
19
|
-
;
|
|
20
|
-
;
|
|
21
|
-
;
|
|
22
|
-
;
|
|
23
|
-
;
|
|
24
|
-
;
|
|
25
|
-
;
|
|
26
|
-
;
|
|
27
|
-
;
|
|
28
|
-
;
|
|
29
|
-
;
|
|
30
|
-
;
|
|
31
|
-
;
|
|
32
|
-
;
|
|
33
|
-
;
|
|
34
|
-
;
|
|
35
|
-
;
|
|
36
|
-
;
|
|
37
|
-
;
|
|
38
|
-
;
|
|
39
|
-
;
|
|
40
|
-
;
|
|
41
|
-
;
|
|
42
|
-
;
|
|
43
|
-
;
|
|
44
|
-
;
|
|
45
|
-
;
|
|
46
|
-
function isGeoExpression(expression) {
|
|
47
|
-
if (Object.keys(expression).length == 1) {
|
|
48
|
-
var op = Object.keys(expression)[0];
|
|
49
|
-
if (['$contains', '$distance'].includes(op)) {
|
|
50
|
-
return true;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
55
|
-
exports.isGeoExpression = isGeoExpression;
|
|
56
|
-
function isDateExpression(expression) {
|
|
57
|
-
if (Object.keys(expression).length == 1) {
|
|
58
|
-
var op = Object.keys(expression)[0];
|
|
59
|
-
if (['$year', '$month', '$weekday', '$weekOfYear', '$day', '$dayOfMonth',
|
|
60
|
-
'$dayOfWeek', '$dayOfYear', '$dateDiff', '$dateCeil', '$dateFloor'].includes(op)) {
|
|
61
|
-
return true;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
exports.isDateExpression = isDateExpression;
|
|
67
|
-
function isLogicExpression(expression) {
|
|
68
|
-
if (Object.keys(expression).length == 1) {
|
|
69
|
-
var op = Object.keys(expression)[0];
|
|
70
|
-
if (['$and', '$or', '$not'].includes(op)) {
|
|
71
|
-
return true;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
return false;
|
|
75
|
-
}
|
|
76
|
-
exports.isLogicExpression = isLogicExpression;
|
|
77
|
-
function isBoolExpression(expression) {
|
|
78
|
-
if (Object.keys(expression).length == 1) {
|
|
79
|
-
var op = Object.keys(expression)[0];
|
|
80
|
-
if (['$true', '$false'].includes(op)) {
|
|
81
|
-
return true;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
return false;
|
|
85
|
-
}
|
|
86
|
-
exports.isBoolExpression = isBoolExpression;
|
|
87
|
-
function isCompareExpression(expression) {
|
|
88
|
-
if (Object.keys(expression).length == 1) {
|
|
89
|
-
var op = Object.keys(expression)[0];
|
|
90
|
-
if (['$gt', '$lt', '$gte', '$lte', '$eq', '$ne',
|
|
91
|
-
'$startsWith', '$endsWith', '$includes'].includes(op)) {
|
|
92
|
-
return true;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
return false;
|
|
96
|
-
}
|
|
97
|
-
exports.isCompareExpression = isCompareExpression;
|
|
98
|
-
function isMathExpression(expression) {
|
|
99
|
-
if (Object.keys(expression).length == 1) {
|
|
100
|
-
var op = Object.keys(expression)[0];
|
|
101
|
-
if (['$add', '$subtract', '$multiply', '$divide', '$abs', '$pow',
|
|
102
|
-
'$round', '$floor', '$ceil'].includes(op)) {
|
|
103
|
-
return true;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
return false;
|
|
107
|
-
}
|
|
108
|
-
exports.isMathExpression = isMathExpression;
|
|
109
|
-
function isStringExpression(expression) {
|
|
110
|
-
if (Object.keys(expression).length == 1) {
|
|
111
|
-
var op = Object.keys(expression)[0];
|
|
112
|
-
if (['$concat'].includes(op)) {
|
|
113
|
-
return true;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
return false;
|
|
117
|
-
}
|
|
118
|
-
exports.isStringExpression = isStringExpression;
|
|
119
|
-
function isAggrExpression(expression) {
|
|
120
|
-
if (Object.keys(expression).length == 1) {
|
|
121
|
-
var op = Object.keys(expression)[0];
|
|
122
|
-
if (['$$max', '$$min', '$$sum', '$$avg', '$$count'].includes(op)) {
|
|
123
|
-
return true;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
return false;
|
|
127
|
-
}
|
|
128
|
-
exports.isAggrExpression = isAggrExpression;
|
|
129
|
-
function isExpression(expression) {
|
|
130
|
-
return typeof expression === 'object' && Object.keys(expression).length === 1 && Object.keys(expression)[0].startsWith('$');
|
|
131
|
-
}
|
|
132
|
-
exports.isExpression = isExpression;
|
|
133
|
-
function opMultipleParams(op) {
|
|
134
|
-
return !['$year', '$month', '$weekday', '$weekOfYear', '$day', '$dayOfMonth',
|
|
135
|
-
'$dayOfWeek', '$dayOfYear', '$not', '$true', '$false', '$abs',
|
|
136
|
-
'$round', '$floor', '$ceil', '$$max', '$$min', '$$sum', '$$avg', '$$count'].includes(op);
|
|
137
|
-
}
|
|
138
|
-
exports.opMultipleParams = opMultipleParams;
|
|
139
|
-
function execOp(op, params, obscure) {
|
|
140
|
-
var e_1, _a, e_2, _b;
|
|
141
|
-
if (obscure && (params === undefined || params.includes(undefined))) {
|
|
142
|
-
return true;
|
|
143
|
-
}
|
|
144
|
-
switch (op) {
|
|
145
|
-
case '$gt': {
|
|
146
|
-
return params[0] > params[1];
|
|
147
|
-
}
|
|
148
|
-
case '$lt': {
|
|
149
|
-
return params[0] < params[1];
|
|
150
|
-
}
|
|
151
|
-
case '$gte': {
|
|
152
|
-
return params[0] >= params[1];
|
|
153
|
-
}
|
|
154
|
-
case '$lte': {
|
|
155
|
-
return params[0] <= params[1];
|
|
156
|
-
}
|
|
157
|
-
case '$eq': {
|
|
158
|
-
return params[0] === params[1];
|
|
159
|
-
}
|
|
160
|
-
case '$ne': {
|
|
161
|
-
return params[0] !== params[1];
|
|
162
|
-
}
|
|
163
|
-
case '$startsWith': {
|
|
164
|
-
return params[0].startsWith(params[1]);
|
|
165
|
-
}
|
|
166
|
-
case '$endsWith': {
|
|
167
|
-
return params[0].endsWith(params[1]);
|
|
168
|
-
}
|
|
169
|
-
case '$includes': {
|
|
170
|
-
return params[0].includes(params[1]);
|
|
171
|
-
}
|
|
172
|
-
case '$add': {
|
|
173
|
-
if (typeof params[0] === 'number') {
|
|
174
|
-
var result_1 = 0;
|
|
175
|
-
params.forEach(function (ele) { return result_1 += ele; });
|
|
176
|
-
return result_1;
|
|
177
|
-
}
|
|
178
|
-
else {
|
|
179
|
-
var result_2 = '';
|
|
180
|
-
params.forEach(function (ele) { return result_2 += ele; });
|
|
181
|
-
return result_2;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
case '$subtract': {
|
|
185
|
-
return params[0] - params[1];
|
|
186
|
-
}
|
|
187
|
-
case '$multiply': {
|
|
188
|
-
var result_3 = 1;
|
|
189
|
-
params.forEach(function (ele) { return result_3 = result_3 * ele; });
|
|
190
|
-
return result_3;
|
|
191
|
-
}
|
|
192
|
-
case '$divide': {
|
|
193
|
-
return params[0] / params[1];
|
|
194
|
-
}
|
|
195
|
-
case '$abs': {
|
|
196
|
-
return Math.abs(params);
|
|
197
|
-
}
|
|
198
|
-
case '$round': {
|
|
199
|
-
return Math.round(params);
|
|
200
|
-
}
|
|
201
|
-
case '$ceil': {
|
|
202
|
-
return Math.ceil(params);
|
|
203
|
-
}
|
|
204
|
-
case '$floor': {
|
|
205
|
-
return Math.floor(params);
|
|
206
|
-
}
|
|
207
|
-
case '$round': {
|
|
208
|
-
return Math.round(params);
|
|
209
|
-
}
|
|
210
|
-
case '$pow': {
|
|
211
|
-
return Math.pow(params[0], params[1]);
|
|
212
|
-
}
|
|
213
|
-
case '$true': {
|
|
214
|
-
return !!params;
|
|
215
|
-
}
|
|
216
|
-
case '$false':
|
|
217
|
-
case '$not': {
|
|
218
|
-
return !params;
|
|
219
|
-
}
|
|
220
|
-
case '$and': {
|
|
221
|
-
try {
|
|
222
|
-
for (var params_1 = tslib_1.__values(params), params_1_1 = params_1.next(); !params_1_1.done; params_1_1 = params_1.next()) {
|
|
223
|
-
var p = params_1_1.value;
|
|
224
|
-
if (!p) {
|
|
225
|
-
return false;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
230
|
-
finally {
|
|
231
|
-
try {
|
|
232
|
-
if (params_1_1 && !params_1_1.done && (_a = params_1.return)) _a.call(params_1);
|
|
233
|
-
}
|
|
234
|
-
finally { if (e_1) throw e_1.error; }
|
|
235
|
-
}
|
|
236
|
-
return true;
|
|
237
|
-
}
|
|
238
|
-
case '$or': {
|
|
239
|
-
try {
|
|
240
|
-
for (var params_2 = tslib_1.__values(params), params_2_1 = params_2.next(); !params_2_1.done; params_2_1 = params_2.next()) {
|
|
241
|
-
var p = params_2_1.value;
|
|
242
|
-
if (!!p) {
|
|
243
|
-
return true;
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
248
|
-
finally {
|
|
249
|
-
try {
|
|
250
|
-
if (params_2_1 && !params_2_1.done && (_b = params_2.return)) _b.call(params_2);
|
|
251
|
-
}
|
|
252
|
-
finally { if (e_2) throw e_2.error; }
|
|
253
|
-
}
|
|
254
|
-
return false;
|
|
255
|
-
}
|
|
256
|
-
case '$year': {
|
|
257
|
-
var value = (0, dayjs_1.default)(params);
|
|
258
|
-
return value.year();
|
|
259
|
-
}
|
|
260
|
-
case '$month': {
|
|
261
|
-
var value = (0, dayjs_1.default)(params);
|
|
262
|
-
return value.month();
|
|
263
|
-
}
|
|
264
|
-
case '$weekday': {
|
|
265
|
-
var value = (0, dayjs_1.default)(params);
|
|
266
|
-
return value.day(); // 0~6
|
|
267
|
-
}
|
|
268
|
-
case '$weekOfYear': {
|
|
269
|
-
var value = (0, dayjs_1.default)(params);
|
|
270
|
-
return value.week();
|
|
271
|
-
}
|
|
272
|
-
case '$day':
|
|
273
|
-
case '$dayOfMonth': {
|
|
274
|
-
var value = (0, dayjs_1.default)(params);
|
|
275
|
-
return value.date();
|
|
276
|
-
}
|
|
277
|
-
case '$dayOfWeek': {
|
|
278
|
-
var value = (0, dayjs_1.default)(params);
|
|
279
|
-
return value.day(); // 0~6
|
|
280
|
-
}
|
|
281
|
-
case '$dayOfYear': {
|
|
282
|
-
var value = (0, dayjs_1.default)(params);
|
|
283
|
-
return value.dayOfYear(); // 0~6
|
|
284
|
-
}
|
|
285
|
-
case '$dateDiff': {
|
|
286
|
-
var value1 = (0, dayjs_1.default)(params[0]);
|
|
287
|
-
var value2 = (0, dayjs_1.default)(params[1]);
|
|
288
|
-
switch (params[2]) {
|
|
289
|
-
case 'y':
|
|
290
|
-
case 'M':
|
|
291
|
-
case 'd':
|
|
292
|
-
case 'h':
|
|
293
|
-
case 'm':
|
|
294
|
-
case 's': {
|
|
295
|
-
return value1.diff(value2, params[2]);
|
|
296
|
-
}
|
|
297
|
-
default: {
|
|
298
|
-
(0, assert_1.default)(false);
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
case '$dateCeil': {
|
|
303
|
-
var value = (0, dayjs_1.default)(params[0]);
|
|
304
|
-
switch (params[1]) {
|
|
305
|
-
case 'y': {
|
|
306
|
-
return value.startOf('year').millisecond();
|
|
307
|
-
}
|
|
308
|
-
case 'M': {
|
|
309
|
-
return value.startOf('month').millisecond();
|
|
310
|
-
}
|
|
311
|
-
case 'd': {
|
|
312
|
-
return value.startOf('day').millisecond();
|
|
313
|
-
}
|
|
314
|
-
case 'h': {
|
|
315
|
-
return value.startOf('hour').millisecond();
|
|
316
|
-
}
|
|
317
|
-
case 'm': {
|
|
318
|
-
return value.startOf('minute').millisecond();
|
|
319
|
-
}
|
|
320
|
-
case 's': {
|
|
321
|
-
return value.startOf('second').millisecond();
|
|
322
|
-
}
|
|
323
|
-
default: {
|
|
324
|
-
(0, assert_1.default)(false);
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
case '$dateFloor': {
|
|
329
|
-
var value = (0, dayjs_1.default)(params[0]);
|
|
330
|
-
switch (params[1]) {
|
|
331
|
-
case 'y': {
|
|
332
|
-
return value.endOf('year').millisecond();
|
|
333
|
-
}
|
|
334
|
-
case 'M': {
|
|
335
|
-
return value.endOf('month').millisecond();
|
|
336
|
-
}
|
|
337
|
-
case 'd': {
|
|
338
|
-
return value.endOf('day').millisecond();
|
|
339
|
-
}
|
|
340
|
-
case 'h': {
|
|
341
|
-
return value.endOf('hour').millisecond();
|
|
342
|
-
}
|
|
343
|
-
case 'm': {
|
|
344
|
-
return value.endOf('minute').millisecond();
|
|
345
|
-
}
|
|
346
|
-
case 's': {
|
|
347
|
-
return value.endOf('second').millisecond();
|
|
348
|
-
}
|
|
349
|
-
default: {
|
|
350
|
-
(0, assert_1.default)(false);
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
case '$distance': {
|
|
355
|
-
var _c = tslib_1.__read(params, 2), geo1 = _c[0], geo2 = _c[1];
|
|
356
|
-
var type1 = geo1.type, coordinate1 = geo1.coordinate;
|
|
357
|
-
var type2 = geo2.type, coordinate2 = geo2.coordinate;
|
|
358
|
-
if (type1 !== 'point' || type2 !== 'point') {
|
|
359
|
-
throw new Error('目前只支持point类型的距离运算');
|
|
360
|
-
}
|
|
361
|
-
return (0, geo_1.getDistanceBetweenPoints)(coordinate1[1], coordinate1[0], coordinate2[1], coordinate2[0]);
|
|
362
|
-
}
|
|
363
|
-
case '$contains': {
|
|
364
|
-
throw new Error('$contains类型未实现');
|
|
365
|
-
}
|
|
366
|
-
case '$concat': {
|
|
367
|
-
return params.join('');
|
|
368
|
-
}
|
|
369
|
-
default: {
|
|
370
|
-
(0, assert_1.default)(false, "\u4E0D\u80FD\u8BC6\u522B\u7684expression\u8FD0\u7B97\u7B26\uFF1A".concat(op));
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
exports.execOp = execOp;
|
|
375
|
-
/**
|
|
376
|
-
* 检查一个表达式,并分析其涉及到的属性
|
|
377
|
-
* @param expression
|
|
378
|
-
* @returns {
|
|
379
|
-
* '#current': [当前结点涉及的属性]
|
|
380
|
-
* 'node-1': [node-1结点上涉及的属性]
|
|
381
|
-
* }
|
|
382
|
-
*/
|
|
383
|
-
function getAttrRefInExpression(expression) {
|
|
384
|
-
var _a;
|
|
385
|
-
var result = (_a = {},
|
|
386
|
-
_a['#current'] = [],
|
|
387
|
-
_a);
|
|
388
|
-
var check = function (node) {
|
|
389
|
-
var _a, e_3, _b;
|
|
390
|
-
if (node['#attr']) {
|
|
391
|
-
result['#current'].push(node['#attr']);
|
|
392
|
-
}
|
|
393
|
-
else if (node['#refAttr']) {
|
|
394
|
-
if (result[node['#refId']]) {
|
|
395
|
-
result[node['#refId']].push(node['#refAttr']);
|
|
396
|
-
}
|
|
397
|
-
else {
|
|
398
|
-
Object.assign(result, (_a = {},
|
|
399
|
-
_a[node['#refId']] = [node['#refAttr']],
|
|
400
|
-
_a));
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
else if (node instanceof Array) {
|
|
404
|
-
try {
|
|
405
|
-
for (var node_1 = tslib_1.__values(node), node_1_1 = node_1.next(); !node_1_1.done; node_1_1 = node_1.next()) {
|
|
406
|
-
var subNode = node_1_1.value;
|
|
407
|
-
check(subNode);
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
411
|
-
finally {
|
|
412
|
-
try {
|
|
413
|
-
if (node_1_1 && !node_1_1.done && (_b = node_1.return)) _b.call(node_1);
|
|
414
|
-
}
|
|
415
|
-
finally { if (e_3) throw e_3.error; }
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
else if (typeof node === 'object') {
|
|
419
|
-
for (var attr in node) {
|
|
420
|
-
check(node[attr]);
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
};
|
|
424
|
-
check(expression);
|
|
425
|
-
return result;
|
|
426
|
-
}
|
|
427
|
-
exports.getAttrRefInExpression = getAttrRefInExpression;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAttrRefInExpression = exports.execOp = exports.opMultipleParams = exports.isExpression = exports.isAggrExpression = exports.isStringExpression = exports.isMathExpression = exports.isCompareExpression = exports.isBoolExpression = exports.isLogicExpression = exports.isDateExpression = exports.isGeoExpression = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var assert_1 = tslib_1.__importDefault(require("assert"));
|
|
6
|
+
var dayjs_1 = tslib_1.__importDefault(require("dayjs"));
|
|
7
|
+
var weekOfYear_1 = tslib_1.__importDefault(require("dayjs/plugin/weekOfYear"));
|
|
8
|
+
var dayOfYear_1 = tslib_1.__importDefault(require("dayjs/plugin/dayOfYear"));
|
|
9
|
+
var geo_1 = require("../utils/geo");
|
|
10
|
+
dayjs_1.default.extend(weekOfYear_1.default);
|
|
11
|
+
dayjs_1.default.extend(dayOfYear_1.default);
|
|
12
|
+
;
|
|
13
|
+
;
|
|
14
|
+
;
|
|
15
|
+
;
|
|
16
|
+
;
|
|
17
|
+
;
|
|
18
|
+
;
|
|
19
|
+
;
|
|
20
|
+
;
|
|
21
|
+
;
|
|
22
|
+
;
|
|
23
|
+
;
|
|
24
|
+
;
|
|
25
|
+
;
|
|
26
|
+
;
|
|
27
|
+
;
|
|
28
|
+
;
|
|
29
|
+
;
|
|
30
|
+
;
|
|
31
|
+
;
|
|
32
|
+
;
|
|
33
|
+
;
|
|
34
|
+
;
|
|
35
|
+
;
|
|
36
|
+
;
|
|
37
|
+
;
|
|
38
|
+
;
|
|
39
|
+
;
|
|
40
|
+
;
|
|
41
|
+
;
|
|
42
|
+
;
|
|
43
|
+
;
|
|
44
|
+
;
|
|
45
|
+
;
|
|
46
|
+
function isGeoExpression(expression) {
|
|
47
|
+
if (Object.keys(expression).length == 1) {
|
|
48
|
+
var op = Object.keys(expression)[0];
|
|
49
|
+
if (['$contains', '$distance'].includes(op)) {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
exports.isGeoExpression = isGeoExpression;
|
|
56
|
+
function isDateExpression(expression) {
|
|
57
|
+
if (Object.keys(expression).length == 1) {
|
|
58
|
+
var op = Object.keys(expression)[0];
|
|
59
|
+
if (['$year', '$month', '$weekday', '$weekOfYear', '$day', '$dayOfMonth',
|
|
60
|
+
'$dayOfWeek', '$dayOfYear', '$dateDiff', '$dateCeil', '$dateFloor'].includes(op)) {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
exports.isDateExpression = isDateExpression;
|
|
67
|
+
function isLogicExpression(expression) {
|
|
68
|
+
if (Object.keys(expression).length == 1) {
|
|
69
|
+
var op = Object.keys(expression)[0];
|
|
70
|
+
if (['$and', '$or', '$not'].includes(op)) {
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
exports.isLogicExpression = isLogicExpression;
|
|
77
|
+
function isBoolExpression(expression) {
|
|
78
|
+
if (Object.keys(expression).length == 1) {
|
|
79
|
+
var op = Object.keys(expression)[0];
|
|
80
|
+
if (['$true', '$false'].includes(op)) {
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
exports.isBoolExpression = isBoolExpression;
|
|
87
|
+
function isCompareExpression(expression) {
|
|
88
|
+
if (Object.keys(expression).length == 1) {
|
|
89
|
+
var op = Object.keys(expression)[0];
|
|
90
|
+
if (['$gt', '$lt', '$gte', '$lte', '$eq', '$ne',
|
|
91
|
+
'$startsWith', '$endsWith', '$includes'].includes(op)) {
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
exports.isCompareExpression = isCompareExpression;
|
|
98
|
+
function isMathExpression(expression) {
|
|
99
|
+
if (Object.keys(expression).length == 1) {
|
|
100
|
+
var op = Object.keys(expression)[0];
|
|
101
|
+
if (['$add', '$subtract', '$multiply', '$divide', '$abs', '$pow',
|
|
102
|
+
'$round', '$floor', '$ceil'].includes(op)) {
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
exports.isMathExpression = isMathExpression;
|
|
109
|
+
function isStringExpression(expression) {
|
|
110
|
+
if (Object.keys(expression).length == 1) {
|
|
111
|
+
var op = Object.keys(expression)[0];
|
|
112
|
+
if (['$concat'].includes(op)) {
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
exports.isStringExpression = isStringExpression;
|
|
119
|
+
function isAggrExpression(expression) {
|
|
120
|
+
if (Object.keys(expression).length == 1) {
|
|
121
|
+
var op = Object.keys(expression)[0];
|
|
122
|
+
if (['$$max', '$$min', '$$sum', '$$avg', '$$count'].includes(op)) {
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
exports.isAggrExpression = isAggrExpression;
|
|
129
|
+
function isExpression(expression) {
|
|
130
|
+
return typeof expression === 'object' && Object.keys(expression).length === 1 && Object.keys(expression)[0].startsWith('$');
|
|
131
|
+
}
|
|
132
|
+
exports.isExpression = isExpression;
|
|
133
|
+
function opMultipleParams(op) {
|
|
134
|
+
return !['$year', '$month', '$weekday', '$weekOfYear', '$day', '$dayOfMonth',
|
|
135
|
+
'$dayOfWeek', '$dayOfYear', '$not', '$true', '$false', '$abs',
|
|
136
|
+
'$round', '$floor', '$ceil', '$$max', '$$min', '$$sum', '$$avg', '$$count'].includes(op);
|
|
137
|
+
}
|
|
138
|
+
exports.opMultipleParams = opMultipleParams;
|
|
139
|
+
function execOp(op, params, obscure) {
|
|
140
|
+
var e_1, _a, e_2, _b;
|
|
141
|
+
if (obscure && (params === undefined || params.includes(undefined))) {
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
switch (op) {
|
|
145
|
+
case '$gt': {
|
|
146
|
+
return params[0] > params[1];
|
|
147
|
+
}
|
|
148
|
+
case '$lt': {
|
|
149
|
+
return params[0] < params[1];
|
|
150
|
+
}
|
|
151
|
+
case '$gte': {
|
|
152
|
+
return params[0] >= params[1];
|
|
153
|
+
}
|
|
154
|
+
case '$lte': {
|
|
155
|
+
return params[0] <= params[1];
|
|
156
|
+
}
|
|
157
|
+
case '$eq': {
|
|
158
|
+
return params[0] === params[1];
|
|
159
|
+
}
|
|
160
|
+
case '$ne': {
|
|
161
|
+
return params[0] !== params[1];
|
|
162
|
+
}
|
|
163
|
+
case '$startsWith': {
|
|
164
|
+
return params[0].startsWith(params[1]);
|
|
165
|
+
}
|
|
166
|
+
case '$endsWith': {
|
|
167
|
+
return params[0].endsWith(params[1]);
|
|
168
|
+
}
|
|
169
|
+
case '$includes': {
|
|
170
|
+
return params[0].includes(params[1]);
|
|
171
|
+
}
|
|
172
|
+
case '$add': {
|
|
173
|
+
if (typeof params[0] === 'number') {
|
|
174
|
+
var result_1 = 0;
|
|
175
|
+
params.forEach(function (ele) { return result_1 += ele; });
|
|
176
|
+
return result_1;
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
var result_2 = '';
|
|
180
|
+
params.forEach(function (ele) { return result_2 += ele; });
|
|
181
|
+
return result_2;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
case '$subtract': {
|
|
185
|
+
return params[0] - params[1];
|
|
186
|
+
}
|
|
187
|
+
case '$multiply': {
|
|
188
|
+
var result_3 = 1;
|
|
189
|
+
params.forEach(function (ele) { return result_3 = result_3 * ele; });
|
|
190
|
+
return result_3;
|
|
191
|
+
}
|
|
192
|
+
case '$divide': {
|
|
193
|
+
return params[0] / params[1];
|
|
194
|
+
}
|
|
195
|
+
case '$abs': {
|
|
196
|
+
return Math.abs(params);
|
|
197
|
+
}
|
|
198
|
+
case '$round': {
|
|
199
|
+
return Math.round(params);
|
|
200
|
+
}
|
|
201
|
+
case '$ceil': {
|
|
202
|
+
return Math.ceil(params);
|
|
203
|
+
}
|
|
204
|
+
case '$floor': {
|
|
205
|
+
return Math.floor(params);
|
|
206
|
+
}
|
|
207
|
+
case '$round': {
|
|
208
|
+
return Math.round(params);
|
|
209
|
+
}
|
|
210
|
+
case '$pow': {
|
|
211
|
+
return Math.pow(params[0], params[1]);
|
|
212
|
+
}
|
|
213
|
+
case '$true': {
|
|
214
|
+
return !!params;
|
|
215
|
+
}
|
|
216
|
+
case '$false':
|
|
217
|
+
case '$not': {
|
|
218
|
+
return !params;
|
|
219
|
+
}
|
|
220
|
+
case '$and': {
|
|
221
|
+
try {
|
|
222
|
+
for (var params_1 = tslib_1.__values(params), params_1_1 = params_1.next(); !params_1_1.done; params_1_1 = params_1.next()) {
|
|
223
|
+
var p = params_1_1.value;
|
|
224
|
+
if (!p) {
|
|
225
|
+
return false;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
230
|
+
finally {
|
|
231
|
+
try {
|
|
232
|
+
if (params_1_1 && !params_1_1.done && (_a = params_1.return)) _a.call(params_1);
|
|
233
|
+
}
|
|
234
|
+
finally { if (e_1) throw e_1.error; }
|
|
235
|
+
}
|
|
236
|
+
return true;
|
|
237
|
+
}
|
|
238
|
+
case '$or': {
|
|
239
|
+
try {
|
|
240
|
+
for (var params_2 = tslib_1.__values(params), params_2_1 = params_2.next(); !params_2_1.done; params_2_1 = params_2.next()) {
|
|
241
|
+
var p = params_2_1.value;
|
|
242
|
+
if (!!p) {
|
|
243
|
+
return true;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
248
|
+
finally {
|
|
249
|
+
try {
|
|
250
|
+
if (params_2_1 && !params_2_1.done && (_b = params_2.return)) _b.call(params_2);
|
|
251
|
+
}
|
|
252
|
+
finally { if (e_2) throw e_2.error; }
|
|
253
|
+
}
|
|
254
|
+
return false;
|
|
255
|
+
}
|
|
256
|
+
case '$year': {
|
|
257
|
+
var value = (0, dayjs_1.default)(params);
|
|
258
|
+
return value.year();
|
|
259
|
+
}
|
|
260
|
+
case '$month': {
|
|
261
|
+
var value = (0, dayjs_1.default)(params);
|
|
262
|
+
return value.month();
|
|
263
|
+
}
|
|
264
|
+
case '$weekday': {
|
|
265
|
+
var value = (0, dayjs_1.default)(params);
|
|
266
|
+
return value.day(); // 0~6
|
|
267
|
+
}
|
|
268
|
+
case '$weekOfYear': {
|
|
269
|
+
var value = (0, dayjs_1.default)(params);
|
|
270
|
+
return value.week();
|
|
271
|
+
}
|
|
272
|
+
case '$day':
|
|
273
|
+
case '$dayOfMonth': {
|
|
274
|
+
var value = (0, dayjs_1.default)(params);
|
|
275
|
+
return value.date();
|
|
276
|
+
}
|
|
277
|
+
case '$dayOfWeek': {
|
|
278
|
+
var value = (0, dayjs_1.default)(params);
|
|
279
|
+
return value.day(); // 0~6
|
|
280
|
+
}
|
|
281
|
+
case '$dayOfYear': {
|
|
282
|
+
var value = (0, dayjs_1.default)(params);
|
|
283
|
+
return value.dayOfYear(); // 0~6
|
|
284
|
+
}
|
|
285
|
+
case '$dateDiff': {
|
|
286
|
+
var value1 = (0, dayjs_1.default)(params[0]);
|
|
287
|
+
var value2 = (0, dayjs_1.default)(params[1]);
|
|
288
|
+
switch (params[2]) {
|
|
289
|
+
case 'y':
|
|
290
|
+
case 'M':
|
|
291
|
+
case 'd':
|
|
292
|
+
case 'h':
|
|
293
|
+
case 'm':
|
|
294
|
+
case 's': {
|
|
295
|
+
return value1.diff(value2, params[2]);
|
|
296
|
+
}
|
|
297
|
+
default: {
|
|
298
|
+
(0, assert_1.default)(false);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
case '$dateCeil': {
|
|
303
|
+
var value = (0, dayjs_1.default)(params[0]);
|
|
304
|
+
switch (params[1]) {
|
|
305
|
+
case 'y': {
|
|
306
|
+
return value.startOf('year').millisecond();
|
|
307
|
+
}
|
|
308
|
+
case 'M': {
|
|
309
|
+
return value.startOf('month').millisecond();
|
|
310
|
+
}
|
|
311
|
+
case 'd': {
|
|
312
|
+
return value.startOf('day').millisecond();
|
|
313
|
+
}
|
|
314
|
+
case 'h': {
|
|
315
|
+
return value.startOf('hour').millisecond();
|
|
316
|
+
}
|
|
317
|
+
case 'm': {
|
|
318
|
+
return value.startOf('minute').millisecond();
|
|
319
|
+
}
|
|
320
|
+
case 's': {
|
|
321
|
+
return value.startOf('second').millisecond();
|
|
322
|
+
}
|
|
323
|
+
default: {
|
|
324
|
+
(0, assert_1.default)(false);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
case '$dateFloor': {
|
|
329
|
+
var value = (0, dayjs_1.default)(params[0]);
|
|
330
|
+
switch (params[1]) {
|
|
331
|
+
case 'y': {
|
|
332
|
+
return value.endOf('year').millisecond();
|
|
333
|
+
}
|
|
334
|
+
case 'M': {
|
|
335
|
+
return value.endOf('month').millisecond();
|
|
336
|
+
}
|
|
337
|
+
case 'd': {
|
|
338
|
+
return value.endOf('day').millisecond();
|
|
339
|
+
}
|
|
340
|
+
case 'h': {
|
|
341
|
+
return value.endOf('hour').millisecond();
|
|
342
|
+
}
|
|
343
|
+
case 'm': {
|
|
344
|
+
return value.endOf('minute').millisecond();
|
|
345
|
+
}
|
|
346
|
+
case 's': {
|
|
347
|
+
return value.endOf('second').millisecond();
|
|
348
|
+
}
|
|
349
|
+
default: {
|
|
350
|
+
(0, assert_1.default)(false);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
case '$distance': {
|
|
355
|
+
var _c = tslib_1.__read(params, 2), geo1 = _c[0], geo2 = _c[1];
|
|
356
|
+
var type1 = geo1.type, coordinate1 = geo1.coordinate;
|
|
357
|
+
var type2 = geo2.type, coordinate2 = geo2.coordinate;
|
|
358
|
+
if (type1 !== 'point' || type2 !== 'point') {
|
|
359
|
+
throw new Error('目前只支持point类型的距离运算');
|
|
360
|
+
}
|
|
361
|
+
return (0, geo_1.getDistanceBetweenPoints)(coordinate1[1], coordinate1[0], coordinate2[1], coordinate2[0]);
|
|
362
|
+
}
|
|
363
|
+
case '$contains': {
|
|
364
|
+
throw new Error('$contains类型未实现');
|
|
365
|
+
}
|
|
366
|
+
case '$concat': {
|
|
367
|
+
return params.join('');
|
|
368
|
+
}
|
|
369
|
+
default: {
|
|
370
|
+
(0, assert_1.default)(false, "\u4E0D\u80FD\u8BC6\u522B\u7684expression\u8FD0\u7B97\u7B26\uFF1A".concat(op));
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
exports.execOp = execOp;
|
|
375
|
+
/**
|
|
376
|
+
* 检查一个表达式,并分析其涉及到的属性
|
|
377
|
+
* @param expression
|
|
378
|
+
* @returns {
|
|
379
|
+
* '#current': [当前结点涉及的属性]
|
|
380
|
+
* 'node-1': [node-1结点上涉及的属性]
|
|
381
|
+
* }
|
|
382
|
+
*/
|
|
383
|
+
function getAttrRefInExpression(expression) {
|
|
384
|
+
var _a;
|
|
385
|
+
var result = (_a = {},
|
|
386
|
+
_a['#current'] = [],
|
|
387
|
+
_a);
|
|
388
|
+
var check = function (node) {
|
|
389
|
+
var _a, e_3, _b;
|
|
390
|
+
if (node['#attr']) {
|
|
391
|
+
result['#current'].push(node['#attr']);
|
|
392
|
+
}
|
|
393
|
+
else if (node['#refAttr']) {
|
|
394
|
+
if (result[node['#refId']]) {
|
|
395
|
+
result[node['#refId']].push(node['#refAttr']);
|
|
396
|
+
}
|
|
397
|
+
else {
|
|
398
|
+
Object.assign(result, (_a = {},
|
|
399
|
+
_a[node['#refId']] = [node['#refAttr']],
|
|
400
|
+
_a));
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
else if (node instanceof Array) {
|
|
404
|
+
try {
|
|
405
|
+
for (var node_1 = tslib_1.__values(node), node_1_1 = node_1.next(); !node_1_1.done; node_1_1 = node_1.next()) {
|
|
406
|
+
var subNode = node_1_1.value;
|
|
407
|
+
check(subNode);
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
411
|
+
finally {
|
|
412
|
+
try {
|
|
413
|
+
if (node_1_1 && !node_1_1.done && (_b = node_1.return)) _b.call(node_1);
|
|
414
|
+
}
|
|
415
|
+
finally { if (e_3) throw e_3.error; }
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
else if (typeof node === 'object') {
|
|
419
|
+
for (var attr in node) {
|
|
420
|
+
check(node[attr]);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
};
|
|
424
|
+
check(expression);
|
|
425
|
+
return result;
|
|
426
|
+
}
|
|
427
|
+
exports.getAttrRefInExpression = getAttrRefInExpression;
|