oak-domain 3.0.4 → 4.0.1

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 (220) 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 +5 -5
  4. package/lib/actions/relation.js +25 -25
  5. package/lib/base-app-domain/ActionAuth/Schema.d.ts +186 -186
  6. package/lib/base-app-domain/ActionAuth/Storage.js +39 -39
  7. package/lib/base-app-domain/ActionDefDict.d.ts +8 -8
  8. package/lib/base-app-domain/ActionDefDict.js +9 -9
  9. package/lib/base-app-domain/EntityDict.d.ts +28 -28
  10. package/lib/base-app-domain/I18n/Schema.d.ts +129 -129
  11. package/lib/base-app-domain/I18n/Schema.js +2 -2
  12. package/lib/base-app-domain/I18n/Storage.d.ts +3 -3
  13. package/lib/base-app-domain/I18n/Storage.js +59 -59
  14. package/lib/base-app-domain/Modi/Action.d.ts +10 -10
  15. package/lib/base-app-domain/Modi/Action.js +14 -14
  16. package/lib/base-app-domain/Modi/Schema.d.ts +136 -136
  17. package/lib/base-app-domain/Modi/Storage.js +63 -63
  18. package/lib/base-app-domain/ModiEntity/Schema.d.ts +384 -384
  19. package/lib/base-app-domain/ModiEntity/Storage.js +30 -30
  20. package/lib/base-app-domain/Oper/Schema.d.ts +153 -153
  21. package/lib/base-app-domain/Oper/Storage.js +38 -38
  22. package/lib/base-app-domain/OperEntity/Schema.d.ts +373 -373
  23. package/lib/base-app-domain/OperEntity/Storage.js +30 -30
  24. package/lib/base-app-domain/Path/Schema.d.ts +149 -149
  25. package/lib/base-app-domain/Path/Schema.js +2 -2
  26. package/lib/base-app-domain/Path/Storage.d.ts +3 -3
  27. package/lib/base-app-domain/Path/Storage.js +54 -54
  28. package/lib/base-app-domain/Relation/Schema.d.ts +188 -188
  29. package/lib/base-app-domain/Relation/Storage.js +54 -54
  30. package/lib/base-app-domain/Relation.d.ts +2 -2
  31. package/lib/base-app-domain/Relation.js +4 -4
  32. package/lib/base-app-domain/RelationAuth/Schema.d.ts +214 -214
  33. package/lib/base-app-domain/RelationAuth/Storage.js +44 -44
  34. package/lib/base-app-domain/Storage.js +31 -31
  35. package/lib/base-app-domain/User/Action.d.ts +10 -10
  36. package/lib/base-app-domain/User/Action.js +12 -12
  37. package/lib/base-app-domain/User/Schema.d.ts +210 -210
  38. package/lib/base-app-domain/User/Storage.js +33 -33
  39. package/lib/base-app-domain/UserEntityClaim/Schema.d.ts +264 -264
  40. package/lib/base-app-domain/UserEntityClaim/Schema.js +2 -2
  41. package/lib/base-app-domain/UserEntityClaim/Storage.d.ts +3 -3
  42. package/lib/base-app-domain/UserEntityClaim/Storage.js +37 -37
  43. package/lib/base-app-domain/UserEntityGrant/Action.d.ts +5 -5
  44. package/lib/base-app-domain/UserEntityGrant/Action.js +5 -5
  45. package/lib/base-app-domain/UserEntityGrant/Schema.d.ts +131 -131
  46. package/lib/base-app-domain/UserEntityGrant/Storage.js +25 -25
  47. package/lib/base-app-domain/UserRelation/Schema.d.ts +208 -208
  48. package/lib/base-app-domain/UserRelation/Storage.js +56 -56
  49. package/lib/base-app-domain/_SubQuery.d.ts +142 -142
  50. package/lib/base-app-domain/index.d.ts +4 -4
  51. package/lib/base-app-domain/index.js +7 -7
  52. package/lib/checkers/index.d.ts +5 -5
  53. package/lib/checkers/index.js +13 -13
  54. package/lib/compiler/entities.d.ts +2 -0
  55. package/lib/compiler/entities.js +7 -0
  56. package/lib/compiler/env.d.ts +13 -14
  57. package/lib/compiler/env.js +45 -48
  58. package/lib/compiler/localeBuilder.d.ts +27 -22
  59. package/lib/compiler/localeBuilder.js +184 -173
  60. package/lib/compiler/schemalBuilder.d.ts +27 -27
  61. package/lib/compiler/schemalBuilder.js +3569 -3569
  62. package/lib/entities/ActionAuth.d.ts +10 -10
  63. package/lib/entities/ActionAuth.js +31 -31
  64. package/lib/entities/I18n.d.ts +9 -9
  65. package/lib/entities/I18n.js +36 -37
  66. package/lib/entities/Modi.js +49 -49
  67. package/lib/entities/ModiEntity.js +18 -18
  68. package/lib/entities/Oper.js +21 -21
  69. package/lib/entities/OperEntity.js +18 -18
  70. package/lib/entities/Path.d.ts +8 -8
  71. package/lib/entities/Path.js +35 -35
  72. package/lib/entities/Relation.d.ts +8 -8
  73. package/lib/entities/Relation.js +35 -35
  74. package/lib/entities/RelationAuth.d.ts +8 -8
  75. package/lib/entities/RelationAuth.js +34 -34
  76. package/lib/entities/User.js +31 -31
  77. package/lib/entities/UserEntityClaim.d.ts +13 -13
  78. package/lib/entities/UserEntityClaim.js +17 -17
  79. package/lib/entities/UserEntityGrant.d.ts +9 -9
  80. package/lib/entities/UserEntityGrant.js +15 -15
  81. package/lib/entities/UserRelation.d.ts +10 -10
  82. package/lib/entities/UserRelation.js +38 -38
  83. package/lib/index.d.ts +23 -23
  84. package/lib/index.js +37 -37
  85. package/lib/store/AsyncRowStore.d.ts +65 -59
  86. package/lib/store/AsyncRowStore.js +176 -116
  87. package/lib/store/CascadeStore.d.ts +106 -103
  88. package/lib/store/CascadeStore.js +1740 -1662
  89. package/lib/store/RelationAuth.d.ts +96 -96
  90. package/lib/store/RelationAuth.js +1336 -1334
  91. package/lib/store/SyncRowStore.d.ts +29 -29
  92. package/lib/store/SyncRowStore.js +50 -50
  93. package/lib/store/TriggerExecutor.d.ts +41 -38
  94. package/lib/store/TriggerExecutor.js +468 -459
  95. package/lib/store/actionAuth.d.ts +4 -4
  96. package/lib/store/actionAuth.js +25 -25
  97. package/lib/store/actionDef.d.ts +10 -10
  98. package/lib/store/actionDef.js +278 -278
  99. package/lib/store/checker.d.ts +26 -26
  100. package/lib/store/checker.js +487 -487
  101. package/lib/store/filter.d.ts +85 -122
  102. package/lib/store/filter.js +1652 -1623
  103. package/lib/store/modi.d.ts +13 -13
  104. package/lib/store/modi.js +254 -254
  105. package/lib/store/relation.d.ts +12 -12
  106. package/lib/store/relation.js +67 -67
  107. package/lib/timers/oper.d.ts +18 -18
  108. package/lib/timers/oper.js +57 -57
  109. package/lib/timers/vaccum.d.ts +20 -20
  110. package/lib/timers/vaccum.js +111 -111
  111. package/lib/triggers/index.d.ts +5 -5
  112. package/lib/triggers/index.js +8 -8
  113. package/lib/types/Action.d.ts +20 -20
  114. package/lib/types/AppLoader.d.ts +17 -17
  115. package/lib/types/AppLoader.js +10 -10
  116. package/lib/types/Auth.d.ts +70 -70
  117. package/lib/types/Cluster.d.ts +5 -0
  118. package/lib/types/Cluster.js +2 -0
  119. package/lib/types/Connector.d.ts +38 -38
  120. package/lib/types/Connector.js +2 -2
  121. package/lib/types/DataType.d.ts +25 -25
  122. package/lib/types/DataType.js +6 -6
  123. package/lib/types/Demand.d.ts +89 -88
  124. package/lib/types/Demand.js +10 -10
  125. package/lib/types/Endpoint.d.ts +11 -11
  126. package/lib/types/Entity.d.ts +209 -202
  127. package/lib/types/Entity.js +15 -15
  128. package/lib/types/EntityDesc.d.ts +9 -9
  129. package/lib/types/EntityDesc.js +2 -2
  130. package/lib/types/Environment.d.ts +90 -57
  131. package/lib/types/Environment.js +2 -2
  132. package/lib/types/Exception.d.ts +147 -147
  133. package/lib/types/Exception.js +406 -406
  134. package/lib/types/Expression.d.ts +163 -163
  135. package/lib/types/Expression.js +397 -394
  136. package/lib/types/Geo.d.ts +18 -18
  137. package/lib/types/Locale.d.ts +25 -25
  138. package/lib/types/Logger.d.ts +6 -6
  139. package/lib/types/Polyfill.d.ts +24 -24
  140. package/lib/types/Port.d.ts +18 -18
  141. package/lib/types/RowStore.d.ts +19 -18
  142. package/lib/types/RowStore.js +33 -33
  143. package/lib/types/Storage.d.ts +58 -58
  144. package/lib/types/Style.d.ts +11 -11
  145. package/lib/types/Timer.d.ts +20 -14
  146. package/lib/types/Trigger.d.ts +118 -124
  147. package/lib/types/Trigger.js +35 -58
  148. package/lib/types/Watcher.d.ts +19 -19
  149. package/lib/types/index.d.ts +26 -25
  150. package/lib/types/index.js +29 -28
  151. package/lib/types/schema/DataTypes.d.ts +34 -34
  152. package/lib/utils/SimpleConnector.d.ts +64 -64
  153. package/lib/utils/SimpleConnector.js +206 -206
  154. package/lib/utils/assert.d.ts +5 -5
  155. package/lib/utils/assert.js +9 -9
  156. package/lib/utils/concurrent.d.ts +15 -15
  157. package/lib/utils/concurrent.js +63 -63
  158. package/lib/utils/date.js +18 -18
  159. package/lib/utils/{url.d.ts → domain.d.ts} +1 -1
  160. package/lib/utils/{url.js → domain.js} +11 -13
  161. package/lib/utils/geo.js +24 -24
  162. package/lib/utils/lodash.d.ts +24 -22
  163. package/lib/utils/lodash.js +46 -42
  164. package/lib/utils/mask.js +34 -34
  165. package/lib/utils/money.d.ts +6 -6
  166. package/lib/utils/money.js +51 -51
  167. package/lib/utils/projection.d.ts +4 -4
  168. package/lib/utils/projection.js +15 -15
  169. package/lib/utils/random/random.js +19 -19
  170. package/lib/utils/random/random.mp.js +14 -14
  171. package/lib/utils/random/random.native.d.ts +1 -0
  172. package/lib/utils/random/random.native.js +14 -0
  173. package/lib/utils/random/random.web.js +11 -11
  174. package/lib/utils/string.d.ts +28 -28
  175. package/lib/utils/string.js +69 -69
  176. package/lib/utils/url/index.d.ts +7 -0
  177. package/lib/utils/url/index.js +8 -0
  178. package/lib/utils/url/index.mp.d.ts +3 -0
  179. package/lib/utils/url/index.mp.js +8 -0
  180. package/lib/utils/url/index.native.d.ts +12 -0
  181. package/lib/utils/url/index.native.js +7 -0
  182. package/lib/utils/url/index.web.d.ts +12 -0
  183. package/lib/utils/url/index.web.js +7 -0
  184. package/lib/utils/url/whatwg-url/index.d.ts +3 -0
  185. package/lib/utils/url/whatwg-url/index.js +16 -0
  186. package/lib/utils/url/whatwg-url/lib/URL-impl.d.ts +20 -0
  187. package/lib/utils/url/whatwg-url/lib/URL-impl.js +175 -0
  188. package/lib/utils/url/whatwg-url/lib/URL.d.ts +1 -0
  189. package/lib/utils/url/whatwg-url/lib/URL.js +298 -0
  190. package/lib/utils/url/whatwg-url/lib/URLSearchParams-impl.d.ts +19 -0
  191. package/lib/utils/url/whatwg-url/lib/URLSearchParams-impl.js +126 -0
  192. package/lib/utils/url/whatwg-url/lib/URLSearchParams.d.ts +1 -0
  193. package/lib/utils/url/whatwg-url/lib/URLSearchParams.js +426 -0
  194. package/lib/utils/url/whatwg-url/lib/infra.d.ts +12 -0
  195. package/lib/utils/url/whatwg-url/lib/infra.js +25 -0
  196. package/lib/utils/url/whatwg-url/lib/url-state-machine.d.ts +24 -0
  197. package/lib/utils/url/whatwg-url/lib/url-state-machine.js +1238 -0
  198. package/lib/utils/url/whatwg-url/lib/urlencoded.d.ts +15 -0
  199. package/lib/utils/url/whatwg-url/lib/urlencoded.js +162 -0
  200. package/lib/utils/url/whatwg-url/lib/utils.d.ts +37 -0
  201. package/lib/utils/url/whatwg-url/lib/utils.js +101 -0
  202. package/lib/utils/uuid.d.ts +17 -17
  203. package/lib/utils/uuid.js +218 -218
  204. package/lib/utils/validator.d.ts +26 -26
  205. package/lib/utils/validator.js +131 -131
  206. package/lib/utils/version.js +21 -21
  207. package/package.json +50 -49
  208. package/src/entities/ActionAuth.ts +41 -41
  209. package/src/entities/I18n.ts +45 -46
  210. package/src/entities/Modi.ts +69 -69
  211. package/src/entities/ModiEntity.ts +26 -26
  212. package/src/entities/Oper.ts +32 -32
  213. package/src/entities/OperEntity.ts +27 -27
  214. package/src/entities/Path.ts +43 -43
  215. package/src/entities/Relation.ts +43 -43
  216. package/src/entities/RelationAuth.ts +44 -44
  217. package/src/entities/User.ts +48 -48
  218. package/src/entities/UserEntityClaim.ts +29 -29
  219. package/src/entities/UserEntityGrant.ts +24 -24
  220. package/src/entities/UserRelation.ts +50 -50
@@ -1,163 +1,163 @@
1
- import { RefAttr } from "./Demand";
2
- import { Geo } from "./Geo";
3
- export type RefOrExpression<A> = RefAttr<A> | Expression<A>;
4
- type MathType<A> = RefOrExpression<A> | number;
5
- type StringType<A> = RefOrExpression<A> | string;
6
- interface Add<A> {
7
- $add: (MathType<A>)[];
8
- }
9
- interface Subtract<A> {
10
- $subtract: [MathType<A>, MathType<A>];
11
- }
12
- interface Multiply<A> {
13
- $multiply: (MathType<A>)[];
14
- }
15
- interface Divide<A> {
16
- $divide: [MathType<A>, MathType<A>];
17
- }
18
- interface Abs<A> {
19
- $abs: MathType<A>;
20
- }
21
- interface Round<A> {
22
- $round: [MathType<A>, MathType<A>];
23
- }
24
- interface Floor<A> {
25
- $floor: MathType<A>;
26
- }
27
- interface Ceil<A> {
28
- $ceil: MathType<A>;
29
- }
30
- interface Pow<A> {
31
- $pow: [MathType<A>, MathType<A>];
32
- }
33
- type MathExpression<A> = Add<A> | Subtract<A> | Multiply<A> | Divide<A> | Abs<A> | Round<A> | Floor<A> | Ceil<A> | Pow<A>;
34
- type CmpType<A> = RefOrExpression<A> | string | number;
35
- interface Gt<A> {
36
- $gt: [CmpType<A>, CmpType<A>];
37
- }
38
- interface Lt<A> {
39
- $lt: [CmpType<A>, CmpType<A>];
40
- }
41
- interface Eq<A> {
42
- $eq: [CmpType<A>, CmpType<A>];
43
- }
44
- interface Gte<A> {
45
- $gte: [CmpType<A>, CmpType<A>];
46
- }
47
- interface Lte<A> {
48
- $lte: [CmpType<A>, CmpType<A>];
49
- }
50
- interface Ne<A> {
51
- $ne: [CmpType<A>, CmpType<A>];
52
- }
53
- interface StartsWith<A> {
54
- $startsWith: [RefOrExpression<A> | string, RefOrExpression<A> | string];
55
- }
56
- interface EndsWith<A> {
57
- $endsWith: [RefOrExpression<A> | string, RefOrExpression<A> | string];
58
- }
59
- interface Includes<A> {
60
- $includes: [RefOrExpression<A> | string, RefOrExpression<A> | string];
61
- }
62
- type CompareExpression<A> = Lt<A> | Gt<A> | Lte<A> | Gte<A> | Eq<A> | Ne<A> | StartsWith<A> | EndsWith<A> | Includes<A>;
63
- interface BoolTrue<A> {
64
- $true: Expression<A>;
65
- }
66
- interface BoolFalse<A> {
67
- $false: Expression<A>;
68
- }
69
- type BoolExpression<A> = BoolTrue<A> | BoolFalse<A>;
70
- interface LogicAnd<A> {
71
- $and: Expression<A>[];
72
- }
73
- interface LogicOr<A> {
74
- $or: Expression<A>[];
75
- }
76
- interface LogicNot<A> {
77
- $not: Expression<A>;
78
- }
79
- type LogicExpression<A> = LogicAnd<A> | LogicOr<A> | LogicNot<A>;
80
- interface DateYear<A> {
81
- $year: RefOrExpression<A> | Date | number;
82
- }
83
- interface DateMonth<A> {
84
- $month: RefOrExpression<A> | Date | number;
85
- }
86
- interface DateWeekday<A> {
87
- $weekday: RefOrExpression<A> | Date | number;
88
- }
89
- interface DateWeekOfYear<A> {
90
- $weekOfYear: RefOrExpression<A> | Date | number;
91
- }
92
- interface DateDay<A> {
93
- $day: RefOrExpression<A> | Date | number;
94
- }
95
- interface DateDayOfMonth<A> {
96
- $dayOfMonth: RefOrExpression<A> | Date | number;
97
- }
98
- interface DateDayOfWeek<A> {
99
- $dayOfWeek: RefOrExpression<A> | Date | number;
100
- }
101
- interface DateDayOfYear<A> {
102
- $dayOfYear: RefOrExpression<A> | Date | number;
103
- }
104
- interface DateDiff<A> {
105
- $dateDiff: [RefOrExpression<A> | Date | number, RefOrExpression<A> | Date | number, 'y' | 'M' | 'd' | 'h' | 'm' | 's'];
106
- }
107
- interface DateCeiling<A> {
108
- $dateCeil: [RefOrExpression<A> | Date | number, 'y' | 'M' | 'd' | 'h' | 'm' | 's'];
109
- }
110
- interface DateFloor<A> {
111
- $dateFloor: [RefOrExpression<A> | Date | number, 'y' | 'M' | 'd' | 'h' | 'm' | 's'];
112
- }
113
- type DateExpression<A> = DateYear<A> | DateMonth<A> | DateWeekday<A> | DateWeekOfYear<A> | DateDay<A> | DateDayOfYear<A> | DateDayOfMonth<A> | DateDayOfWeek<A> | DateDiff<A> | DateCeiling<A> | DateFloor<A>;
114
- interface StringConcat<A> {
115
- $concat: StringType<A>[];
116
- }
117
- type StringExpression<A> = StringConcat<A>;
118
- interface GeoContains<A> {
119
- $contains: [RefOrExpression<A> | Geo, RefOrExpression<A> | Geo];
120
- }
121
- interface GeoDistance<A> {
122
- $distance: [RefOrExpression<A> | Geo, RefOrExpression<A> | Geo];
123
- }
124
- type GeoExpression<A> = GeoContains<A> | GeoDistance<A>;
125
- interface AggrCountExpression<A> {
126
- $$count: RefOrExpression<A>;
127
- }
128
- interface AggrSumExpression<A> {
129
- $$sum: RefOrExpression<A>;
130
- }
131
- interface AggrMaxExpression<A> {
132
- $$max: RefOrExpression<A>;
133
- }
134
- interface AggrMinExpression<A> {
135
- $$min: RefOrExpression<A>;
136
- }
137
- interface AggrAvgExpression<A> {
138
- $$avg: RefOrExpression<A>;
139
- }
140
- export type AggrExpression<A> = AggrAvgExpression<A> | AggrCountExpression<A> | AggrSumExpression<A> | AggrMaxExpression<A> | AggrMinExpression<A>;
141
- export type Expression<A> = GeoExpression<A> | DateExpression<A> | LogicExpression<A> | BoolExpression<A> | CompareExpression<A> | MathExpression<A> | StringExpression<A>;
142
- export type ExpressionConstant = Geo | number | Date | string | boolean;
143
- export declare function isGeoExpression<A>(expression: any): expression is GeoExpression<A>;
144
- export declare function isDateExpression<A>(expression: any): expression is DateExpression<A>;
145
- export declare function isLogicExpression<A>(expression: any): expression is LogicExpression<A>;
146
- export declare function isBoolExpression<A>(expression: any): expression is BoolExpression<A>;
147
- export declare function isCompareExpression<A>(expression: any): expression is CompareExpression<A>;
148
- export declare function isMathExpression<A>(expression: any): expression is MathExpression<A>;
149
- export declare function isStringExpression<A>(expression: any): expression is StringExpression<A>;
150
- export declare function isAggrExpression<A>(expression: any): expression is AggrExpression<A>;
151
- export declare function isExpression<A>(expression: any): expression is Expression<A>;
152
- export declare function opMultipleParams(op: string): boolean;
153
- export declare function execOp(op: string, params: any, obscure?: boolean): ExpressionConstant;
154
- /**
155
- * 检查一个表达式,并分析其涉及到的属性
156
- * @param expression
157
- * @returns {
158
- * '#current': [当前结点涉及的属性]
159
- * 'node-1': [node-1结点上涉及的属性]
160
- * }
161
- */
162
- export declare function getAttrRefInExpression(expression: Expression<any>): Record<string, string[]>;
163
- export {};
1
+ import { RefAttr } from "./Demand";
2
+ import { Geo } from "./Geo";
3
+ export type RefOrExpression<A> = RefAttr<A> | Expression<A>;
4
+ type MathType<A> = RefOrExpression<A> | number;
5
+ type StringType<A> = RefOrExpression<A> | string;
6
+ interface Add<A> {
7
+ $add: (MathType<A>)[];
8
+ }
9
+ interface Subtract<A> {
10
+ $subtract: [MathType<A>, MathType<A>];
11
+ }
12
+ interface Multiply<A> {
13
+ $multiply: (MathType<A>)[];
14
+ }
15
+ interface Divide<A> {
16
+ $divide: [MathType<A>, MathType<A>];
17
+ }
18
+ interface Abs<A> {
19
+ $abs: MathType<A>;
20
+ }
21
+ interface Round<A> {
22
+ $round: [MathType<A>, MathType<A>];
23
+ }
24
+ interface Floor<A> {
25
+ $floor: MathType<A>;
26
+ }
27
+ interface Ceil<A> {
28
+ $ceil: MathType<A>;
29
+ }
30
+ interface Mod<A> {
31
+ $mod: [MathType<A>, MathType<A>];
32
+ }
33
+ type MathExpression<A> = Add<A> | Subtract<A> | Multiply<A> | Divide<A> | Abs<A> | Round<A> | Floor<A> | Ceil<A> | Mod<A>;
34
+ type CmpType<A> = RefOrExpression<A> | string | number;
35
+ interface Gt<A> {
36
+ $gt: [CmpType<A>, CmpType<A>];
37
+ }
38
+ interface Lt<A> {
39
+ $lt: [CmpType<A>, CmpType<A>];
40
+ }
41
+ interface Eq<A> {
42
+ $eq: [CmpType<A>, CmpType<A>];
43
+ }
44
+ interface Gte<A> {
45
+ $gte: [CmpType<A>, CmpType<A>];
46
+ }
47
+ interface Lte<A> {
48
+ $lte: [CmpType<A>, CmpType<A>];
49
+ }
50
+ interface Ne<A> {
51
+ $ne: [CmpType<A>, CmpType<A>];
52
+ }
53
+ interface StartsWith<A> {
54
+ $startsWith: [RefOrExpression<A> | string, RefOrExpression<A> | string];
55
+ }
56
+ interface EndsWith<A> {
57
+ $endsWith: [RefOrExpression<A> | string, RefOrExpression<A> | string];
58
+ }
59
+ interface Includes<A> {
60
+ $includes: [RefOrExpression<A> | string, RefOrExpression<A> | string];
61
+ }
62
+ type CompareExpression<A> = Lt<A> | Gt<A> | Lte<A> | Gte<A> | Eq<A> | Ne<A> | StartsWith<A> | EndsWith<A> | Includes<A>;
63
+ interface BoolTrue<A> {
64
+ $true: Expression<A>;
65
+ }
66
+ interface BoolFalse<A> {
67
+ $false: Expression<A>;
68
+ }
69
+ type BoolExpression<A> = BoolTrue<A> | BoolFalse<A>;
70
+ interface LogicAnd<A> {
71
+ $and: Expression<A>[];
72
+ }
73
+ interface LogicOr<A> {
74
+ $or: Expression<A>[];
75
+ }
76
+ interface LogicNot<A> {
77
+ $not: Expression<A>;
78
+ }
79
+ type LogicExpression<A> = LogicAnd<A> | LogicOr<A> | LogicNot<A>;
80
+ interface DateYear<A> {
81
+ $year: RefOrExpression<A> | Date | number;
82
+ }
83
+ interface DateMonth<A> {
84
+ $month: RefOrExpression<A> | Date | number;
85
+ }
86
+ interface DateWeekday<A> {
87
+ $weekday: RefOrExpression<A> | Date | number;
88
+ }
89
+ interface DateWeekOfYear<A> {
90
+ $weekOfYear: RefOrExpression<A> | Date | number;
91
+ }
92
+ interface DateDay<A> {
93
+ $day: RefOrExpression<A> | Date | number;
94
+ }
95
+ interface DateDayOfMonth<A> {
96
+ $dayOfMonth: RefOrExpression<A> | Date | number;
97
+ }
98
+ interface DateDayOfWeek<A> {
99
+ $dayOfWeek: RefOrExpression<A> | Date | number;
100
+ }
101
+ interface DateDayOfYear<A> {
102
+ $dayOfYear: RefOrExpression<A> | Date | number;
103
+ }
104
+ interface DateDiff<A> {
105
+ $dateDiff: [RefOrExpression<A> | Date | number, RefOrExpression<A> | Date | number, 'y' | 'M' | 'd' | 'h' | 'm' | 's'];
106
+ }
107
+ interface DateCeiling<A> {
108
+ $dateCeil: [RefOrExpression<A> | Date | number, 'y' | 'M' | 'd' | 'h' | 'm' | 's'];
109
+ }
110
+ interface DateFloor<A> {
111
+ $dateFloor: [RefOrExpression<A> | Date | number, 'y' | 'M' | 'd' | 'h' | 'm' | 's'];
112
+ }
113
+ type DateExpression<A> = DateYear<A> | DateMonth<A> | DateWeekday<A> | DateWeekOfYear<A> | DateDay<A> | DateDayOfYear<A> | DateDayOfMonth<A> | DateDayOfWeek<A> | DateDiff<A> | DateCeiling<A> | DateFloor<A>;
114
+ interface StringConcat<A> {
115
+ $concat: StringType<A>[];
116
+ }
117
+ type StringExpression<A> = StringConcat<A>;
118
+ interface GeoContains<A> {
119
+ $contains: [RefOrExpression<A> | Geo, RefOrExpression<A> | Geo];
120
+ }
121
+ interface GeoDistance<A> {
122
+ $distance: [RefOrExpression<A> | Geo, RefOrExpression<A> | Geo];
123
+ }
124
+ type GeoExpression<A> = GeoContains<A> | GeoDistance<A>;
125
+ interface AggrCountExpression<A> {
126
+ $$count: RefOrExpression<A>;
127
+ }
128
+ interface AggrSumExpression<A> {
129
+ $$sum: RefOrExpression<A>;
130
+ }
131
+ interface AggrMaxExpression<A> {
132
+ $$max: RefOrExpression<A>;
133
+ }
134
+ interface AggrMinExpression<A> {
135
+ $$min: RefOrExpression<A>;
136
+ }
137
+ interface AggrAvgExpression<A> {
138
+ $$avg: RefOrExpression<A>;
139
+ }
140
+ export type AggrExpression<A> = AggrAvgExpression<A> | AggrCountExpression<A> | AggrSumExpression<A> | AggrMaxExpression<A> | AggrMinExpression<A>;
141
+ export type Expression<A> = GeoExpression<A> | DateExpression<A> | LogicExpression<A> | BoolExpression<A> | CompareExpression<A> | MathExpression<A> | StringExpression<A>;
142
+ export type ExpressionConstant = Geo | number | Date | string | boolean;
143
+ export declare function isGeoExpression<A>(expression: any): expression is GeoExpression<A>;
144
+ export declare function isDateExpression<A>(expression: any): expression is DateExpression<A>;
145
+ export declare function isLogicExpression<A>(expression: any): expression is LogicExpression<A>;
146
+ export declare function isBoolExpression<A>(expression: any): expression is BoolExpression<A>;
147
+ export declare function isCompareExpression<A>(expression: any): expression is CompareExpression<A>;
148
+ export declare function isMathExpression<A>(expression: any): expression is MathExpression<A>;
149
+ export declare function isStringExpression<A>(expression: any): expression is StringExpression<A>;
150
+ export declare function isAggrExpression<A>(expression: any): expression is AggrExpression<A>;
151
+ export declare function isExpression<A>(expression: any): expression is Expression<A>;
152
+ export declare function opMultipleParams(op: string): boolean;
153
+ export declare function execOp(op: string, params: any, obscure?: boolean): ExpressionConstant;
154
+ /**
155
+ * 检查一个表达式,并分析其涉及到的属性
156
+ * @param expression
157
+ * @returns {
158
+ * '#current': [当前结点涉及的属性]
159
+ * 'node-1': [node-1结点上涉及的属性]
160
+ * }
161
+ */
162
+ export declare function getAttrRefInExpression(expression: Expression<any>): Record<string, string[]>;
163
+ export {};