@cloudpss/expression 0.6.0-alpha.1 → 0.6.0-alpha.11

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 (154) hide show
  1. package/dist/analyze.d.ts +6 -3
  2. package/dist/analyze.d.ts.map +1 -1
  3. package/dist/analyze.js +67 -33
  4. package/dist/analyze.js.map +1 -1
  5. package/dist/definitions/argument.d.ts +2 -10
  6. package/dist/definitions/argument.d.ts.map +1 -1
  7. package/dist/definitions/constraint.d.ts +2 -2
  8. package/dist/definitions/constraint.d.ts.map +1 -1
  9. package/dist/definitions/constraint.js +1 -1
  10. package/dist/definitions/constraint.js.map +1 -1
  11. package/dist/definitions/parameter-decoration.d.ts +3 -3
  12. package/dist/definitions/parameter-decoration.d.ts.map +1 -1
  13. package/dist/definitions/parameter-decoration.js +0 -7
  14. package/dist/definitions/parameter-decoration.js.map +1 -1
  15. package/dist/definitions/parameter-group.d.ts +0 -4
  16. package/dist/definitions/parameter-group.d.ts.map +1 -1
  17. package/dist/definitions/parameter-group.js +5 -17
  18. package/dist/definitions/parameter-group.js.map +1 -1
  19. package/dist/definitions/parameter.d.ts +47 -40
  20. package/dist/definitions/parameter.d.ts.map +1 -1
  21. package/dist/definitions/parameter.js +9 -21
  22. package/dist/definitions/parameter.js.map +1 -1
  23. package/dist/definitions/utils.d.ts +19 -0
  24. package/dist/definitions/utils.d.ts.map +1 -0
  25. package/dist/definitions/utils.js +177 -0
  26. package/dist/definitions/utils.js.map +1 -0
  27. package/dist/definitions/variable.d.ts +0 -2
  28. package/dist/definitions/variable.d.ts.map +1 -1
  29. package/dist/definitions/variable.js +1 -5
  30. package/dist/definitions/variable.js.map +1 -1
  31. package/dist/definitions.d.ts +1 -0
  32. package/dist/definitions.d.ts.map +1 -1
  33. package/dist/definitions.js +1 -0
  34. package/dist/definitions.js.map +1 -1
  35. package/dist/eval.d.ts +3 -5
  36. package/dist/eval.d.ts.map +1 -1
  37. package/dist/eval.js +12 -20
  38. package/dist/eval.js.map +1 -1
  39. package/dist/expression.d.ts +10 -4
  40. package/dist/expression.d.ts.map +1 -1
  41. package/dist/expression.js +4 -4
  42. package/dist/expression.js.map +1 -1
  43. package/dist/index.d.ts +3 -1
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +1 -0
  46. package/dist/index.js.map +1 -1
  47. package/dist/interface.d.ts +30 -0
  48. package/dist/interface.d.ts.map +1 -0
  49. package/dist/interface.js +6 -0
  50. package/dist/interface.js.map +1 -0
  51. package/dist/main.d.ts +41 -28
  52. package/dist/main.d.ts.map +1 -1
  53. package/dist/main.js +145 -141
  54. package/dist/main.js.map +1 -1
  55. package/dist/migrate.d.ts +3 -2
  56. package/dist/migrate.d.ts.map +1 -1
  57. package/dist/migrate.js +25 -3
  58. package/dist/migrate.js.map +1 -1
  59. package/dist/migrator/access.d.ts.map +1 -1
  60. package/dist/migrator/access.js +44 -24
  61. package/dist/migrator/access.js.map +1 -1
  62. package/dist/migrator/call.d.ts.map +1 -1
  63. package/dist/migrator/call.js +254 -217
  64. package/dist/migrator/call.js.map +1 -1
  65. package/dist/migrator/concat.d.ts.map +1 -1
  66. package/dist/migrator/concat.js +15 -2
  67. package/dist/migrator/concat.js.map +1 -1
  68. package/dist/migrator/interface.d.ts +3 -1
  69. package/dist/migrator/interface.d.ts.map +1 -1
  70. package/dist/migrator/interface.js.map +1 -1
  71. package/dist/migrator/node.js +1 -1
  72. package/dist/migrator/node.js.map +1 -1
  73. package/dist/migrator/operator.d.ts.map +1 -1
  74. package/dist/migrator/operator.js +43 -29
  75. package/dist/migrator/operator.js.map +1 -1
  76. package/dist/migrator/state.d.ts +2 -2
  77. package/dist/migrator/state.d.ts.map +1 -1
  78. package/dist/migrator/state.js +1 -2
  79. package/dist/migrator/state.js.map +1 -1
  80. package/dist/migrator/symbol.d.ts.map +1 -1
  81. package/dist/migrator/symbol.js +13 -0
  82. package/dist/migrator/symbol.js.map +1 -1
  83. package/dist/migrator/to-type.d.ts.map +1 -1
  84. package/dist/migrator/to-type.js +20 -3
  85. package/dist/migrator/to-type.js.map +1 -1
  86. package/dist/migrator/utils.d.ts +4 -0
  87. package/dist/migrator/utils.d.ts.map +1 -1
  88. package/dist/migrator/utils.js +25 -0
  89. package/dist/migrator/utils.js.map +1 -1
  90. package/dist/parser.d.ts +2 -2
  91. package/dist/parser.d.ts.map +1 -1
  92. package/dist/parser.js +25 -8
  93. package/dist/parser.js.map +1 -1
  94. package/dist/re-exports.d.ts +4 -0
  95. package/dist/re-exports.d.ts.map +1 -0
  96. package/dist/re-exports.js +3 -0
  97. package/dist/re-exports.js.map +1 -0
  98. package/dist/scope.d.ts +13 -16
  99. package/dist/scope.d.ts.map +1 -1
  100. package/dist/scope.js +56 -49
  101. package/dist/scope.js.map +1 -1
  102. package/dist/type.d.ts +14 -5
  103. package/dist/type.d.ts.map +1 -1
  104. package/dist/type.js +35 -11
  105. package/dist/type.js.map +1 -1
  106. package/package.json +7 -4
  107. package/src/analyze.ts +77 -37
  108. package/src/definitions/argument.ts +2 -12
  109. package/src/definitions/constraint.ts +3 -3
  110. package/src/definitions/parameter-decoration.ts +3 -9
  111. package/src/definitions/parameter-group.ts +4 -19
  112. package/src/definitions/parameter.ts +62 -61
  113. package/src/definitions/utils.ts +175 -0
  114. package/src/definitions/variable.ts +1 -6
  115. package/src/definitions.ts +1 -0
  116. package/src/eval.ts +13 -26
  117. package/src/expression.ts +14 -6
  118. package/src/index.ts +3 -1
  119. package/src/interface.ts +35 -0
  120. package/src/main.ts +213 -194
  121. package/src/migrate.ts +30 -6
  122. package/src/migrator/access.ts +49 -32
  123. package/src/migrator/call.ts +246 -203
  124. package/src/migrator/concat.ts +15 -2
  125. package/src/migrator/interface.ts +3 -1
  126. package/src/migrator/node.ts +1 -1
  127. package/src/migrator/operator.ts +47 -33
  128. package/src/migrator/state.ts +2 -2
  129. package/src/migrator/symbol.ts +13 -0
  130. package/src/migrator/to-type.ts +22 -3
  131. package/src/migrator/utils.ts +29 -0
  132. package/src/parser.ts +27 -8
  133. package/src/re-exports.ts +28 -0
  134. package/src/scope.ts +75 -61
  135. package/src/type.ts +32 -11
  136. package/tests/analyze.ts +40 -6
  137. package/tests/compile.ts +65 -0
  138. package/tests/condition.ts +13 -5
  139. package/tests/definition.ts +205 -18
  140. package/tests/eval-complex.ts +7 -10
  141. package/tests/eval.ts +59 -12
  142. package/tests/import.ts +18 -4
  143. package/tests/main.ts +9 -0
  144. package/tests/migrate.ts +202 -0
  145. package/tests/scope.ts +3 -3
  146. package/tests/template.ts +36 -0
  147. package/dist/context.d.ts +0 -41
  148. package/dist/context.d.ts.map +0 -1
  149. package/dist/context.js +0 -18
  150. package/dist/context.js.map +0 -1
  151. package/jest.config.js +0 -3
  152. package/src/context.ts +0 -54
  153. package/tests/tsconfig.json +0 -3
  154. package/tsconfig.json +0 -3
package/tests/main.ts ADDED
@@ -0,0 +1,9 @@
1
+ import { Evaluator } from '../dist/main.js';
2
+
3
+ describe('Evaluator', () => {
4
+ it('should have logger', () => {
5
+ expect(new Evaluator().logger).toBeTruthy();
6
+ expect(new Evaluator(null).logger).toBeTruthy();
7
+ expect(new Evaluator({}).logger).toBeTruthy();
8
+ });
9
+ });
@@ -0,0 +1,202 @@
1
+ import { migrateMathJs } from '@cloudpss/expression/migrate';
2
+ import type { ExpressionSource } from '../dist/expression.js';
3
+ import { Scope } from '../dist/scope.js';
4
+ import { Evaluator, Expression } from '../dist/index.js';
5
+ import dedent from 'dedent';
6
+
7
+ const s = new Scope({
8
+ a: [1, 2, 3],
9
+ m: [
10
+ [1, 2],
11
+ [3, 4],
12
+ ],
13
+ f: 1,
14
+ s: 'abc',
15
+ b: false,
16
+ o: {
17
+ x: 1,
18
+ y: 2,
19
+ },
20
+ });
21
+ const e = new Evaluator();
22
+
23
+ describe('migrate', () => {
24
+ it('should migrate constant expressions', () => {
25
+ const m = (e: string) => migrateMathJs(e as ExpressionSource, false, undefined);
26
+ expect(m('')).toBe('');
27
+ expect(m(' ')).toBe('');
28
+ expect(m('undefined')).toBe('');
29
+ expect(m('null')).toBe('nil');
30
+ expect(m('true')).toBe('true');
31
+ expect(m('false')).toBe('false');
32
+ expect(m('123')).toBe('123');
33
+ expect(m('-123.45e+6')).toBe('-123.45e+6');
34
+ expect(m('+123.45e-6')).toBe('+123.45e-6');
35
+ expect(m('.45e-6')).toBe('4.5e-7');
36
+ });
37
+
38
+ it.each([
39
+ ['sin(0)', 'sin(0)', 0],
40
+ ['sin(f)', 'sin(f)', Math.sin(1)],
41
+ ['f', 'f', 1],
42
+ ['$a', '$a', null],
43
+ ['$a + 1', 'matrix.add($a, 1)', 1],
44
+ ['size(a)[1]', 'len(a)', 3],
45
+ ['size(s)[1]', 'len(chars(s))', 3],
46
+ ['(a).length', 'len((a))', 3],
47
+ ['(s).length', 'len(chars((s)))', 3],
48
+ ['count(s)', 'len(chars(s))', 3],
49
+ ['b ? true : false', 'b', false],
50
+ ['b ? false : true', '!b', true],
51
+ ['is(f, "string") ? count(f) != 0 : false', "type(f) == 'string' && f != ''", false],
52
+ ['is(f, "string") ? equalText(f, "xyz") : false', "f == 'xyz'", false],
53
+ ['b ? 1 : 2', 'if b { 1 } else { 2 }', 2],
54
+ ['f >0', 'f > 0', true],
55
+ ['f >=0', 'f >= 0', true],
56
+ ['f <0', 'f < 0', false],
57
+ ['1<f<2', '1 < f && f < 2', false],
58
+ ['1 + 2 + f', '1 + 2 + f', 4],
59
+ ['PI', '@pi', Math.PI],
60
+ ['pi', '@pi', Math.PI],
61
+ ['E', '@e', Math.E],
62
+ ['e', '@e', Math.E],
63
+ ['[1,2,3]', '[1, 2, 3]', [1, 2, 3]],
64
+ ['[1;2;3]', '[[1], [2], [3]]', [[1], [2], [3]]],
65
+ ['{ x: 1, y: 2 }', '(x: 1, y: 2)', { x: 1, y: 2 }],
66
+ ['{ x: f, y: b }', '(x: f, y: b)', { x: 1, y: false }],
67
+ ['equalText("a", "b")', "'a' == 'b'", false],
68
+ ['equalText("a", s)', "'a' == s", false],
69
+ ['equalText(s, "b")', "s == 'b'", false],
70
+ ['equalText(s, f)', 's == to_string(f)', false],
71
+ ['b | b', 'to_number(b || b)', 0],
72
+ ['b & b', 'to_number(b && b)', 0],
73
+ ['not b', '!b', true],
74
+ ['12!', 'factorial(12)', 479_001_600],
75
+ ['- b', '-b', -0],
76
+ ['+ b', '+b', +0],
77
+ ['- f', '-f', -1],
78
+ ['size(f)', 'matrix.size(f)', []],
79
+ ['size(m)', 'matrix.size(m)', [2, 2]],
80
+ [
81
+ 'u.length',
82
+ dedent`
83
+ return @@length(u);
84
+ // # 帮助函数
85
+ fn @@length(x) { if type(x) == 'string' { len(chars(x)) } else if type(x) == 'array' { len(x) } else { x.length } }
86
+ // # 转换日志
87
+ // - W: 符号 'u' 未定义
88
+ // # 原始 math.js 表达式
89
+ // u.length`,
90
+ null,
91
+ ],
92
+ ['o["x"]', 'o.x', 1],
93
+ ['o.x', 'o.x', 1],
94
+ [
95
+ 'o[s]',
96
+ dedent`
97
+ return o[@@index(s)];
98
+ // # 帮助函数
99
+ fn @@index(index) { if type(index) == 'number' { index - 1 } else { index } }
100
+ // # 原始 math.js 表达式
101
+ // o[s]`,
102
+ null,
103
+ ],
104
+ [
105
+ 'o[f]',
106
+ dedent`
107
+ return o[@@index(f)];
108
+ // # 帮助函数
109
+ fn @@index(index) { if type(index) == 'number' { index - 1 } else { index } }
110
+ // # 原始 math.js 表达式
111
+ // o[f]`,
112
+ null,
113
+ ],
114
+ [`{x:1,y:2}['x']`, `(x: 1, y: 2).x`, 1],
115
+ [`{x:1,y:2}[s]`, `(x: 1, y: 2)[s]`, null],
116
+ [`[1,2,3][f]`, `[1, 2, 3][f - 1]`, 1],
117
+ ['"abc"[1]', "chars('abc')[0]", 'a'],
118
+ ['s[1]', 'chars(s)[0]', 'a'],
119
+ ['[1,2,3][2]', '[1, 2, 3][1]', 2],
120
+ ['a[2]', 'a[1]', 2],
121
+ [
122
+ 'a[u]',
123
+ dedent`
124
+ return a[@@index(u)];
125
+ // # 帮助函数
126
+ fn @@index(index) { if type(index) == 'number' { index - 1 } else { index } }
127
+ // # 转换日志
128
+ // - W: 符号 'u' 未定义
129
+ // # 原始 math.js 表达式
130
+ // a[u]`,
131
+ 1,
132
+ ],
133
+ [
134
+ 'u[1]',
135
+ dedent`
136
+ return @@maybe_chars(u)[0];
137
+ // # 帮助函数
138
+ fn @@maybe_chars(x) { if type(x) == 'string' { chars(x) } else { x } }
139
+ // # 转换日志
140
+ // - W: 符号 'u' 未定义
141
+ // # 原始 math.js 表达式
142
+ // u[1]`,
143
+ null,
144
+ ],
145
+ [
146
+ 'm[1,2]',
147
+ dedent`
148
+ m[0][1]
149
+ // # 转换日志
150
+ // - W: 多维索引已拆分为多次单维索引
151
+ // # 原始 math.js 表达式
152
+ // m[1,2]`,
153
+ 2,
154
+ ],
155
+ [
156
+ 'm[f,2]',
157
+ dedent`
158
+ m[f - 1][1]
159
+ // # 转换日志
160
+ // - W: 多维索引已拆分为多次单维索引
161
+ // # 原始 math.js 表达式
162
+ // m[f,2]`,
163
+ 2,
164
+ ],
165
+ [
166
+ 'filter(x) = x > 1; a.filter(filter)',
167
+ dedent`
168
+ fn filter(x) { x > 1 }
169
+ a::global.filter(filter)
170
+ // # 转换日志
171
+ // - W: 使用了非精确转换的语法或函数,结果可能不准确
172
+ // - W: '>' 不支持矩阵,计算结果可能不一致
173
+ // # 原始 math.js 表达式
174
+ // filter(x) = x > 1; a.filter(filter)`,
175
+ [2, 3],
176
+ ],
177
+ [`print('hello world, $s!', {s:s})`, '`hello world, $(s)!`', `hello world, abc!`],
178
+ [`print('hello world, $1!', [s])`, '`hello world, $(s)!`', `hello world, abc!`],
179
+ [`concat('Value: ', f, string(1 >= 0))`, '`Value: $(f)$(1 >= 0)`', 'Value: 1true'],
180
+ [`concat(s, f, string(1 >= 0))`, '`$(s)$(f)$(1 >= 0)`', 'abc1true'],
181
+ [
182
+ String.raw`'Value: '.concat('\\x', '$', 1, f, string(1 >= 0))`,
183
+ '`Value: \\\\x\\$1$(f)$(1 >= 0)`',
184
+ String.raw`Value: \x$11true`,
185
+ ],
186
+ [
187
+ `concat([1], a)`,
188
+ dedent`
189
+ flatten([[1], a])
190
+ // # 转换日志
191
+ // - W: 矩阵连接时结果可能不一致
192
+ // # 原始 math.js 表达式
193
+ // concat([1], a)
194
+ `,
195
+ [1, 1, 2, 3],
196
+ ],
197
+ ])('should migrate expression: %s', (f, t, r) => {
198
+ const migrated = migrateMathJs(f as ExpressionSource, false, s);
199
+ expect(migrated).toBe(t);
200
+ expect(e.evaluate(Expression(migrated), s)).toEqual(r);
201
+ });
202
+ });
package/tests/scope.ts CHANGED
@@ -10,7 +10,7 @@ describe('Scope should work correctly', () => {
10
10
  it('can create from function', () => {
11
11
  const s = new Scope((k) => (k === 'a' ? 12 : undefined), false);
12
12
  expect(e.evaluate(Expression('a'), s)).toBe(12);
13
- expect(e.evaluate(Expression('b'), s)).toBe(undefined);
13
+ expect(e.evaluate(Expression('b'), s)).toBe(null);
14
14
  });
15
15
  it('can create from object', () => {
16
16
  const s = new Scope({ a: 12, b: Expression('a + 1') }, false);
@@ -22,8 +22,8 @@ describe('Scope should work correctly', () => {
22
22
  describe('Scope should not leak dangerous objects', () => {
23
23
  it('should not access prototype fields', () => {
24
24
  const s = new Scope({}, false);
25
- expect(e.evaluate(Expression('__proto__'), s)).toBe(undefined);
26
- expect(e.evaluate(Expression('toString'), s)).toBe(undefined);
25
+ expect(e.evaluate(Expression('__proto__'), s)).toBe(null);
26
+ expect(e.evaluate(Expression('toString'), s)).toBe(null);
27
27
  });
28
28
  it('should access same name props', () => {
29
29
  const s = new Scope({ ['__proto__']: 12, toString: 'x' }, false);
@@ -0,0 +1,36 @@
1
+ import { Evaluator, Expression, Scope } from '../dist/index.js';
2
+
3
+ const e = new Evaluator();
4
+ const s = new Scope({}, false);
5
+
6
+ describe('Evaluator.template should work correctly', () => {
7
+ it('should eval null', () => {
8
+ const result = e.template(null, s);
9
+ expect(result).toBe('');
10
+ });
11
+ it('should eval undefined', () => {
12
+ const result = e.template(undefined, s);
13
+ expect(result).toBe('');
14
+ });
15
+ it('should eval empty', () => {
16
+ const result = e.template('', s);
17
+ expect(result).toBe('');
18
+ });
19
+ it('should eval const', () => {
20
+ const result = e.template('12', s);
21
+ expect(result).toBe('12');
22
+ });
23
+
24
+ it('should eval exp', () => {
25
+ const result = e.template('$(1 + 1)', s);
26
+ expect(result).toBe('2');
27
+ });
28
+ it('should eval error', () => {
29
+ const result = e.template('$(exp+++)', s);
30
+ expect(result).toBe('$(exp+++)');
31
+ });
32
+ it('should eval bad type', () => {
33
+ // @ts-expect-error 测试错误输入
34
+ expect(() => e.template(new Date(0), s)).toThrow(TypeError);
35
+ });
36
+ });
package/dist/context.d.ts DELETED
@@ -1,41 +0,0 @@
1
- import { LRUCache } from 'lru-cache';
2
- import type { ExpressionCache } from './parser.js';
3
- import type { VmValue } from '@mirascript/mirascript';
4
- /** 日志 */
5
- export interface Logger {
6
- /**
7
- * error
8
- */
9
- error(...args: unknown[]): void;
10
- /**
11
- * warning
12
- */
13
- warn(...args: unknown[]): void;
14
- /**
15
- * info
16
- */
17
- info(...args: unknown[]): void;
18
- /**
19
- * debug
20
- */
21
- debug(...args: unknown[]): void;
22
- }
23
- /** 选项 */
24
- export interface Options {
25
- /** 日志 */
26
- logger: Logger;
27
- /** 表达式缓存 */
28
- expressionCacheSize: number;
29
- }
30
- /** 执行上下文 */
31
- export declare class Context {
32
- constructor(options?: Partial<Options>);
33
- readonly imported: Map<string, VmValue>;
34
- /** Logger */
35
- get logger(): Logger;
36
- /** 选项 */
37
- readonly options: Options;
38
- /** 表达式缓存 */
39
- readonly expressionCache: LRUCache<string, ExpressionCache, unknown>;
40
- }
41
- //# sourceMappingURL=context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD,SAAS;AACT,MAAM,WAAW,MAAM;IACnB;;OAEG;IACH,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChC;;OAEG;IACH,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/B;;OAEG;IACH,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/B;;OAEG;IACH,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CACnC;AAED,SAAS;AACT,MAAM,WAAW,OAAO;IACpB,SAAS;IACT,MAAM,EAAE,MAAM,CAAC;IACf,YAAY;IACZ,mBAAmB,EAAE,MAAM,CAAC;CAC/B;AAOD,YAAY;AACZ,qBAAa,OAAO;gBACJ,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;IAItC,QAAQ,CAAC,QAAQ,uBAA8B;IAC/C,aAAa;IACb,IAAI,MAAM,IAAI,MAAM,CAEnB;IACD,SAAS;IACT,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,YAAY;IACZ,QAAQ,CAAC,eAAe,6CAAC;CAC5B"}
package/dist/context.js DELETED
@@ -1,18 +0,0 @@
1
- import { LRUCache } from 'lru-cache';
2
- const defaultOptions = {
3
- logger: console,
4
- expressionCacheSize: 50,
5
- };
6
- /** 执行上下文 */
7
- export class Context {
8
- constructor(options) {
9
- this.imported = new Map();
10
- this.options = { ...options, ...defaultOptions };
11
- this.expressionCache = new LRUCache({ max: this.options.expressionCacheSize });
12
- }
13
- /** Logger */
14
- get logger() {
15
- return this.options.logger ?? console;
16
- }
17
- }
18
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAgCrC,MAAM,cAAc,GAAY;IAC5B,MAAM,EAAE,OAAO;IACf,mBAAmB,EAAE,EAAE;CAC1B,CAAC;AAEF,YAAY;AACZ,MAAM,OAAO,OAAO;IAChB,YAAY,OAA0B;QAI7B,aAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;QAH3C,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;QACjD,IAAI,CAAC,eAAe,GAAG,IAAI,QAAQ,CAA0B,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC5G,CAAC;IAED,aAAa;IACb,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC;IAC1C,CAAC;CAMJ"}
package/jest.config.js DELETED
@@ -1,3 +0,0 @@
1
- import { config } from '../jest.config.js';
2
-
3
- export default { ...config };
package/src/context.ts DELETED
@@ -1,54 +0,0 @@
1
- import { LRUCache } from 'lru-cache';
2
- import type { ExpressionCache } from './parser.js';
3
- import type { VmValue } from '@mirascript/mirascript';
4
-
5
- /** 日志 */
6
- export interface Logger {
7
- /**
8
- * error
9
- */
10
- error(...args: unknown[]): void;
11
- /**
12
- * warning
13
- */
14
- warn(...args: unknown[]): void;
15
- /**
16
- * info
17
- */
18
- info(...args: unknown[]): void;
19
- /**
20
- * debug
21
- */
22
- debug(...args: unknown[]): void;
23
- }
24
-
25
- /** 选项 */
26
- export interface Options {
27
- /** 日志 */
28
- logger: Logger;
29
- /** 表达式缓存 */
30
- expressionCacheSize: number;
31
- }
32
-
33
- const defaultOptions: Options = {
34
- logger: console,
35
- expressionCacheSize: 50,
36
- };
37
-
38
- /** 执行上下文 */
39
- export class Context {
40
- constructor(options?: Partial<Options>) {
41
- this.options = { ...options, ...defaultOptions };
42
- this.expressionCache = new LRUCache<string, ExpressionCache>({ max: this.options.expressionCacheSize });
43
- }
44
- readonly imported = new Map<string, VmValue>();
45
- /** Logger */
46
- get logger(): Logger {
47
- return this.options.logger ?? console;
48
- }
49
- /** 选项 */
50
- readonly options: Options;
51
-
52
- /** 表达式缓存 */
53
- readonly expressionCache;
54
- }
@@ -1,3 +0,0 @@
1
- {
2
- "extends": "../../tsconfig.test"
3
- }
package/tsconfig.json DELETED
@@ -1,3 +0,0 @@
1
- {
2
- "extends": "../tsconfig.build"
3
- }