@cloudpss/expression 0.6.0-alpha.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.
- package/README.md +3 -0
- package/dist/analyze.d.ts +7 -0
- package/dist/analyze.d.ts.map +1 -0
- package/dist/analyze.js +38 -0
- package/dist/analyze.js.map +1 -0
- package/dist/context.d.ts +41 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +18 -0
- package/dist/context.js.map +1 -0
- package/dist/definitions/argument.d.ts +33 -0
- package/dist/definitions/argument.d.ts.map +1 -0
- package/dist/definitions/argument.js +2 -0
- package/dist/definitions/argument.js.map +1 -0
- package/dist/definitions/constraint.d.ts +32 -0
- package/dist/definitions/constraint.d.ts.map +1 -0
- package/dist/definitions/constraint.js +20 -0
- package/dist/definitions/constraint.js.map +1 -0
- package/dist/definitions/parameter-decoration.d.ts +27 -0
- package/dist/definitions/parameter-decoration.d.ts.map +1 -0
- package/dist/definitions/parameter-decoration.js +17 -0
- package/dist/definitions/parameter-decoration.js.map +1 -0
- package/dist/definitions/parameter-group.d.ts +38 -0
- package/dist/definitions/parameter-group.d.ts.map +1 -0
- package/dist/definitions/parameter-group.js +31 -0
- package/dist/definitions/parameter-group.js.map +1 -0
- package/dist/definitions/parameter.d.ts +214 -0
- package/dist/definitions/parameter.d.ts.map +1 -0
- package/dist/definitions/parameter.js +44 -0
- package/dist/definitions/parameter.js.map +1 -0
- package/dist/definitions/variable.d.ts +14 -0
- package/dist/definitions/variable.d.ts.map +1 -0
- package/dist/definitions/variable.js +14 -0
- package/dist/definitions/variable.js.map +1 -0
- package/dist/definitions.d.ts +7 -0
- package/dist/definitions.d.ts.map +1 -0
- package/dist/definitions.js +7 -0
- package/dist/definitions.js.map +1 -0
- package/dist/eval.d.ts +15 -0
- package/dist/eval.d.ts.map +1 -0
- package/dist/eval.js +54 -0
- package/dist/eval.js.map +1 -0
- package/dist/expression.d.ts +37 -0
- package/dist/expression.d.ts.map +1 -0
- package/dist/expression.js +18 -0
- package/dist/expression.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +49 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +238 -0
- package/dist/main.js.map +1 -0
- package/dist/migrate.d.ts +5 -0
- package/dist/migrate.d.ts.map +1 -0
- package/dist/migrate.js +23 -0
- package/dist/migrate.js.map +1 -0
- package/dist/migrator/access.d.ts +6 -0
- package/dist/migrator/access.d.ts.map +1 -0
- package/dist/migrator/access.js +176 -0
- package/dist/migrator/access.js.map +1 -0
- package/dist/migrator/call.d.ts +6 -0
- package/dist/migrator/call.d.ts.map +1 -0
- package/dist/migrator/call.js +405 -0
- package/dist/migrator/call.js.map +1 -0
- package/dist/migrator/concat.d.ts +6 -0
- package/dist/migrator/concat.d.ts.map +1 -0
- package/dist/migrator/concat.js +32 -0
- package/dist/migrator/concat.js.map +1 -0
- package/dist/migrator/condition.d.ts +6 -0
- package/dist/migrator/condition.d.ts.map +1 -0
- package/dist/migrator/condition.js +110 -0
- package/dist/migrator/condition.js.map +1 -0
- package/dist/migrator/interface.d.ts +24 -0
- package/dist/migrator/interface.d.ts.map +1 -0
- package/dist/migrator/interface.js +8 -0
- package/dist/migrator/interface.js.map +1 -0
- package/dist/migrator/node.d.ts +12 -0
- package/dist/migrator/node.d.ts.map +1 -0
- package/dist/migrator/node.js +119 -0
- package/dist/migrator/node.js.map +1 -0
- package/dist/migrator/operator.d.ts +6 -0
- package/dist/migrator/operator.d.ts.map +1 -0
- package/dist/migrator/operator.js +299 -0
- package/dist/migrator/operator.js.map +1 -0
- package/dist/migrator/parser.d.ts +3 -0
- package/dist/migrator/parser.d.ts.map +1 -0
- package/dist/migrator/parser.js +76 -0
- package/dist/migrator/parser.js.map +1 -0
- package/dist/migrator/special.d.ts +4 -0
- package/dist/migrator/special.d.ts.map +1 -0
- package/dist/migrator/special.js +26 -0
- package/dist/migrator/special.js.map +1 -0
- package/dist/migrator/state.d.ts +64 -0
- package/dist/migrator/state.d.ts.map +1 -0
- package/dist/migrator/state.js +251 -0
- package/dist/migrator/state.js.map +1 -0
- package/dist/migrator/symbol.d.ts +6 -0
- package/dist/migrator/symbol.d.ts.map +1 -0
- package/dist/migrator/symbol.js +50 -0
- package/dist/migrator/symbol.js.map +1 -0
- package/dist/migrator/to-type.d.ts +10 -0
- package/dist/migrator/to-type.d.ts.map +1 -0
- package/dist/migrator/to-type.js +89 -0
- package/dist/migrator/to-type.js.map +1 -0
- package/dist/migrator/utils.d.ts +14 -0
- package/dist/migrator/utils.d.ts.map +1 -0
- package/dist/migrator/utils.js +64 -0
- package/dist/migrator/utils.js.map +1 -0
- package/dist/parser.d.ts +41 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +36 -0
- package/dist/parser.js.map +1 -0
- package/dist/scope.d.ts +43 -0
- package/dist/scope.d.ts.map +1 -0
- package/dist/scope.js +204 -0
- package/dist/scope.js.map +1 -0
- package/dist/type.d.ts +21 -0
- package/dist/type.d.ts.map +1 -0
- package/dist/type.js +50 -0
- package/dist/type.js.map +1 -0
- package/jest.config.js +3 -0
- package/package.json +26 -0
- package/src/analyze.ts +44 -0
- package/src/context.ts +54 -0
- package/src/definitions/argument.ts +40 -0
- package/src/definitions/constraint.ts +49 -0
- package/src/definitions/parameter-decoration.ts +42 -0
- package/src/definitions/parameter-group.ts +62 -0
- package/src/definitions/parameter.ts +276 -0
- package/src/definitions/variable.ts +23 -0
- package/src/definitions.ts +6 -0
- package/src/eval.ts +64 -0
- package/src/expression.ts +62 -0
- package/src/index.ts +5 -0
- package/src/main.ts +295 -0
- package/src/migrate.ts +25 -0
- package/src/migrator/access.ts +201 -0
- package/src/migrator/call.ts +397 -0
- package/src/migrator/concat.ts +28 -0
- package/src/migrator/condition.ts +120 -0
- package/src/migrator/interface.ts +30 -0
- package/src/migrator/node.ts +131 -0
- package/src/migrator/operator.ts +339 -0
- package/src/migrator/parser.ts +106 -0
- package/src/migrator/special.ts +30 -0
- package/src/migrator/state.ts +262 -0
- package/src/migrator/symbol.ts +53 -0
- package/src/migrator/to-type.ts +93 -0
- package/src/migrator/utils.ts +67 -0
- package/src/parser.ts +69 -0
- package/src/scope.ts +208 -0
- package/src/type.ts +66 -0
- package/tests/analyze.ts +15 -0
- package/tests/condition.ts +49 -0
- package/tests/definition.ts +42 -0
- package/tests/eval-complex.ts +150 -0
- package/tests/eval.ts +42 -0
- package/tests/functions.ts +22 -0
- package/tests/import.ts +31 -0
- package/tests/scope.ts +33 -0
- package/tests/setup.ts +41 -0
- package/tests/tsconfig.json +3 -0
- package/tests/unwrap.ts +46 -0
- package/tsconfig.json +3 -0
package/tests/setup.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { inspect } from 'node:util';
|
|
2
|
+
|
|
3
|
+
test('toBeProxy', () => {
|
|
4
|
+
expect({}).not.toBeProxy();
|
|
5
|
+
expect(null).not.toBeProxy();
|
|
6
|
+
expect(undefined).not.toBeProxy();
|
|
7
|
+
expect(() => {
|
|
8
|
+
// func
|
|
9
|
+
}).not.toBeProxy();
|
|
10
|
+
expect(1).not.toBeProxy();
|
|
11
|
+
expect(true).not.toBeProxy();
|
|
12
|
+
expect(Symbol()).not.toBeProxy();
|
|
13
|
+
expect('Proxy [{}, {}]').not.toBeProxy();
|
|
14
|
+
expect({
|
|
15
|
+
toString() {
|
|
16
|
+
return 'Proxy [{}, {}]';
|
|
17
|
+
},
|
|
18
|
+
}).not.toBeProxy();
|
|
19
|
+
expect({
|
|
20
|
+
[inspect.custom]() {
|
|
21
|
+
return 'Proxy [{}, {}]';
|
|
22
|
+
},
|
|
23
|
+
}).not.toBeProxy();
|
|
24
|
+
|
|
25
|
+
expect(new Proxy({}, {})).toBeProxy();
|
|
26
|
+
expect(
|
|
27
|
+
new Proxy(
|
|
28
|
+
{
|
|
29
|
+
[inspect.custom]() {
|
|
30
|
+
return '{}';
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
{},
|
|
34
|
+
),
|
|
35
|
+
).toBeProxy();
|
|
36
|
+
expect(
|
|
37
|
+
new Proxy(() => {
|
|
38
|
+
// func
|
|
39
|
+
}, {}),
|
|
40
|
+
).toBeProxy();
|
|
41
|
+
});
|
package/tests/unwrap.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/** 求值结果不应包含 PROXY */
|
|
2
|
+
import type { VmRecord } from '@mirascript/mirascript';
|
|
3
|
+
import { Evaluator, Expression, Scope } from '../dist/index.js';
|
|
4
|
+
const o = {
|
|
5
|
+
a: {
|
|
6
|
+
b: { ɵexp: '', source: 'dd' },
|
|
7
|
+
},
|
|
8
|
+
bb: { c: '111', e: { ɵexp: '', source: 'dd' } },
|
|
9
|
+
dd: { ɵexp: 'f', source: 'bb.c' },
|
|
10
|
+
ea: { ɵexp: '', source: 'a' },
|
|
11
|
+
comp: { ɵexp: '', source: 'acos(a.b)' },
|
|
12
|
+
};
|
|
13
|
+
const e = new Evaluator();
|
|
14
|
+
const s = new Scope(o, false);
|
|
15
|
+
|
|
16
|
+
describe('Evaluator should unwrap correctly', () => {
|
|
17
|
+
it('should unwrap object', () => {
|
|
18
|
+
const result = e.evaluate(Expression('a'), s);
|
|
19
|
+
expect(result).not.toBeProxy();
|
|
20
|
+
expect(result).toBe(o.a);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it('should unwrap record', () => {
|
|
24
|
+
const result = e.evaluate<VmRecord>(Expression('(:a)'), s)!;
|
|
25
|
+
expect(result).not.toBeProxy();
|
|
26
|
+
expect(result['a']).not.toBeProxy();
|
|
27
|
+
expect(result['a']).toBe(o.a);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it('should unwrap recursively', () => {
|
|
31
|
+
const result = e.evaluate(Expression('ea'), s);
|
|
32
|
+
expect(result).not.toBeProxy();
|
|
33
|
+
expect(result).toBe(o.a);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
it('should unwrap primitive', () => {
|
|
37
|
+
expect(e.evaluate(Expression('a.b'), s)).toBe(111);
|
|
38
|
+
expect(e.evaluate<VmRecord>(Expression('( value: a.b )'), s)?.['value']).toBe(111);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it('should unwrap complex', () => {
|
|
42
|
+
const result = e.evaluate(Expression('comp'), s);
|
|
43
|
+
expect(result).not.toBeProxy();
|
|
44
|
+
expect(result).toEqual(Math.acos(111));
|
|
45
|
+
});
|
|
46
|
+
});
|
package/tsconfig.json
ADDED