@rs-x/expression-parser 0.4.4
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/LICENSE +21 -0
- package/dist/index.d.ts +701 -0
- package/dist/index.js +17075 -0
- package/package.json +64 -0
- package/readme.md +2793 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,701 @@
|
|
|
1
|
+
import { IDisposable, IDisposableOwner, AnyFunction, ConstructorType, IIndexValueAccessor, ISingletonFactory, SingletonFactory, IDeepCloneValueGetter, ContainerModule } from '@rs-x/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { MustProxify as MustProxify$1, IStateManager as IStateManager$1, IStateChange as IStateChange$1, IContextChanged as IContextChanged$1, IMustProxifyItemHandlerFactory, IObjectObserverProxyPairFactory, IObserverProxyPair, IObserver, IProxyTarget } from '@rs-x/state-manager';
|
|
4
|
+
|
|
5
|
+
interface IExpression<T = unknown, PT = unknown> extends IDisposable {
|
|
6
|
+
readonly changed: Observable<IExpression>;
|
|
7
|
+
readonly type: ExpressionType;
|
|
8
|
+
readonly expressionString: string;
|
|
9
|
+
readonly parent: IExpression<PT> | undefined;
|
|
10
|
+
readonly childExpressions: readonly IExpression[];
|
|
11
|
+
readonly value: T | undefined;
|
|
12
|
+
readonly isRoot: boolean;
|
|
13
|
+
toString(): string;
|
|
14
|
+
}
|
|
15
|
+
interface IPropertyPath {
|
|
16
|
+
object: IPropertyPath;
|
|
17
|
+
name: string;
|
|
18
|
+
}
|
|
19
|
+
interface IChangePathValue<T> {
|
|
20
|
+
readonly path: string;
|
|
21
|
+
readonly value: T;
|
|
22
|
+
}
|
|
23
|
+
declare enum ExpressionType {
|
|
24
|
+
And = "and",
|
|
25
|
+
Or = "or",
|
|
26
|
+
Not = "not",
|
|
27
|
+
Conditional = "conditional",
|
|
28
|
+
Equality = "equality",
|
|
29
|
+
Inequality = "inequality",
|
|
30
|
+
StrictEquality = "strict equality",
|
|
31
|
+
StrictInequality = "strict inequality",
|
|
32
|
+
GreaterThan = "greater than",
|
|
33
|
+
GreaterThanOrEqual = "Greater than or equal",
|
|
34
|
+
LessThan = "less than",
|
|
35
|
+
LessThanOrEqual = "less than or equal",
|
|
36
|
+
In = "in",
|
|
37
|
+
Instanceof = "instanceof",
|
|
38
|
+
Typeof = "typeof",
|
|
39
|
+
Remainder = "remain",
|
|
40
|
+
Subtraction = "subtraction",
|
|
41
|
+
UnaryNegation = "unary negation",
|
|
42
|
+
Addition = "addition",
|
|
43
|
+
Division = "division",
|
|
44
|
+
Multiplication = "multiplication",
|
|
45
|
+
Exponentiation = "exponentiation",
|
|
46
|
+
NullishCoalescing = "nullish coalescing",
|
|
47
|
+
String = "string",
|
|
48
|
+
Number = "number",
|
|
49
|
+
Boolean = "boolean",
|
|
50
|
+
Array = "array",
|
|
51
|
+
Identifier = "identifier",
|
|
52
|
+
Function = "function",
|
|
53
|
+
TemlateString = "template string",
|
|
54
|
+
Null = "null",
|
|
55
|
+
BigInt = "big int",
|
|
56
|
+
RegExp = "regular expression",
|
|
57
|
+
Member = "member",
|
|
58
|
+
Spread = "spread",
|
|
59
|
+
BitwiseLeftShift = "bitwise left shift",
|
|
60
|
+
BitwiseRightShift = "bitwise right shift",
|
|
61
|
+
BitwiseUnsignedRightShift = "bitwise unsigned right shift",
|
|
62
|
+
BitwiseNot = "bitwise not",
|
|
63
|
+
BitwiseAnd = "bitwise and",
|
|
64
|
+
BitwiseOr = "bitwise or",
|
|
65
|
+
BitwiseXor = "bitwise xor",
|
|
66
|
+
New = "new",
|
|
67
|
+
Sequence = "sequence",
|
|
68
|
+
Object = "object",
|
|
69
|
+
Property = "property",
|
|
70
|
+
PropertyContext = "property context",
|
|
71
|
+
Super = "super",
|
|
72
|
+
This = "this",
|
|
73
|
+
Index = "Index",
|
|
74
|
+
UnaryPlus = "unary plus"
|
|
75
|
+
}
|
|
76
|
+
interface IExpressionParser {
|
|
77
|
+
parse(context: object, expression: string, owner?: IDisposableOwner): AbstractExpression;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
interface IMustProxifyHandler {
|
|
81
|
+
createMustProxifyHandler: (() => MustProxify$1) | undefined;
|
|
82
|
+
releaseMustProxifyHandler: (() => void) | undefined;
|
|
83
|
+
}
|
|
84
|
+
interface IExpressionInitializeConfig {
|
|
85
|
+
context?: unknown;
|
|
86
|
+
mustProxifyHandler?: IMustProxifyHandler;
|
|
87
|
+
transactionManager?: IExpressionChangeTransactionManager;
|
|
88
|
+
owner?: IDisposableOwner;
|
|
89
|
+
}
|
|
90
|
+
declare abstract class AbstractExpression<T = unknown, PT = unknown> implements IExpression<T> {
|
|
91
|
+
readonly type: ExpressionType;
|
|
92
|
+
readonly expressionString: string;
|
|
93
|
+
protected readonly _childExpressions: AbstractExpression[];
|
|
94
|
+
private readonly _changed;
|
|
95
|
+
private _parent;
|
|
96
|
+
protected _value: T | undefined;
|
|
97
|
+
private _isDisposed;
|
|
98
|
+
private _oldValue;
|
|
99
|
+
private _commitedSubscription;
|
|
100
|
+
private _owner;
|
|
101
|
+
protected constructor(type: ExpressionType, expressionString: string, ...childExpressions: AbstractExpression[]);
|
|
102
|
+
initialize(settings: IExpressionInitializeConfig): AbstractExpression;
|
|
103
|
+
get value(): T | undefined;
|
|
104
|
+
get isRoot(): boolean;
|
|
105
|
+
get changed(): Observable<IExpression>;
|
|
106
|
+
get childExpressions(): readonly IExpression[];
|
|
107
|
+
get parent(): AbstractExpression<PT> | undefined;
|
|
108
|
+
dispose(): void;
|
|
109
|
+
toString(): string;
|
|
110
|
+
protected get root(): AbstractExpression;
|
|
111
|
+
protected static setValue(expression: AbstractExpression, evaluate: () => unknown): void;
|
|
112
|
+
protected static setParent(expression: AbstractExpression, parent: AbstractExpression): void;
|
|
113
|
+
protected static clearValue(expression: AbstractExpression): void;
|
|
114
|
+
protected abstract evaluate(sender: AbstractExpression, root: AbstractExpression): T | undefined;
|
|
115
|
+
protected internalDispose(): void;
|
|
116
|
+
protected prepareReevaluation(sender: AbstractExpression, root: AbstractExpression, pendingCommits: Set<IExpressionChangeCommitHandler>): boolean;
|
|
117
|
+
protected reevaluated(sender: AbstractExpression, root: AbstractExpression, pendingCommits: Set<IExpressionChangeCommitHandler>): boolean;
|
|
118
|
+
protected evaluateBottomToTop(sender: AbstractExpression, root: AbstractExpression, pendingCommits: Set<IExpressionChangeCommitHandler>): boolean;
|
|
119
|
+
protected isCommitTarget(sender: AbstractExpression): boolean;
|
|
120
|
+
private onCommited;
|
|
121
|
+
private addChildExpressions;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
declare abstract class ParameterizedExpression<T = unknown, PT = unknown> extends AbstractExpression<T, PT> {
|
|
125
|
+
protected constructor(type: ExpressionType, expressionString: string, ...childExpressions: AbstractExpression[]);
|
|
126
|
+
initialize(settings: IExpressionInitializeConfig): AbstractExpression;
|
|
127
|
+
protected abstract evaluateExpression(...args: unknown[]): T;
|
|
128
|
+
protected prepareReevaluation(): boolean;
|
|
129
|
+
protected evaluate(): T;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
declare abstract class BinaryExpression<T = unknown, PT = unknown> extends ParameterizedExpression<T, PT> {
|
|
133
|
+
protected constructor(expressionType: ExpressionType, expressionString: string, leftExpression: AbstractExpression, rightExpression: AbstractExpression);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
declare class AdditionExpression extends BinaryExpression<number, number> {
|
|
137
|
+
constructor(expressionString: string, leftExpression: AbstractExpression<number>, rightExpression: AbstractExpression<number>);
|
|
138
|
+
protected evaluateExpression(a: number, b: number): number;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
declare abstract class CollectionExpression<T = unknown> extends ParameterizedExpression<T> {
|
|
142
|
+
constructor(type: ExpressionType, expressionString: string, expressions: AbstractExpression[]);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
declare class ArrayExpression extends CollectionExpression<unknown[]> {
|
|
146
|
+
constructor(expressions: AbstractExpression[]);
|
|
147
|
+
protected evaluateExpression(...args: unknown[]): unknown[];
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
declare class BitwiseAndExpression extends BinaryExpression<number, number> {
|
|
151
|
+
constructor(expressionString: string, leftExpression: AbstractExpression<number>, rightExpression: AbstractExpression<number>);
|
|
152
|
+
protected evaluateExpression(a: number, b: number): number;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
declare class BitwiseLeftShiftExpression extends BinaryExpression<number, number> {
|
|
156
|
+
constructor(expressionString: string, leftExpression: AbstractExpression<number>, rightExpression: AbstractExpression<number>);
|
|
157
|
+
protected evaluateExpression(a: number, b: number): number;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
declare class BitwiseNotExpression extends ParameterizedExpression<number, number> {
|
|
161
|
+
constructor(expressionString: string, expression: AbstractExpression<number>);
|
|
162
|
+
protected evaluateExpression(a: number): number;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
declare class BitwiseOrExpression extends BinaryExpression<number, number> {
|
|
166
|
+
constructor(expressionString: string, leftExpression: AbstractExpression<number>, rightExpression: AbstractExpression<number>);
|
|
167
|
+
protected evaluateExpression(a: number, b: number): number;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
declare class BitwiseRightShiftExpression extends BinaryExpression<number, number> {
|
|
171
|
+
constructor(expressionString: string, leftExpression: AbstractExpression<number>, rightExpression: AbstractExpression<number>);
|
|
172
|
+
protected evaluateExpression(a: number, b: number): number;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
declare class BitwiseUnsignedRightShiftExpression extends BinaryExpression<number, number> {
|
|
176
|
+
constructor(expressionString: string, leftExpression: AbstractExpression<number>, rightExpression: AbstractExpression<number>);
|
|
177
|
+
protected evaluateExpression(a: number, b: number): number;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
declare class BitwiseXorExpression extends BinaryExpression<number, number> {
|
|
181
|
+
constructor(expressionString: string, leftExpression: AbstractExpression<number>, rightExpression: AbstractExpression<number>);
|
|
182
|
+
protected evaluateExpression(a: number, b: number): number;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
declare class ConditionalExpression extends ParameterizedExpression {
|
|
186
|
+
constructor(expressionString: string, condition: AbstractExpression, ifValueExpression: AbstractExpression, elseValueExpression: AbstractExpression);
|
|
187
|
+
protected evaluateExpression(condition: unknown, consequent: unknown, alternate: unknown): unknown;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
declare class ConstantExpression<T> extends AbstractExpression<T> {
|
|
191
|
+
private readonly _expressionChangeTransactionManager;
|
|
192
|
+
private readonly _commitHandler;
|
|
193
|
+
constructor(type: ExpressionType, expressionString: string, constValue: T, _expressionChangeTransactionManager: IExpressionChangeTransactionManager);
|
|
194
|
+
initialize(settings: IExpressionInitializeConfig): AbstractExpression;
|
|
195
|
+
protected evaluate(): T | undefined;
|
|
196
|
+
private commit;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
declare class ConstantBigIntExpression extends ConstantExpression<bigint> {
|
|
200
|
+
constructor(value: bigint, expressionChangeTransactionManager: IExpressionChangeTransactionManager);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
declare class ConstantBooleanExpression extends ConstantExpression<boolean> {
|
|
204
|
+
constructor(value: boolean, expressionChangeTransactionManager: IExpressionChangeTransactionManager);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
declare class ConstantNullExpression extends ConstantExpression<null> {
|
|
208
|
+
constructor(expressionChangeTransactionManager: IExpressionChangeTransactionManager);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
declare class ConstantNumberExpression extends ConstantExpression<number> {
|
|
212
|
+
constructor(value: number, expressionChangeTransactionManager: IExpressionChangeTransactionManager);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
declare class ConstantRegExpExpression extends ConstantExpression<RegExp> {
|
|
216
|
+
constructor(expressionString: string, value: RegExp, expressionChangeTransactionManager: IExpressionChangeTransactionManager);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
declare class ConstantStringExpression extends ConstantExpression<string> {
|
|
220
|
+
constructor(value: string, expressionChangeTransactionManager: IExpressionChangeTransactionManager);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
declare class UnaryPlusExpression extends ParameterizedExpression<number> {
|
|
224
|
+
constructor(expressionString: string, expression: AbstractExpression);
|
|
225
|
+
protected evaluateExpression(a: string | number): number;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
declare class DivisionExpression extends BinaryExpression<number, number> {
|
|
229
|
+
constructor(expressionString: string, leftExpression: AbstractExpression<number>, rightExpression: AbstractExpression<number>);
|
|
230
|
+
protected evaluateExpression(a: number, b: number): number;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
declare class EqualityExpression extends BinaryExpression<boolean> {
|
|
234
|
+
constructor(expressionString: string, leftExpression: AbstractExpression, rightExpression: AbstractExpression);
|
|
235
|
+
protected evaluateExpression(a: unknown, b: unknown): boolean;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
declare class ExponentiationExpression extends BinaryExpression<number, number> {
|
|
239
|
+
constructor(expressionString: string, leftExpression: AbstractExpression<number>, rightExpression: AbstractExpression<number>);
|
|
240
|
+
protected evaluateExpression(base: number, exponent: number): number;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
interface IGuidFactory {
|
|
244
|
+
create(): string;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
type MustProxify = (index: unknown, target?: unknown) => boolean;
|
|
248
|
+
|
|
249
|
+
interface IContextChanged {
|
|
250
|
+
oldContext: unknown;
|
|
251
|
+
context: unknown;
|
|
252
|
+
key: unknown;
|
|
253
|
+
}
|
|
254
|
+
interface IStateChange extends IContextChanged {
|
|
255
|
+
oldValue: unknown;
|
|
256
|
+
newValue?: unknown;
|
|
257
|
+
watched?: boolean;
|
|
258
|
+
}
|
|
259
|
+
interface IStateManager {
|
|
260
|
+
readonly changed: Observable<IStateChange>;
|
|
261
|
+
readonly contextChanged: Observable<IContextChanged>;
|
|
262
|
+
readonly startChangeCycle: Observable<void>;
|
|
263
|
+
readonly endChangeCycle: Observable<void>;
|
|
264
|
+
isWatched(context: unknown, index: unknown, mustProxify?: MustProxify): boolean;
|
|
265
|
+
watchState(context: unknown, index: unknown, mustProxify?: MustProxify): unknown;
|
|
266
|
+
releaseState(oontext: unknown, index: unknown, mustProxify?: MustProxify): void;
|
|
267
|
+
getState<T>(context: unknown, index: unknown): T;
|
|
268
|
+
setState<T>(context: unknown, index: unknown, value: T): void;
|
|
269
|
+
clear(): void;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
declare class FunctionExpression extends AbstractExpression {
|
|
273
|
+
readonly functionExpression: AbstractExpression<AnyFunction | string | number>;
|
|
274
|
+
readonly objectExpression: AbstractExpression<object>;
|
|
275
|
+
readonly argumentsExpression: ArrayExpression;
|
|
276
|
+
readonly computed: boolean;
|
|
277
|
+
readonly optional: boolean;
|
|
278
|
+
private readonly _stateManager;
|
|
279
|
+
private _context;
|
|
280
|
+
private _functionContext;
|
|
281
|
+
private readonly _functionId;
|
|
282
|
+
constructor(expressionString: string, functionExpression: AbstractExpression<AnyFunction | string | number>, objectExpression: AbstractExpression<object>, argumentsExpression: ArrayExpression, computed: boolean, optional: boolean, expressionChangeTransactionManager: IExpressionChangeTransactionManager, _stateManager: IStateManager, guidFactory: IGuidFactory);
|
|
283
|
+
initialize(settings: IExpressionInitializeConfig): AbstractExpression;
|
|
284
|
+
protected internalDispose(): void;
|
|
285
|
+
protected prepareReevaluation(sender: AbstractExpression, root: AbstractExpression, pendingCommits: Set<IExpressionChangeCommitHandler>): boolean;
|
|
286
|
+
protected evaluate(): unknown;
|
|
287
|
+
private get functionName();
|
|
288
|
+
private releaseResult;
|
|
289
|
+
private registerResult;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
declare class GreaterThanExpression extends BinaryExpression {
|
|
293
|
+
constructor(expressionString: string, leftExpression: AbstractExpression, rightExpression: AbstractExpression);
|
|
294
|
+
protected evaluateExpression(a: number, b: number): boolean;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
declare class GreaterThanOrEqualExpression extends BinaryExpression {
|
|
298
|
+
constructor(expressionString: string, leftExpression: AbstractExpression, rightExpression: AbstractExpression);
|
|
299
|
+
protected evaluateExpression(a: number, b: number): boolean;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
declare class IndexValueObserver {
|
|
303
|
+
private _context;
|
|
304
|
+
private readonly _key;
|
|
305
|
+
private readonly _mustProxify;
|
|
306
|
+
private readonly _stateManager;
|
|
307
|
+
private readonly _changeSubscription;
|
|
308
|
+
private readonly _contextChangeSubscription;
|
|
309
|
+
private readonly _changed;
|
|
310
|
+
private readonly _contextChanged;
|
|
311
|
+
private _isDisposed;
|
|
312
|
+
constructor(_context: unknown, _key: unknown, _mustProxify: MustProxify$1 | undefined, _stateManager: IStateManager$1);
|
|
313
|
+
get changed(): Observable<IStateChange$1>;
|
|
314
|
+
get contextChanged(): Observable<IContextChanged$1>;
|
|
315
|
+
dispose(): void;
|
|
316
|
+
getValue(context: unknown, key: unknown): unknown;
|
|
317
|
+
private onContextCHanged;
|
|
318
|
+
private emitChange;
|
|
319
|
+
}
|
|
320
|
+
interface IIdentifierInitializeConfig extends IExpressionInitializeConfig {
|
|
321
|
+
currentValue?: unknown;
|
|
322
|
+
}
|
|
323
|
+
declare class IdentifierExpression extends AbstractExpression {
|
|
324
|
+
private readonly _rootContext;
|
|
325
|
+
private readonly _stateManager;
|
|
326
|
+
private readonly _expressionChangeTransactionManager;
|
|
327
|
+
private readonly _indexValue?;
|
|
328
|
+
private _changeSubscription;
|
|
329
|
+
private _isInitialized;
|
|
330
|
+
private _indexValueObserver;
|
|
331
|
+
private releaseMustProxifyHandler;
|
|
332
|
+
private _commitAfterInitialized;
|
|
333
|
+
private readonly _commitHandler;
|
|
334
|
+
constructor(_rootContext: unknown, _stateManager: IStateManager$1, expressionString: string, _expressionChangeTransactionManager: IExpressionChangeTransactionManager, _indexValue?: unknown | undefined);
|
|
335
|
+
initialize(settings: IIdentifierInitializeConfig): AbstractExpression;
|
|
336
|
+
protected internalDispose(): void;
|
|
337
|
+
protected evaluate(): unknown;
|
|
338
|
+
private observeChange;
|
|
339
|
+
private getDefaultMustProxifyHandler;
|
|
340
|
+
private disposeObserver;
|
|
341
|
+
private commit;
|
|
342
|
+
private onValueChanged;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
declare class InExpression extends BinaryExpression<boolean> {
|
|
346
|
+
constructor(expressionString: string, leftExpression: AbstractExpression, rightExpression: AbstractExpression);
|
|
347
|
+
protected evaluateExpression(a: string, b: object): boolean;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
declare class IndexExpression extends ParameterizedExpression {
|
|
351
|
+
constructor(expression: AbstractExpression);
|
|
352
|
+
protected get root(): AbstractExpression;
|
|
353
|
+
protected evaluateExpression(index: unknown): unknown;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
declare class InequalityExpression extends BinaryExpression<boolean> {
|
|
357
|
+
constructor(expressionString: string, leftExpression: AbstractExpression, rightExpression: AbstractExpression);
|
|
358
|
+
protected evaluateExpression(a: unknown, b: unknown): boolean;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
declare class InstanceofExpression extends BinaryExpression<boolean, ConstructorType> {
|
|
362
|
+
constructor(expressionString: string, leftExpression: AbstractExpression, rightExpression: AbstractExpression<ConstructorType>);
|
|
363
|
+
protected evaluateExpression(object: object, type: ConstructorType): boolean;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
declare class LessThanExpression extends BinaryExpression<boolean> {
|
|
367
|
+
constructor(expressionString: string, leftExpression: AbstractExpression<number>, rightExpression: AbstractExpression<number>);
|
|
368
|
+
protected evaluateExpression(a: number, b: number): boolean;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
declare class LessThanOrEqualExpression extends BinaryExpression<boolean> {
|
|
372
|
+
constructor(expressionString: string, leftExpression: AbstractExpression<number>, rightExpression: AbstractExpression<number>);
|
|
373
|
+
protected evaluateExpression(a: number, b: number): boolean;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
declare class LogicalAndExpression extends BinaryExpression {
|
|
377
|
+
constructor(expressionString: string, leftExpression: AbstractExpression, rightExpression: AbstractExpression);
|
|
378
|
+
protected evaluateExpression(a: unknown, b: unknown): unknown;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
declare class LogicalNotExpression extends ParameterizedExpression {
|
|
382
|
+
constructor(expressionString: string, expression: AbstractExpression);
|
|
383
|
+
protected evaluateExpression(value: unknown): boolean;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
declare class LogicalOrExpression extends BinaryExpression {
|
|
387
|
+
constructor(expressionString: string, leftExpression: AbstractExpression, rightExpression: AbstractExpression);
|
|
388
|
+
protected evaluateExpression(a: unknown, b: unknown): unknown;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
declare class MemberExpression extends AbstractExpression {
|
|
392
|
+
private readonly _indexValueAccessor;
|
|
393
|
+
private readonly _stateManager;
|
|
394
|
+
private readonly _mustProxifyItemHandlerFactory;
|
|
395
|
+
private readonly _expressionChangeTransactionManager;
|
|
396
|
+
private _slotObservers;
|
|
397
|
+
private _rebindingSlot;
|
|
398
|
+
private readonly _initializeQueue;
|
|
399
|
+
constructor(expressionString: string, pathSeqments: AbstractExpression[], _indexValueAccessor: IIndexValueAccessor, _stateManager: IStateManager$1, _mustProxifyItemHandlerFactory: IMustProxifyItemHandlerFactory, _expressionChangeTransactionManager: IExpressionChangeTransactionManager);
|
|
400
|
+
initialize(settings: IExpressionInitializeConfig): AbstractExpression;
|
|
401
|
+
protected internalDispose(): void;
|
|
402
|
+
protected prepareReevaluation(sender: AbstractExpression, root: AbstractExpression, pendingCommits: Set<IExpressionChangeCommitHandler>): boolean;
|
|
403
|
+
protected evaluate(sender: AbstractExpression, root: AbstractExpression): unknown;
|
|
404
|
+
protected isCommitTarget(sender: AbstractExpression): boolean;
|
|
405
|
+
private isPending;
|
|
406
|
+
private shouldCancelEvaluate;
|
|
407
|
+
private initializePathSegement;
|
|
408
|
+
private resolvePathSegment;
|
|
409
|
+
private resolveCalculated;
|
|
410
|
+
private disposeSlotObserver;
|
|
411
|
+
private getMustProxifyHandler;
|
|
412
|
+
private createMustProxifyHandler;
|
|
413
|
+
private observeSlot;
|
|
414
|
+
private onSlotChanged;
|
|
415
|
+
private isCalculated;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
declare class MultiplicationExpression extends BinaryExpression {
|
|
419
|
+
constructor(expressionString: string, leftExpression: AbstractExpression<number>, rightExpression: AbstractExpression<number>);
|
|
420
|
+
protected evaluateExpression(a: number, b: number): number;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
declare class NewExpression extends ParameterizedExpression {
|
|
424
|
+
constructor(expressionString: string, constructorExpression: AbstractExpression<ConstructorType>, argumentExpressions: AbstractExpression[]);
|
|
425
|
+
protected evaluateExpression(constructorFunction: ConstructorType, ...args: unknown[]): unknown;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
declare class NullishCoalescingExpression extends BinaryExpression {
|
|
429
|
+
constructor(expressionString: string, leftExpression: AbstractExpression, rightExpression: AbstractExpression);
|
|
430
|
+
protected evaluateExpression(a: unknown, b: unknown): unknown;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
declare class PropertyExpression extends BinaryExpression<object, number | string> {
|
|
434
|
+
constructor(expressionString: string, keyExpression: AbstractExpression<PropertyKey>, valueExpression: AbstractExpression);
|
|
435
|
+
protected evaluateExpression(key: PropertyKey, value: unknown): object;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
declare class SpreadExpression extends ParameterizedExpression<unknown[] | object> {
|
|
439
|
+
constructor(expression: ArrayExpression | ObjectExpression | IdentifierExpression);
|
|
440
|
+
protected evaluateExpression(...args: unknown[]): unknown[] | object;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
declare class ObjectExpression extends ParameterizedExpression<object> {
|
|
444
|
+
constructor(expressionString: string, propertyExpressions: (PropertyExpression | SpreadExpression)[]);
|
|
445
|
+
protected evaluateExpression(...args: unknown[]): object;
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
declare class RemainderExpression extends BinaryExpression<number, number> {
|
|
449
|
+
constructor(expressionString: string, leftExpression: AbstractExpression<number>, rightExpression: AbstractExpression<number>);
|
|
450
|
+
protected evaluateExpression(a: number, b: number): number;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
declare class SequenceExpression extends AbstractExpression {
|
|
454
|
+
constructor(expressionString: string, expressions: AbstractExpression[]);
|
|
455
|
+
initialize(settings: IExpressionInitializeConfig): AbstractExpression;
|
|
456
|
+
protected evaluate(): unknown;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
declare class StrictEqualityExpression extends BinaryExpression<boolean> {
|
|
460
|
+
constructor(expressionString: string, leftExpression: AbstractExpression, rightExpression: AbstractExpression);
|
|
461
|
+
protected evaluateExpression(a: unknown, b: unknown): boolean;
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
declare class StrictInequalityExpression extends BinaryExpression<boolean> {
|
|
465
|
+
constructor(expressionString: string, leftExpression: AbstractExpression, rightExpression: AbstractExpression);
|
|
466
|
+
protected evaluateExpression(a: unknown, b: unknown): boolean;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
declare class SubtractionExpression extends BinaryExpression<number, number> {
|
|
470
|
+
constructor(expressionString: string, leftExpression: AbstractExpression<number>, rightExpression: AbstractExpression<number>);
|
|
471
|
+
protected evaluateExpression(a: number, b: number): number;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
declare class TemplateStringExpression extends CollectionExpression<string> {
|
|
475
|
+
constructor(expressionString: string, expressions: AbstractExpression[]);
|
|
476
|
+
protected evaluateExpression(...segments: unknown[]): string;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
declare class TypeofExpression extends ParameterizedExpression<string> {
|
|
480
|
+
constructor(expressionString: string, expression: AbstractExpression);
|
|
481
|
+
protected evaluateExpression(value: unknown): string;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
declare class UnaryNegationExpression extends ParameterizedExpression<number> {
|
|
485
|
+
constructor(expressionString: string, expression: AbstractExpression<number>);
|
|
486
|
+
protected evaluateExpression(value: number): number;
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
interface IExpressionChangeCommitHandler {
|
|
490
|
+
owner: AbstractExpression;
|
|
491
|
+
commit: (root: AbstractExpression, pendingCommits: Set<IExpressionChangeCommitHandler>) => boolean;
|
|
492
|
+
}
|
|
493
|
+
interface IExpressionChangeTransactionManager extends IDisposable {
|
|
494
|
+
readonly commited: Observable<AbstractExpression>;
|
|
495
|
+
registerChange(rootExpression: AbstractExpression, commitHandler: IExpressionChangeCommitHandler): void;
|
|
496
|
+
suspend(): void;
|
|
497
|
+
continue(): void;
|
|
498
|
+
commit(): void;
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
declare class ExpressionChangeTransactionManager implements IExpressionChangeTransactionManager {
|
|
502
|
+
private readonly _commited;
|
|
503
|
+
private readonly _changes;
|
|
504
|
+
private readonly _startChangeCycleSubscription;
|
|
505
|
+
private readonly _endChangeCycleSubscription;
|
|
506
|
+
private _emittedChangeCounter;
|
|
507
|
+
private _suspended;
|
|
508
|
+
constructor(stateManager: IStateManager$1);
|
|
509
|
+
get commited(): Observable<AbstractExpression>;
|
|
510
|
+
dispose(): void;
|
|
511
|
+
suspend(): void;
|
|
512
|
+
continue(): void;
|
|
513
|
+
commit(): void;
|
|
514
|
+
private tryCommit;
|
|
515
|
+
registerChange(rootExpression: AbstractExpression, commitHandler: IExpressionChangeCommitHandler): void;
|
|
516
|
+
private onStartChangeCycle;
|
|
517
|
+
private onEndChangeCycle;
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
interface IExpressionFactory {
|
|
521
|
+
create(context: object, expression: string): IExpression;
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
interface IExpressionInfo {
|
|
525
|
+
context: object;
|
|
526
|
+
expression: string;
|
|
527
|
+
}
|
|
528
|
+
type IExpressionForContextManager = ISingletonFactory<string, string, IExpression>;
|
|
529
|
+
type IExpressionManager = ISingletonFactory<object, object, IExpressionForContextManager>;
|
|
530
|
+
|
|
531
|
+
declare class ExpressionFactory implements IExpressionFactory {
|
|
532
|
+
private readonly _expressionManager;
|
|
533
|
+
constructor(_expressionManager: IExpressionManager);
|
|
534
|
+
create(context: object, expression: string): IExpression;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
declare class ExpressionManager extends SingletonFactory<object, object, IExpressionForContextManager> implements IExpressionManager {
|
|
538
|
+
private readonly _expressionParser;
|
|
539
|
+
getId(context: object): object;
|
|
540
|
+
protected createId(context: object): object;
|
|
541
|
+
constructor(_expressionParser: IExpressionParser);
|
|
542
|
+
protected createInstance(context: object, id: object): IExpressionForContextManager;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
declare class DeepCloneValueGetterWithExpressionSupport implements IDeepCloneValueGetter {
|
|
546
|
+
private readonly _defaultDeepCloneValueGetter;
|
|
547
|
+
constructor(_defaultDeepCloneValueGetter: IDeepCloneValueGetter);
|
|
548
|
+
get(source: unknown): unknown;
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
type IExpressionIndexAccessor = IIndexValueAccessor<unknown, string>;
|
|
552
|
+
|
|
553
|
+
declare class ExpressionIndexAccessor implements IExpressionIndexAccessor {
|
|
554
|
+
readonly priority: 300;
|
|
555
|
+
isAsync(): boolean;
|
|
556
|
+
getResolvedValue(context: unknown, index: string): unknown;
|
|
557
|
+
hasValue(context: unknown, index: string): boolean;
|
|
558
|
+
getValue(context: unknown, index: string): unknown;
|
|
559
|
+
setValue(): void;
|
|
560
|
+
getIndexes(): IterableIterator<string>;
|
|
561
|
+
applies(context: unknown, index: string): boolean;
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
type IExpressionObserverProxyPairFactory = IObjectObserverProxyPairFactory<AbstractExpression>;
|
|
565
|
+
|
|
566
|
+
type IExpressionObserverProxyPair = IObserverProxyPair<AbstractExpression>;
|
|
567
|
+
|
|
568
|
+
interface IExpressionObserverData {
|
|
569
|
+
owner?: IDisposableOwner;
|
|
570
|
+
expression: AbstractExpression;
|
|
571
|
+
}
|
|
572
|
+
type IExpressionObserverFactory = ISingletonFactory<AbstractExpression, IExpressionObserverData, IObserver>;
|
|
573
|
+
|
|
574
|
+
declare class ExpressionObserverProxyPairFactory implements IExpressionObserverProxyPairFactory {
|
|
575
|
+
private readonly _expressionObserverFactory;
|
|
576
|
+
readonly priority = 100;
|
|
577
|
+
constructor(_expressionObserverFactory: IExpressionObserverFactory);
|
|
578
|
+
create(owner: IDisposableOwner, proxyTarget: IProxyTarget<AbstractExpression>): IExpressionObserverProxyPair;
|
|
579
|
+
applies(object: unknown): boolean;
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
declare class ExpressionObserverFactory extends SingletonFactory<AbstractExpression, IExpressionObserverData, IObserver> implements IExpressionObserverFactory {
|
|
583
|
+
constructor();
|
|
584
|
+
getId(data: IExpressionObserverData): AbstractExpression;
|
|
585
|
+
protected createId(data: IExpressionObserverData): AbstractExpression;
|
|
586
|
+
protected createInstance(data: IExpressionObserverData, id: AbstractExpression): IObserver;
|
|
587
|
+
protected releaseInstance(observer: IObserver): void;
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
interface IIdentifierOwnerResolver {
|
|
591
|
+
resolve(index: unknown, context?: unknown): object | null;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
declare class ArrayIndexOwnerResolver implements IIdentifierOwnerResolver {
|
|
595
|
+
resolve(index: string | number, array: unknown[]): object | null;
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
declare class DefaultIdentifierOwnerResolver implements IIdentifierOwnerResolver {
|
|
599
|
+
private readonly _identifierOwnerResolvers;
|
|
600
|
+
constructor(_identifierOwnerResolvers: readonly IIdentifierOwnerResolver[]);
|
|
601
|
+
resolve(index: unknown, context?: unknown): object | null;
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
declare class MapKeyOwnerResolver implements IIdentifierOwnerResolver {
|
|
605
|
+
resolve(index: unknown, map: Map<unknown, unknown>): object | null;
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
declare class PropertyOwnerResolver implements IIdentifierOwnerResolver {
|
|
609
|
+
resolve(index: string, context: object): object | null;
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
declare class JsEspreeExpressionParser implements IExpressionParser {
|
|
613
|
+
private readonly _indexValueAccessor;
|
|
614
|
+
private readonly _mustProxifyItemHandlerFactory;
|
|
615
|
+
private readonly _expressionChangeTransactionManager;
|
|
616
|
+
private readonly _stateManager;
|
|
617
|
+
private readonly _guidFactory;
|
|
618
|
+
static readonly instance: IExpressionParser;
|
|
619
|
+
private readonly createConstantExpression;
|
|
620
|
+
private readonly expressionFactories;
|
|
621
|
+
private readonly unaryExpressionFactories;
|
|
622
|
+
private readonly binaryExpressionFactories;
|
|
623
|
+
private readonly logicalExpressionFactories;
|
|
624
|
+
constructor(_indexValueAccessor: IIndexValueAccessor, _mustProxifyItemHandlerFactory: IMustProxifyItemHandlerFactory, _expressionChangeTransactionManager: IExpressionChangeTransactionManager, _stateManager: IStateManager$1, _guidFactory: IGuidFactory);
|
|
625
|
+
parse(context: unknown, expressionString: string, owner: IDisposableOwner): AbstractExpression;
|
|
626
|
+
private tryParse;
|
|
627
|
+
private createExpression;
|
|
628
|
+
private createLiteralExpression;
|
|
629
|
+
private createBinaryExpression;
|
|
630
|
+
private createAssignmentExpression;
|
|
631
|
+
private createUnaryExpression;
|
|
632
|
+
private createConditionalExpression;
|
|
633
|
+
private createLogicalExpression;
|
|
634
|
+
private createChainExpression;
|
|
635
|
+
private createMemberExpression;
|
|
636
|
+
private createSequenceExpression;
|
|
637
|
+
private createIdentifier;
|
|
638
|
+
private createArrayExpression;
|
|
639
|
+
private createSpreadExpression;
|
|
640
|
+
private createNewExpression;
|
|
641
|
+
private createCallExpression;
|
|
642
|
+
private createTemplateLiteralExpression;
|
|
643
|
+
private createTaggedTemplateExpression;
|
|
644
|
+
private createTemplateElementExpression;
|
|
645
|
+
private createUnaryPlusExpression;
|
|
646
|
+
private createUnaryMinusExpression;
|
|
647
|
+
private createLogicalNotExpression;
|
|
648
|
+
private createTypeofExpression;
|
|
649
|
+
private createDeleteExpression;
|
|
650
|
+
private createEqualToExpression;
|
|
651
|
+
private createNotEqualToExpression;
|
|
652
|
+
private createStrictEqualToExpression;
|
|
653
|
+
private createStrictNotEqualToExpression;
|
|
654
|
+
private createLessThanExpression;
|
|
655
|
+
private createLessThanOrEqualToExpression;
|
|
656
|
+
private createGreaterThanExpression;
|
|
657
|
+
private createGreaterThanOrEqualToExpression;
|
|
658
|
+
private createBitwiseNotExpression;
|
|
659
|
+
private createLeftShiftExpression;
|
|
660
|
+
private createRightShiftExpression;
|
|
661
|
+
private createUnsignedRightShiftExpression;
|
|
662
|
+
private createBitwiseOrExpression;
|
|
663
|
+
private createBitwiseXOrExpression;
|
|
664
|
+
private createBitwiseAndExpression;
|
|
665
|
+
private createAdditionExpression;
|
|
666
|
+
private createSubstractionExpression;
|
|
667
|
+
private createMultiplicationExpression;
|
|
668
|
+
private createDivisionExpression;
|
|
669
|
+
private createModulusExpression;
|
|
670
|
+
private createExponentiationExpression;
|
|
671
|
+
private createInstanceOfExpression;
|
|
672
|
+
private createInExpression;
|
|
673
|
+
private createLogicalOrExpression;
|
|
674
|
+
private createLogicalAndExpression;
|
|
675
|
+
private createNullishCoalescingExpression;
|
|
676
|
+
private createObjectExpression;
|
|
677
|
+
private createPropertyExpression;
|
|
678
|
+
private parseExpression;
|
|
679
|
+
private normalizeAST;
|
|
680
|
+
private flattenMemberExpression;
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
declare const RsXExpressionParserInjectionTokens: {
|
|
684
|
+
PropertyOwnerResolver: symbol;
|
|
685
|
+
ArrayIndexOwnerResolver: symbol;
|
|
686
|
+
MapKeyOwnerResolver: symbol;
|
|
687
|
+
IdentifierOwnerResolver: symbol;
|
|
688
|
+
IIdentifierOwnerResolverList: symbol;
|
|
689
|
+
IExpressionManager: symbol;
|
|
690
|
+
IExpressionChangeTransactionManager: symbol;
|
|
691
|
+
IExpressionParser: symbol;
|
|
692
|
+
IExpressionFactory: symbol;
|
|
693
|
+
IExpressionObserverProxyPairFactory: symbol;
|
|
694
|
+
IExpressionIndexAccessor: symbol;
|
|
695
|
+
IExpressionObserverFactory: symbol;
|
|
696
|
+
};
|
|
697
|
+
|
|
698
|
+
declare const RsXExpressionParserModule: ContainerModule;
|
|
699
|
+
declare function unloadRsXExpressionParserModule(): Promise<void>;
|
|
700
|
+
|
|
701
|
+
export { AbstractExpression, AdditionExpression, ArrayExpression, ArrayIndexOwnerResolver, BinaryExpression, BitwiseAndExpression, BitwiseLeftShiftExpression, BitwiseNotExpression, BitwiseOrExpression, BitwiseRightShiftExpression, BitwiseUnsignedRightShiftExpression, BitwiseXorExpression, CollectionExpression, ConditionalExpression, ConstantBigIntExpression, ConstantBooleanExpression, ConstantExpression, ConstantNullExpression, ConstantNumberExpression, ConstantRegExpExpression, ConstantStringExpression, DeepCloneValueGetterWithExpressionSupport, DefaultIdentifierOwnerResolver, DivisionExpression, EqualityExpression, ExponentiationExpression, ExpressionChangeTransactionManager, ExpressionFactory, ExpressionIndexAccessor, ExpressionManager, ExpressionObserverFactory, ExpressionObserverProxyPairFactory, ExpressionType, FunctionExpression, GreaterThanExpression, GreaterThanOrEqualExpression, type IChangePathValue, type IExpression, type IExpressionChangeCommitHandler, type IExpressionChangeTransactionManager, type IExpressionFactory, type IExpressionForContextManager, type IExpressionIndexAccessor, type IExpressionInfo, type IExpressionInitializeConfig, type IExpressionManager, type IExpressionObserverData, type IExpressionObserverFactory, type IExpressionObserverProxyPair, type IExpressionParser, type IIdentifierInitializeConfig, type IIdentifierOwnerResolver, type IMustProxifyHandler, type IPropertyPath, IdentifierExpression, InExpression, IndexExpression, IndexValueObserver, InequalityExpression, InstanceofExpression, JsEspreeExpressionParser, LessThanExpression, LessThanOrEqualExpression, LogicalAndExpression, LogicalNotExpression, LogicalOrExpression, MapKeyOwnerResolver, MemberExpression, MultiplicationExpression, NewExpression, NullishCoalescingExpression, ObjectExpression, ParameterizedExpression, PropertyExpression, PropertyOwnerResolver, RemainderExpression, RsXExpressionParserInjectionTokens, RsXExpressionParserModule, SequenceExpression, SpreadExpression, StrictEqualityExpression, StrictInequalityExpression, SubtractionExpression, TemplateStringExpression, TypeofExpression, UnaryNegationExpression, UnaryPlusExpression, unloadRsXExpressionParserModule };
|