oak-domain 4.0.1 → 4.0.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 +25 -25
- package/lib/base-app-domain/ActionAuth/Schema.d.ts +186 -186
- package/lib/base-app-domain/ActionAuth/Storage.js +39 -39
- package/lib/base-app-domain/ActionDefDict.d.ts +8 -8
- package/lib/base-app-domain/ActionDefDict.js +9 -9
- package/lib/base-app-domain/EntityDict.d.ts +28 -28
- package/lib/base-app-domain/I18n/Schema.d.ts +129 -129
- package/lib/base-app-domain/I18n/Schema.js +2 -2
- package/lib/base-app-domain/I18n/Storage.d.ts +3 -3
- package/lib/base-app-domain/I18n/Storage.js +59 -59
- 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 +136 -136
- package/lib/base-app-domain/Modi/Storage.js +63 -63
- package/lib/base-app-domain/ModiEntity/Schema.d.ts +384 -384
- package/lib/base-app-domain/ModiEntity/Storage.js +30 -30
- package/lib/base-app-domain/Oper/Schema.d.ts +153 -153
- package/lib/base-app-domain/Oper/Storage.js +38 -38
- package/lib/base-app-domain/OperEntity/Schema.d.ts +373 -373
- package/lib/base-app-domain/OperEntity/Storage.js +30 -30
- package/lib/base-app-domain/Path/Schema.d.ts +149 -149
- package/lib/base-app-domain/Path/Schema.js +2 -2
- package/lib/base-app-domain/Path/Storage.d.ts +3 -3
- package/lib/base-app-domain/Path/Storage.js +54 -54
- package/lib/base-app-domain/Relation/Schema.d.ts +188 -188
- package/lib/base-app-domain/Relation/Storage.js +54 -54
- package/lib/base-app-domain/Relation.d.ts +2 -2
- package/lib/base-app-domain/Relation.js +4 -4
- package/lib/base-app-domain/RelationAuth/Schema.d.ts +214 -214
- package/lib/base-app-domain/RelationAuth/Storage.js +44 -44
- package/lib/base-app-domain/Storage.js +31 -31
- package/lib/base-app-domain/User/Action.d.ts +10 -10
- package/lib/base-app-domain/User/Action.js +12 -12
- package/lib/base-app-domain/User/Schema.d.ts +210 -210
- package/lib/base-app-domain/User/Storage.js +33 -33
- package/lib/base-app-domain/UserEntityClaim/Schema.d.ts +264 -264
- package/lib/base-app-domain/UserEntityClaim/Schema.js +2 -2
- package/lib/base-app-domain/UserEntityClaim/Storage.d.ts +3 -3
- package/lib/base-app-domain/UserEntityClaim/Storage.js +37 -37
- package/lib/base-app-domain/UserEntityGrant/Schema.d.ts +131 -131
- package/lib/base-app-domain/UserEntityGrant/Storage.js +25 -25
- package/lib/base-app-domain/UserRelation/Schema.d.ts +208 -208
- package/lib/base-app-domain/UserRelation/Storage.js +56 -56
- package/lib/base-app-domain/_SubQuery.d.ts +142 -142
- package/lib/base-app-domain/index.d.ts +4 -4
- package/lib/base-app-domain/index.js +7 -7
- package/lib/checkers/index.d.ts +5 -5
- package/lib/checkers/index.js +13 -13
- package/lib/compiler/entities.d.ts +2 -2
- package/lib/compiler/entities.js +7 -7
- package/lib/compiler/env.d.ts +13 -13
- package/lib/compiler/env.js +45 -45
- package/lib/compiler/localeBuilder.d.ts +27 -27
- package/lib/compiler/localeBuilder.js +37 -8
- package/lib/compiler/routerBuilder.d.ts +1 -0
- package/lib/compiler/routerBuilder.js +257 -0
- package/lib/compiler/schemalBuilder.d.ts +27 -27
- package/lib/compiler/schemalBuilder.js +3565 -3565
- package/lib/entities/ActionAuth.d.ts +10 -10
- package/lib/entities/ActionAuth.js +31 -31
- package/lib/entities/I18n.d.ts +9 -9
- package/lib/entities/I18n.js +36 -36
- package/lib/entities/Modi.js +49 -49
- package/lib/entities/ModiEntity.js +18 -18
- package/lib/entities/Oper.js +21 -21
- package/lib/entities/OperEntity.js +18 -18
- package/lib/entities/Path.d.ts +8 -8
- package/lib/entities/Path.js +35 -35
- package/lib/entities/Relation.d.ts +8 -8
- package/lib/entities/Relation.js +35 -35
- package/lib/entities/RelationAuth.d.ts +8 -8
- package/lib/entities/RelationAuth.js +34 -34
- package/lib/entities/User.js +31 -31
- package/lib/entities/UserEntityClaim.d.ts +13 -13
- package/lib/entities/UserEntityClaim.js +17 -17
- package/lib/entities/UserEntityGrant.d.ts +9 -9
- package/lib/entities/UserEntityGrant.js +15 -15
- package/lib/entities/UserRelation.d.ts +10 -10
- package/lib/entities/UserRelation.js +38 -38
- package/lib/index.d.ts +23 -23
- package/lib/index.js +37 -37
- package/lib/store/AsyncRowStore.d.ts +65 -65
- package/lib/store/AsyncRowStore.js +176 -176
- package/lib/store/CascadeStore.d.ts +4 -1
- package/lib/store/CascadeStore.js +9 -1
- package/lib/store/RelationAuth.d.ts +96 -96
- package/lib/store/RelationAuth.js +1336 -1336
- package/lib/store/SyncRowStore.d.ts +29 -29
- package/lib/store/SyncRowStore.js +50 -50
- package/lib/store/TriggerExecutor.d.ts +41 -41
- package/lib/store/TriggerExecutor.js +1 -1
- package/lib/store/actionAuth.d.ts +4 -4
- package/lib/store/actionAuth.js +25 -25
- package/lib/store/actionDef.d.ts +10 -10
- package/lib/store/actionDef.js +4 -4
- package/lib/store/checker.d.ts +26 -26
- package/lib/store/checker.js +487 -487
- package/lib/store/filter.d.ts +85 -85
- package/lib/store/filter.js +1652 -1652
- package/lib/store/modi.d.ts +13 -13
- package/lib/store/modi.js +254 -254
- package/lib/store/relation.d.ts +12 -12
- package/lib/store/relation.js +67 -67
- package/lib/timers/oper.d.ts +18 -18
- package/lib/timers/oper.js +57 -57
- package/lib/timers/vaccum.d.ts +20 -20
- package/lib/timers/vaccum.js +111 -111
- package/lib/triggers/index.d.ts +5 -5
- package/lib/triggers/index.js +8 -8
- package/lib/types/Action.d.ts +20 -20
- package/lib/types/AppLoader.d.ts +17 -17
- package/lib/types/AppLoader.js +10 -10
- package/lib/types/Auth.d.ts +70 -70
- package/lib/types/Cluster.d.ts +5 -5
- package/lib/types/Cluster.js +2 -2
- package/lib/types/Connector.d.ts +38 -38
- package/lib/types/Connector.js +2 -2
- package/lib/types/DataType.d.ts +25 -25
- package/lib/types/DataType.js +6 -6
- package/lib/types/Demand.d.ts +89 -89
- package/lib/types/Demand.js +10 -10
- package/lib/types/Endpoint.d.ts +11 -11
- package/lib/types/Entity.d.ts +209 -209
- package/lib/types/Entity.js +15 -15
- package/lib/types/EntityDesc.d.ts +9 -9
- package/lib/types/EntityDesc.js +2 -2
- package/lib/types/Environment.d.ts +90 -90
- package/lib/types/Environment.js +2 -2
- package/lib/types/Exception.d.ts +147 -147
- package/lib/types/Exception.js +406 -406
- package/lib/types/Expression.d.ts +163 -163
- package/lib/types/Expression.js +397 -397
- package/lib/types/Geo.d.ts +18 -18
- package/lib/types/Locale.d.ts +25 -25
- package/lib/types/Logger.d.ts +6 -6
- package/lib/types/Polyfill.d.ts +24 -24
- package/lib/types/Port.d.ts +18 -18
- package/lib/types/RowStore.d.ts +19 -19
- package/lib/types/RowStore.js +33 -33
- package/lib/types/Storage.d.ts +58 -58
- package/lib/types/Style.d.ts +11 -11
- package/lib/types/Timer.d.ts +20 -20
- package/lib/types/Trigger.d.ts +118 -118
- package/lib/types/Trigger.js +35 -35
- package/lib/types/Watcher.d.ts +19 -19
- package/lib/types/index.d.ts +26 -26
- package/lib/types/index.js +29 -29
- package/lib/types/schema/DataTypes.d.ts +34 -34
- package/lib/utils/SimpleConnector.d.ts +64 -64
- package/lib/utils/SimpleConnector.js +1 -1
- package/lib/utils/assert.d.ts +1 -0
- package/lib/utils/assert.js +9 -9
- package/lib/utils/concurrent.d.ts +15 -15
- package/lib/utils/concurrent.js +63 -63
- package/lib/utils/date.js +18 -18
- package/lib/utils/domain.d.ts +1 -1
- package/lib/utils/domain.js +11 -11
- package/lib/utils/geo.js +24 -24
- package/lib/utils/lodash.d.ts +24 -24
- package/lib/utils/lodash.js +46 -46
- package/lib/utils/mask.js +34 -34
- package/lib/utils/money.d.ts +6 -6
- package/lib/utils/money.js +51 -51
- package/lib/utils/projection.d.ts +4 -4
- package/lib/utils/projection.js +15 -15
- package/lib/utils/random/random.js +19 -19
- package/lib/utils/random/random.mp.js +14 -14
- package/lib/utils/random/random.native.d.ts +1 -1
- package/lib/utils/random/random.native.js +14 -14
- package/lib/utils/random/random.web.js +11 -11
- package/lib/utils/string.d.ts +28 -28
- package/lib/utils/string.js +69 -69
- package/lib/utils/url/index.d.ts +7 -7
- package/lib/utils/url/index.js +8 -8
- package/lib/utils/url/index.mp.d.ts +3 -3
- package/lib/utils/url/index.mp.js +8 -8
- package/lib/utils/url/index.native.d.ts +12 -12
- package/lib/utils/url/index.native.js +7 -7
- package/lib/utils/url/index.web.d.ts +12 -12
- package/lib/utils/url/index.web.js +7 -7
- package/lib/utils/url/whatwg-url/index.d.ts +3 -3
- package/lib/utils/url/whatwg-url/index.js +16 -16
- package/lib/utils/url/whatwg-url/lib/URL-impl.d.ts +20 -20
- package/lib/utils/url/whatwg-url/lib/URL-impl.js +175 -175
- package/lib/utils/url/whatwg-url/lib/URL.d.ts +1 -1
- package/lib/utils/url/whatwg-url/lib/URL.js +298 -298
- package/lib/utils/url/whatwg-url/lib/URLSearchParams-impl.d.ts +19 -19
- package/lib/utils/url/whatwg-url/lib/URLSearchParams-impl.js +126 -126
- package/lib/utils/url/whatwg-url/lib/URLSearchParams.d.ts +1 -1
- package/lib/utils/url/whatwg-url/lib/URLSearchParams.js +426 -426
- package/lib/utils/url/whatwg-url/lib/infra.d.ts +12 -12
- package/lib/utils/url/whatwg-url/lib/infra.js +25 -25
- package/lib/utils/url/whatwg-url/lib/url-state-machine.d.ts +24 -24
- package/lib/utils/url/whatwg-url/lib/url-state-machine.js +1238 -1238
- package/lib/utils/url/whatwg-url/lib/urlencoded.d.ts +15 -15
- package/lib/utils/url/whatwg-url/lib/urlencoded.js +162 -162
- package/lib/utils/url/whatwg-url/lib/utils.d.ts +37 -37
- package/lib/utils/url/whatwg-url/lib/utils.js +101 -101
- package/lib/utils/uuid.d.ts +17 -17
- package/lib/utils/uuid.js +218 -218
- package/lib/utils/validator.d.ts +26 -26
- package/lib/utils/validator.js +131 -131
- package/lib/utils/version.js +21 -21
- package/package.json +2 -1
package/lib/types/Expression.js
CHANGED
|
@@ -1,397 +1,397 @@
|
|
|
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
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const assert_1 = tslib_1.__importDefault(require("assert"));
|
|
6
|
-
const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
|
|
7
|
-
const weekOfYear_1 = tslib_1.__importDefault(require("dayjs/plugin/weekOfYear"));
|
|
8
|
-
const dayOfYear_1 = tslib_1.__importDefault(require("dayjs/plugin/dayOfYear"));
|
|
9
|
-
const 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
|
-
const 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
|
-
const 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
|
-
const 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
|
-
const 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
|
-
const 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
|
-
const op = Object.keys(expression)[0];
|
|
101
|
-
if (['$add', '$subtract', '$multiply', '$divide', '$abs', '$pow',
|
|
102
|
-
'$round', '$floor', '$ceil', '$mod'].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
|
-
const 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
|
-
const 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
|
-
if (obscure && (params === undefined || params.includes(undefined))) {
|
|
141
|
-
return true;
|
|
142
|
-
}
|
|
143
|
-
switch (op) {
|
|
144
|
-
case '$gt': {
|
|
145
|
-
return params[0] > params[1];
|
|
146
|
-
}
|
|
147
|
-
case '$lt': {
|
|
148
|
-
return params[0] < params[1];
|
|
149
|
-
}
|
|
150
|
-
case '$gte': {
|
|
151
|
-
return params[0] >= params[1];
|
|
152
|
-
}
|
|
153
|
-
case '$lte': {
|
|
154
|
-
return params[0] <= params[1];
|
|
155
|
-
}
|
|
156
|
-
case '$eq': {
|
|
157
|
-
return params[0] === params[1];
|
|
158
|
-
}
|
|
159
|
-
case '$ne': {
|
|
160
|
-
return params[0] !== params[1];
|
|
161
|
-
}
|
|
162
|
-
case '$startsWith': {
|
|
163
|
-
return params[0].startsWith(params[1]);
|
|
164
|
-
}
|
|
165
|
-
case '$endsWith': {
|
|
166
|
-
return params[0].endsWith(params[1]);
|
|
167
|
-
}
|
|
168
|
-
case '$includes': {
|
|
169
|
-
return params[0].includes(params[1]);
|
|
170
|
-
}
|
|
171
|
-
case '$add': {
|
|
172
|
-
if (typeof params[0] === 'number') {
|
|
173
|
-
let result = 0;
|
|
174
|
-
params.forEach((ele) => result += ele);
|
|
175
|
-
return result;
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
let result = '';
|
|
179
|
-
params.forEach((ele) => result += ele);
|
|
180
|
-
return result;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
case '$subtract': {
|
|
184
|
-
return params[0] - params[1];
|
|
185
|
-
}
|
|
186
|
-
case '$multiply': {
|
|
187
|
-
let result = 1;
|
|
188
|
-
params.forEach((ele) => result = result * ele);
|
|
189
|
-
return result;
|
|
190
|
-
}
|
|
191
|
-
case '$divide': {
|
|
192
|
-
return params[0] / params[1];
|
|
193
|
-
}
|
|
194
|
-
case '$abs': {
|
|
195
|
-
return Math.abs(params);
|
|
196
|
-
}
|
|
197
|
-
case '$round': {
|
|
198
|
-
return Math.round(params);
|
|
199
|
-
}
|
|
200
|
-
case '$ceil': {
|
|
201
|
-
return Math.ceil(params);
|
|
202
|
-
}
|
|
203
|
-
case '$mod': {
|
|
204
|
-
return params[0] % params[1];
|
|
205
|
-
}
|
|
206
|
-
case '$floor': {
|
|
207
|
-
return Math.floor(params);
|
|
208
|
-
}
|
|
209
|
-
case '$round': {
|
|
210
|
-
return Math.round(params);
|
|
211
|
-
}
|
|
212
|
-
case '$pow': {
|
|
213
|
-
return Math.pow(params[0], params[1]);
|
|
214
|
-
}
|
|
215
|
-
case '$true': {
|
|
216
|
-
return !!params;
|
|
217
|
-
}
|
|
218
|
-
case '$false':
|
|
219
|
-
case '$not': {
|
|
220
|
-
return !params;
|
|
221
|
-
}
|
|
222
|
-
case '$and': {
|
|
223
|
-
for (const p of params) {
|
|
224
|
-
if (!p) {
|
|
225
|
-
return false;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
return true;
|
|
229
|
-
}
|
|
230
|
-
case '$or': {
|
|
231
|
-
for (const p of params) {
|
|
232
|
-
if (!!p) {
|
|
233
|
-
return true;
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
return false;
|
|
237
|
-
}
|
|
238
|
-
case '$year': {
|
|
239
|
-
const value = (0, dayjs_1.default)(params);
|
|
240
|
-
return value.year();
|
|
241
|
-
}
|
|
242
|
-
case '$month': {
|
|
243
|
-
const value = (0, dayjs_1.default)(params);
|
|
244
|
-
return value.month();
|
|
245
|
-
}
|
|
246
|
-
case '$weekday': {
|
|
247
|
-
const value = (0, dayjs_1.default)(params);
|
|
248
|
-
return value.day(); // 0~6
|
|
249
|
-
}
|
|
250
|
-
case '$weekOfYear': {
|
|
251
|
-
const value = (0, dayjs_1.default)(params);
|
|
252
|
-
return value.week();
|
|
253
|
-
}
|
|
254
|
-
case '$day':
|
|
255
|
-
case '$dayOfMonth': {
|
|
256
|
-
const value = (0, dayjs_1.default)(params);
|
|
257
|
-
return value.date();
|
|
258
|
-
}
|
|
259
|
-
case '$dayOfWeek': {
|
|
260
|
-
const value = (0, dayjs_1.default)(params);
|
|
261
|
-
return value.day(); // 0~6
|
|
262
|
-
}
|
|
263
|
-
case '$dayOfYear': {
|
|
264
|
-
const value = (0, dayjs_1.default)(params);
|
|
265
|
-
return value.dayOfYear(); // 0~6
|
|
266
|
-
}
|
|
267
|
-
case '$dateDiff': {
|
|
268
|
-
const value1 = (0, dayjs_1.default)(params[0]);
|
|
269
|
-
const value2 = (0, dayjs_1.default)(params[1]);
|
|
270
|
-
switch (params[2]) {
|
|
271
|
-
case 'y':
|
|
272
|
-
case 'M':
|
|
273
|
-
case 'd':
|
|
274
|
-
case 'h':
|
|
275
|
-
case 'm':
|
|
276
|
-
case 's': {
|
|
277
|
-
return value1.diff(value2, params[2]);
|
|
278
|
-
}
|
|
279
|
-
default: {
|
|
280
|
-
(0, assert_1.default)(false);
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
case '$dateCeil': {
|
|
285
|
-
const value = (0, dayjs_1.default)(params[0]);
|
|
286
|
-
switch (params[1]) {
|
|
287
|
-
case 'y': {
|
|
288
|
-
return value.startOf('year').millisecond();
|
|
289
|
-
}
|
|
290
|
-
case 'M': {
|
|
291
|
-
return value.startOf('month').millisecond();
|
|
292
|
-
}
|
|
293
|
-
case 'd': {
|
|
294
|
-
return value.startOf('day').millisecond();
|
|
295
|
-
}
|
|
296
|
-
case 'h': {
|
|
297
|
-
return value.startOf('hour').millisecond();
|
|
298
|
-
}
|
|
299
|
-
case 'm': {
|
|
300
|
-
return value.startOf('minute').millisecond();
|
|
301
|
-
}
|
|
302
|
-
case 's': {
|
|
303
|
-
return value.startOf('second').millisecond();
|
|
304
|
-
}
|
|
305
|
-
default: {
|
|
306
|
-
(0, assert_1.default)(false);
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
case '$dateFloor': {
|
|
311
|
-
const value = (0, dayjs_1.default)(params[0]);
|
|
312
|
-
switch (params[1]) {
|
|
313
|
-
case 'y': {
|
|
314
|
-
return value.endOf('year').millisecond();
|
|
315
|
-
}
|
|
316
|
-
case 'M': {
|
|
317
|
-
return value.endOf('month').millisecond();
|
|
318
|
-
}
|
|
319
|
-
case 'd': {
|
|
320
|
-
return value.endOf('day').millisecond();
|
|
321
|
-
}
|
|
322
|
-
case 'h': {
|
|
323
|
-
return value.endOf('hour').millisecond();
|
|
324
|
-
}
|
|
325
|
-
case 'm': {
|
|
326
|
-
return value.endOf('minute').millisecond();
|
|
327
|
-
}
|
|
328
|
-
case 's': {
|
|
329
|
-
return value.endOf('second').millisecond();
|
|
330
|
-
}
|
|
331
|
-
default: {
|
|
332
|
-
(0, assert_1.default)(false);
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
case '$distance': {
|
|
337
|
-
const [geo1, geo2] = params;
|
|
338
|
-
const { type: type1, coordinate: coordinate1 } = geo1;
|
|
339
|
-
const { type: type2, coordinate: coordinate2 } = geo2;
|
|
340
|
-
if (type1 !== 'point' || type2 !== 'point') {
|
|
341
|
-
throw new Error('目前只支持point类型的距离运算');
|
|
342
|
-
}
|
|
343
|
-
return (0, geo_1.getDistanceBetweenPoints)(coordinate1[1], coordinate1[0], coordinate2[1], coordinate2[0]);
|
|
344
|
-
}
|
|
345
|
-
case '$contains': {
|
|
346
|
-
throw new Error('$contains类型未实现');
|
|
347
|
-
}
|
|
348
|
-
case '$concat': {
|
|
349
|
-
return params.join('');
|
|
350
|
-
}
|
|
351
|
-
default: {
|
|
352
|
-
(0, assert_1.default)(false, `不能识别的expression运算符:${op}`);
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
exports.execOp = execOp;
|
|
357
|
-
/**
|
|
358
|
-
* 检查一个表达式,并分析其涉及到的属性
|
|
359
|
-
* @param expression
|
|
360
|
-
* @returns {
|
|
361
|
-
* '#current': [当前结点涉及的属性]
|
|
362
|
-
* 'node-1': [node-1结点上涉及的属性]
|
|
363
|
-
* }
|
|
364
|
-
*/
|
|
365
|
-
function getAttrRefInExpression(expression) {
|
|
366
|
-
const result = {
|
|
367
|
-
['#current']: [],
|
|
368
|
-
};
|
|
369
|
-
const check = (node) => {
|
|
370
|
-
if (node['#attr']) {
|
|
371
|
-
result['#current'].push(node['#attr']);
|
|
372
|
-
}
|
|
373
|
-
else if (node['#refAttr']) {
|
|
374
|
-
if (result[node['#refId']]) {
|
|
375
|
-
result[node['#refId']].push(node['#refAttr']);
|
|
376
|
-
}
|
|
377
|
-
else {
|
|
378
|
-
Object.assign(result, {
|
|
379
|
-
[node['#refId']]: [node['#refAttr']],
|
|
380
|
-
});
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
else if (node instanceof Array) {
|
|
384
|
-
for (const subNode of node) {
|
|
385
|
-
check(subNode);
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
else if (typeof node === 'object') {
|
|
389
|
-
for (const attr in node) {
|
|
390
|
-
check(node[attr]);
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
};
|
|
394
|
-
check(expression);
|
|
395
|
-
return result;
|
|
396
|
-
}
|
|
397
|
-
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
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const assert_1 = tslib_1.__importDefault(require("assert"));
|
|
6
|
+
const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
|
|
7
|
+
const weekOfYear_1 = tslib_1.__importDefault(require("dayjs/plugin/weekOfYear"));
|
|
8
|
+
const dayOfYear_1 = tslib_1.__importDefault(require("dayjs/plugin/dayOfYear"));
|
|
9
|
+
const 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
|
+
const 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
|
+
const 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
|
+
const 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
|
+
const 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
|
+
const 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
|
+
const op = Object.keys(expression)[0];
|
|
101
|
+
if (['$add', '$subtract', '$multiply', '$divide', '$abs', '$pow',
|
|
102
|
+
'$round', '$floor', '$ceil', '$mod'].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
|
+
const 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
|
+
const 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
|
+
if (obscure && (params === undefined || params.includes(undefined))) {
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
switch (op) {
|
|
144
|
+
case '$gt': {
|
|
145
|
+
return params[0] > params[1];
|
|
146
|
+
}
|
|
147
|
+
case '$lt': {
|
|
148
|
+
return params[0] < params[1];
|
|
149
|
+
}
|
|
150
|
+
case '$gte': {
|
|
151
|
+
return params[0] >= params[1];
|
|
152
|
+
}
|
|
153
|
+
case '$lte': {
|
|
154
|
+
return params[0] <= params[1];
|
|
155
|
+
}
|
|
156
|
+
case '$eq': {
|
|
157
|
+
return params[0] === params[1];
|
|
158
|
+
}
|
|
159
|
+
case '$ne': {
|
|
160
|
+
return params[0] !== params[1];
|
|
161
|
+
}
|
|
162
|
+
case '$startsWith': {
|
|
163
|
+
return params[0].startsWith(params[1]);
|
|
164
|
+
}
|
|
165
|
+
case '$endsWith': {
|
|
166
|
+
return params[0].endsWith(params[1]);
|
|
167
|
+
}
|
|
168
|
+
case '$includes': {
|
|
169
|
+
return params[0].includes(params[1]);
|
|
170
|
+
}
|
|
171
|
+
case '$add': {
|
|
172
|
+
if (typeof params[0] === 'number') {
|
|
173
|
+
let result = 0;
|
|
174
|
+
params.forEach((ele) => result += ele);
|
|
175
|
+
return result;
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
let result = '';
|
|
179
|
+
params.forEach((ele) => result += ele);
|
|
180
|
+
return result;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
case '$subtract': {
|
|
184
|
+
return params[0] - params[1];
|
|
185
|
+
}
|
|
186
|
+
case '$multiply': {
|
|
187
|
+
let result = 1;
|
|
188
|
+
params.forEach((ele) => result = result * ele);
|
|
189
|
+
return result;
|
|
190
|
+
}
|
|
191
|
+
case '$divide': {
|
|
192
|
+
return params[0] / params[1];
|
|
193
|
+
}
|
|
194
|
+
case '$abs': {
|
|
195
|
+
return Math.abs(params);
|
|
196
|
+
}
|
|
197
|
+
case '$round': {
|
|
198
|
+
return Math.round(params);
|
|
199
|
+
}
|
|
200
|
+
case '$ceil': {
|
|
201
|
+
return Math.ceil(params);
|
|
202
|
+
}
|
|
203
|
+
case '$mod': {
|
|
204
|
+
return params[0] % params[1];
|
|
205
|
+
}
|
|
206
|
+
case '$floor': {
|
|
207
|
+
return Math.floor(params);
|
|
208
|
+
}
|
|
209
|
+
case '$round': {
|
|
210
|
+
return Math.round(params);
|
|
211
|
+
}
|
|
212
|
+
case '$pow': {
|
|
213
|
+
return Math.pow(params[0], params[1]);
|
|
214
|
+
}
|
|
215
|
+
case '$true': {
|
|
216
|
+
return !!params;
|
|
217
|
+
}
|
|
218
|
+
case '$false':
|
|
219
|
+
case '$not': {
|
|
220
|
+
return !params;
|
|
221
|
+
}
|
|
222
|
+
case '$and': {
|
|
223
|
+
for (const p of params) {
|
|
224
|
+
if (!p) {
|
|
225
|
+
return false;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return true;
|
|
229
|
+
}
|
|
230
|
+
case '$or': {
|
|
231
|
+
for (const p of params) {
|
|
232
|
+
if (!!p) {
|
|
233
|
+
return true;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
case '$year': {
|
|
239
|
+
const value = (0, dayjs_1.default)(params);
|
|
240
|
+
return value.year();
|
|
241
|
+
}
|
|
242
|
+
case '$month': {
|
|
243
|
+
const value = (0, dayjs_1.default)(params);
|
|
244
|
+
return value.month();
|
|
245
|
+
}
|
|
246
|
+
case '$weekday': {
|
|
247
|
+
const value = (0, dayjs_1.default)(params);
|
|
248
|
+
return value.day(); // 0~6
|
|
249
|
+
}
|
|
250
|
+
case '$weekOfYear': {
|
|
251
|
+
const value = (0, dayjs_1.default)(params);
|
|
252
|
+
return value.week();
|
|
253
|
+
}
|
|
254
|
+
case '$day':
|
|
255
|
+
case '$dayOfMonth': {
|
|
256
|
+
const value = (0, dayjs_1.default)(params);
|
|
257
|
+
return value.date();
|
|
258
|
+
}
|
|
259
|
+
case '$dayOfWeek': {
|
|
260
|
+
const value = (0, dayjs_1.default)(params);
|
|
261
|
+
return value.day(); // 0~6
|
|
262
|
+
}
|
|
263
|
+
case '$dayOfYear': {
|
|
264
|
+
const value = (0, dayjs_1.default)(params);
|
|
265
|
+
return value.dayOfYear(); // 0~6
|
|
266
|
+
}
|
|
267
|
+
case '$dateDiff': {
|
|
268
|
+
const value1 = (0, dayjs_1.default)(params[0]);
|
|
269
|
+
const value2 = (0, dayjs_1.default)(params[1]);
|
|
270
|
+
switch (params[2]) {
|
|
271
|
+
case 'y':
|
|
272
|
+
case 'M':
|
|
273
|
+
case 'd':
|
|
274
|
+
case 'h':
|
|
275
|
+
case 'm':
|
|
276
|
+
case 's': {
|
|
277
|
+
return value1.diff(value2, params[2]);
|
|
278
|
+
}
|
|
279
|
+
default: {
|
|
280
|
+
(0, assert_1.default)(false);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
case '$dateCeil': {
|
|
285
|
+
const value = (0, dayjs_1.default)(params[0]);
|
|
286
|
+
switch (params[1]) {
|
|
287
|
+
case 'y': {
|
|
288
|
+
return value.startOf('year').millisecond();
|
|
289
|
+
}
|
|
290
|
+
case 'M': {
|
|
291
|
+
return value.startOf('month').millisecond();
|
|
292
|
+
}
|
|
293
|
+
case 'd': {
|
|
294
|
+
return value.startOf('day').millisecond();
|
|
295
|
+
}
|
|
296
|
+
case 'h': {
|
|
297
|
+
return value.startOf('hour').millisecond();
|
|
298
|
+
}
|
|
299
|
+
case 'm': {
|
|
300
|
+
return value.startOf('minute').millisecond();
|
|
301
|
+
}
|
|
302
|
+
case 's': {
|
|
303
|
+
return value.startOf('second').millisecond();
|
|
304
|
+
}
|
|
305
|
+
default: {
|
|
306
|
+
(0, assert_1.default)(false);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
case '$dateFloor': {
|
|
311
|
+
const value = (0, dayjs_1.default)(params[0]);
|
|
312
|
+
switch (params[1]) {
|
|
313
|
+
case 'y': {
|
|
314
|
+
return value.endOf('year').millisecond();
|
|
315
|
+
}
|
|
316
|
+
case 'M': {
|
|
317
|
+
return value.endOf('month').millisecond();
|
|
318
|
+
}
|
|
319
|
+
case 'd': {
|
|
320
|
+
return value.endOf('day').millisecond();
|
|
321
|
+
}
|
|
322
|
+
case 'h': {
|
|
323
|
+
return value.endOf('hour').millisecond();
|
|
324
|
+
}
|
|
325
|
+
case 'm': {
|
|
326
|
+
return value.endOf('minute').millisecond();
|
|
327
|
+
}
|
|
328
|
+
case 's': {
|
|
329
|
+
return value.endOf('second').millisecond();
|
|
330
|
+
}
|
|
331
|
+
default: {
|
|
332
|
+
(0, assert_1.default)(false);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
case '$distance': {
|
|
337
|
+
const [geo1, geo2] = params;
|
|
338
|
+
const { type: type1, coordinate: coordinate1 } = geo1;
|
|
339
|
+
const { type: type2, coordinate: coordinate2 } = geo2;
|
|
340
|
+
if (type1 !== 'point' || type2 !== 'point') {
|
|
341
|
+
throw new Error('目前只支持point类型的距离运算');
|
|
342
|
+
}
|
|
343
|
+
return (0, geo_1.getDistanceBetweenPoints)(coordinate1[1], coordinate1[0], coordinate2[1], coordinate2[0]);
|
|
344
|
+
}
|
|
345
|
+
case '$contains': {
|
|
346
|
+
throw new Error('$contains类型未实现');
|
|
347
|
+
}
|
|
348
|
+
case '$concat': {
|
|
349
|
+
return params.join('');
|
|
350
|
+
}
|
|
351
|
+
default: {
|
|
352
|
+
(0, assert_1.default)(false, `不能识别的expression运算符:${op}`);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
exports.execOp = execOp;
|
|
357
|
+
/**
|
|
358
|
+
* 检查一个表达式,并分析其涉及到的属性
|
|
359
|
+
* @param expression
|
|
360
|
+
* @returns {
|
|
361
|
+
* '#current': [当前结点涉及的属性]
|
|
362
|
+
* 'node-1': [node-1结点上涉及的属性]
|
|
363
|
+
* }
|
|
364
|
+
*/
|
|
365
|
+
function getAttrRefInExpression(expression) {
|
|
366
|
+
const result = {
|
|
367
|
+
['#current']: [],
|
|
368
|
+
};
|
|
369
|
+
const check = (node) => {
|
|
370
|
+
if (node['#attr']) {
|
|
371
|
+
result['#current'].push(node['#attr']);
|
|
372
|
+
}
|
|
373
|
+
else if (node['#refAttr']) {
|
|
374
|
+
if (result[node['#refId']]) {
|
|
375
|
+
result[node['#refId']].push(node['#refAttr']);
|
|
376
|
+
}
|
|
377
|
+
else {
|
|
378
|
+
Object.assign(result, {
|
|
379
|
+
[node['#refId']]: [node['#refAttr']],
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
else if (node instanceof Array) {
|
|
384
|
+
for (const subNode of node) {
|
|
385
|
+
check(subNode);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
else if (typeof node === 'object') {
|
|
389
|
+
for (const attr in node) {
|
|
390
|
+
check(node[attr]);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
};
|
|
394
|
+
check(expression);
|
|
395
|
+
return result;
|
|
396
|
+
}
|
|
397
|
+
exports.getAttrRefInExpression = getAttrRefInExpression;
|