@cloudpss/expression 0.6.0-alpha.9 → 0.6.0

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 (157) hide show
  1. package/dist/analyze.d.ts +6 -3
  2. package/dist/analyze.d.ts.map +1 -1
  3. package/dist/analyze.js +13 -33
  4. package/dist/analyze.js.map +1 -1
  5. package/dist/definitions/argument.d.ts +3 -11
  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-group.js +4 -4
  12. package/dist/definitions/parameter-group.js.map +1 -1
  13. package/dist/definitions/parameter.d.ts +22 -14
  14. package/dist/definitions/parameter.d.ts.map +1 -1
  15. package/dist/definitions/parameter.js +10 -1
  16. package/dist/definitions/parameter.js.map +1 -1
  17. package/dist/definitions/utils.d.ts +28 -0
  18. package/dist/definitions/utils.d.ts.map +1 -0
  19. package/dist/definitions/utils.js +272 -0
  20. package/dist/definitions/utils.js.map +1 -0
  21. package/dist/definitions/variable.js +1 -1
  22. package/dist/definitions/variable.js.map +1 -1
  23. package/dist/definitions.d.ts +1 -2
  24. package/dist/definitions.d.ts.map +1 -1
  25. package/dist/definitions.js +1 -1
  26. package/dist/definitions.js.map +1 -1
  27. package/dist/eval.d.ts +3 -5
  28. package/dist/eval.d.ts.map +1 -1
  29. package/dist/eval.js +12 -20
  30. package/dist/eval.js.map +1 -1
  31. package/dist/expression.d.ts +10 -4
  32. package/dist/expression.d.ts.map +1 -1
  33. package/dist/expression.js +6 -6
  34. package/dist/expression.js.map +1 -1
  35. package/dist/index.d.ts +3 -1
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +1 -0
  38. package/dist/index.js.map +1 -1
  39. package/dist/interface.d.ts +30 -0
  40. package/dist/interface.d.ts.map +1 -0
  41. package/dist/interface.js +6 -0
  42. package/dist/interface.js.map +1 -0
  43. package/dist/main.d.ts +41 -28
  44. package/dist/main.d.ts.map +1 -1
  45. package/dist/main.js +165 -149
  46. package/dist/main.js.map +1 -1
  47. package/dist/migrate.d.ts +1 -1
  48. package/dist/migrate.d.ts.map +1 -1
  49. package/dist/migrate.js +25 -4
  50. package/dist/migrate.js.map +1 -1
  51. package/dist/migrator/access.d.ts.map +1 -1
  52. package/dist/migrator/access.js +64 -29
  53. package/dist/migrator/access.js.map +1 -1
  54. package/dist/migrator/call.d.ts.map +1 -1
  55. package/dist/migrator/call.js +298 -201
  56. package/dist/migrator/call.js.map +1 -1
  57. package/dist/migrator/concat.d.ts.map +1 -1
  58. package/dist/migrator/concat.js +15 -2
  59. package/dist/migrator/concat.js.map +1 -1
  60. package/dist/migrator/function.d.ts +6 -0
  61. package/dist/migrator/function.d.ts.map +1 -0
  62. package/dist/migrator/function.js +25 -0
  63. package/dist/migrator/function.js.map +1 -0
  64. package/dist/migrator/interface.d.ts +3 -1
  65. package/dist/migrator/interface.d.ts.map +1 -1
  66. package/dist/migrator/interface.js.map +1 -1
  67. package/dist/migrator/node.d.ts.map +1 -1
  68. package/dist/migrator/node.js +55 -7
  69. package/dist/migrator/node.js.map +1 -1
  70. package/dist/migrator/operator.d.ts.map +1 -1
  71. package/dist/migrator/operator.js +107 -60
  72. package/dist/migrator/operator.js.map +1 -1
  73. package/dist/migrator/serialize.d.ts +4 -0
  74. package/dist/migrator/serialize.d.ts.map +1 -0
  75. package/dist/migrator/serialize.js +21 -0
  76. package/dist/migrator/serialize.js.map +1 -0
  77. package/dist/migrator/special.d.ts.map +1 -1
  78. package/dist/migrator/special.js +31 -0
  79. package/dist/migrator/special.js.map +1 -1
  80. package/dist/migrator/state.d.ts +4 -4
  81. package/dist/migrator/state.d.ts.map +1 -1
  82. package/dist/migrator/state.js +29 -31
  83. package/dist/migrator/state.js.map +1 -1
  84. package/dist/migrator/symbol.d.ts.map +1 -1
  85. package/dist/migrator/symbol.js +34 -12
  86. package/dist/migrator/symbol.js.map +1 -1
  87. package/dist/migrator/to-type.d.ts.map +1 -1
  88. package/dist/migrator/to-type.js +21 -4
  89. package/dist/migrator/to-type.js.map +1 -1
  90. package/dist/migrator/utils.d.ts +6 -0
  91. package/dist/migrator/utils.d.ts.map +1 -1
  92. package/dist/migrator/utils.js +48 -1
  93. package/dist/migrator/utils.js.map +1 -1
  94. package/dist/parser.d.ts +2 -2
  95. package/dist/parser.d.ts.map +1 -1
  96. package/dist/parser.js +27 -8
  97. package/dist/parser.js.map +1 -1
  98. package/dist/re-exports.d.ts +4 -0
  99. package/dist/re-exports.d.ts.map +1 -0
  100. package/dist/re-exports.js +3 -0
  101. package/dist/re-exports.js.map +1 -0
  102. package/dist/scope.d.ts +16 -17
  103. package/dist/scope.d.ts.map +1 -1
  104. package/dist/scope.js +127 -66
  105. package/dist/scope.js.map +1 -1
  106. package/dist/type.d.ts +22 -10
  107. package/dist/type.d.ts.map +1 -1
  108. package/dist/type.js +21 -24
  109. package/dist/type.js.map +1 -1
  110. package/package.json +8 -5
  111. package/src/analyze.ts +20 -39
  112. package/src/definitions/argument.ts +3 -13
  113. package/src/definitions/constraint.ts +3 -3
  114. package/src/definitions/parameter-group.ts +4 -4
  115. package/src/definitions/parameter.ts +47 -24
  116. package/src/definitions/utils.ts +288 -0
  117. package/src/definitions/variable.ts +1 -1
  118. package/src/definitions.ts +1 -28
  119. package/src/eval.ts +16 -25
  120. package/src/expression.ts +16 -8
  121. package/src/index.ts +3 -1
  122. package/src/interface.ts +35 -0
  123. package/src/main.ts +232 -200
  124. package/src/migrate.ts +27 -4
  125. package/src/migrator/access.ts +67 -37
  126. package/src/migrator/call.ts +287 -190
  127. package/src/migrator/concat.ts +15 -2
  128. package/src/migrator/function.ts +27 -0
  129. package/src/migrator/interface.ts +3 -1
  130. package/src/migrator/node.ts +56 -6
  131. package/src/migrator/operator.ts +110 -64
  132. package/src/migrator/serialize.ts +21 -0
  133. package/src/migrator/special.ts +31 -0
  134. package/src/migrator/state.ts +31 -34
  135. package/src/migrator/symbol.ts +33 -12
  136. package/src/migrator/to-type.ts +23 -4
  137. package/src/migrator/utils.ts +48 -1
  138. package/src/parser.ts +33 -8
  139. package/src/re-exports.ts +47 -0
  140. package/src/scope.ts +146 -77
  141. package/src/type.ts +40 -25
  142. package/tests/analyze.ts +45 -6
  143. package/tests/compile.ts +65 -0
  144. package/tests/condition.ts +33 -17
  145. package/tests/definition.ts +237 -18
  146. package/tests/eval-complex.ts +79 -13
  147. package/tests/eval.ts +59 -12
  148. package/tests/import.ts +21 -7
  149. package/tests/main.ts +58 -0
  150. package/tests/migrate.ts +317 -0
  151. package/tests/scope.ts +3 -3
  152. package/tests/template.ts +36 -0
  153. package/dist/context.d.ts +0 -41
  154. package/dist/context.d.ts.map +0 -1
  155. package/dist/context.js +0 -18
  156. package/dist/context.js.map +0 -1
  157. package/src/context.ts +0 -54
@@ -0,0 +1,272 @@
1
+ import { klona } from 'klona';
2
+ import { isVmArray, isVmConst, isVmRecord } from '@mirascript/mirascript';
3
+ import { Expression, isExpression } from '../expression.js';
4
+ import { TypeInfo } from '../type.js';
5
+ const { isArray } = Array;
6
+ /** 回退值 */
7
+ function toFallback(fallback) {
8
+ if (fallback === undefined) {
9
+ throw new TypeError('Conversion failed and no fallback value provided');
10
+ }
11
+ return fallback;
12
+ }
13
+ /**
14
+ * 通过枚举参数定义推测枚举类型
15
+ */
16
+ export function choiceParameterType(definition) {
17
+ // 首先根据参数类型确定默认类型
18
+ let defaultType = definition.type === 'logical' ? 'boolean' : 'number';
19
+ // 然后根据默认值调整默认类型
20
+ const { value, choices } = definition;
21
+ if (definition.type === 'multiSelect' && Array.isArray(value)) {
22
+ const v = value[0];
23
+ if (isChoiceValue(v)) {
24
+ defaultType = typeof v;
25
+ }
26
+ }
27
+ else {
28
+ if (isChoiceValue(value)) {
29
+ defaultType = typeof value;
30
+ }
31
+ }
32
+ if (choices == null || typeof choices == 'function' || isExpression(choices) || !choices.length) {
33
+ return defaultType;
34
+ }
35
+ // 认为枚举选项值类型一致,推测枚举类型
36
+ for (const choice of choices) {
37
+ const v = choice?.key;
38
+ if (!isChoiceValue(v))
39
+ continue;
40
+ return typeof v;
41
+ }
42
+ return defaultType;
43
+ }
44
+ /** 是否为枚举值类型 */
45
+ export function isChoiceValue(value) {
46
+ return typeof value == 'string' || typeof value == 'number' || typeof value == 'boolean';
47
+ }
48
+ const defaultConverter = (value, defaults) => {
49
+ if (value != null)
50
+ return value;
51
+ return toFallback(defaults);
52
+ };
53
+ /** 转换数组参数类型 */
54
+ function createArrayConverter(itemConverter = null) {
55
+ if (itemConverter == null) {
56
+ return (value, defaults) => {
57
+ if (value == null)
58
+ return [];
59
+ if (isVmArray(value))
60
+ return value;
61
+ if (isVmConst(value))
62
+ return [value];
63
+ return toFallback(defaults);
64
+ };
65
+ }
66
+ return (value, defaults) => {
67
+ if (value == null)
68
+ return [];
69
+ let arr;
70
+ if (isVmArray(value))
71
+ arr = value;
72
+ else if (isVmConst(value))
73
+ arr = [value];
74
+ else
75
+ return toFallback(defaults);
76
+ if (arr.length === 0)
77
+ return arr;
78
+ let ret = null;
79
+ for (let i = 0; i < arr.length; i++) {
80
+ const el = arr[i];
81
+ const r = itemConverter(el, FALLBACK);
82
+ if (r === FALLBACK)
83
+ return toFallback(defaults);
84
+ if (!Object.is(r, el)) {
85
+ ret ??= [...arr];
86
+ ret[i] = r;
87
+ }
88
+ }
89
+ return ret ?? arr;
90
+ };
91
+ }
92
+ /** 转换记录参数类型 */
93
+ function createRecordConverter(fieldConverters = null) {
94
+ if (fieldConverters == null) {
95
+ return (value, defaults) => {
96
+ if (isVmRecord(value))
97
+ return value;
98
+ if (isVmArray(value)) {
99
+ const obj = {};
100
+ for (let i = 0; i < value.length; i++) {
101
+ obj[i] = value[i] ?? null;
102
+ }
103
+ return obj;
104
+ }
105
+ return toFallback(defaults);
106
+ };
107
+ }
108
+ return (value, defaults) => {
109
+ let record;
110
+ if (isVmRecord(value))
111
+ record = value;
112
+ else if (isVmArray(value)) {
113
+ const obj = {};
114
+ for (let i = 0; i < value.length; i++) {
115
+ obj[i] = value[i] ?? null;
116
+ }
117
+ record = obj;
118
+ }
119
+ else
120
+ return toFallback(defaults);
121
+ let ret = null;
122
+ for (const [key, converter] of fieldConverters) {
123
+ if (typeof converter != 'function')
124
+ continue;
125
+ const fieldValue = record[key];
126
+ const r = converter(fieldValue, FALLBACK);
127
+ if (r === FALLBACK)
128
+ return toFallback(defaults);
129
+ if (!Object.is(r, fieldValue)) {
130
+ ret ??= { ...record };
131
+ ret[key] = r;
132
+ }
133
+ }
134
+ return ret ?? record;
135
+ };
136
+ }
137
+ const FALLBACK = Symbol('FALLBACK');
138
+ /** 转换推测参数类型,不回退到 {@link Parameter.value} 提供的默认值 */
139
+ export function argumentConverter(definition) {
140
+ switch (definition.type) {
141
+ case 'real':
142
+ case 'integer':
143
+ return TypeInfo.converter('number');
144
+ case 'text':
145
+ case 'file':
146
+ case 'code':
147
+ case 'pinLike':
148
+ case 'cssColor':
149
+ case 'cssBackground':
150
+ case 'resourceId':
151
+ return TypeInfo.converter('string');
152
+ case 'choice':
153
+ case 'logical': {
154
+ const type = choiceParameterType(definition);
155
+ return TypeInfo.converter(type);
156
+ }
157
+ case 'multiSelect': {
158
+ const type = choiceParameterType(definition);
159
+ const to = TypeInfo.converter(type);
160
+ return createArrayConverter(to);
161
+ }
162
+ case 'table': {
163
+ const { columns } = definition;
164
+ if (!isArray(columns) || !columns.length) {
165
+ return createArrayConverter();
166
+ }
167
+ if (columns.length === 1) {
168
+ const item = argumentConverter(columns[0]);
169
+ return createArrayConverter(item);
170
+ }
171
+ else {
172
+ return createArrayConverter(createRecordConverter(columns.map((col, index) => [col.key || String(index), argumentConverter(col)])));
173
+ }
174
+ }
175
+ case 'grouped':
176
+ case 'record': {
177
+ return createRecordConverter();
178
+ }
179
+ default:
180
+ return defaultConverter;
181
+ }
182
+ }
183
+ /**
184
+ * 转换参数值的类型,不回退到 {@link Parameter.value} 提供的默认值
185
+ * 转换失败时返回 null
186
+ */
187
+ export function toArgumentValue(value, definition) {
188
+ const converter = argumentConverter(definition);
189
+ return converter(value, null);
190
+ }
191
+ /** 是否为包含参数组的参数定义数组 */
192
+ function checkParameterDefinitions(value) {
193
+ return value != null && isArray(value) && value.length > 0;
194
+ }
195
+ /** 查找指定参数 */
196
+ function findParameterImpl(items, key) {
197
+ if (items.length === 0)
198
+ return undefined;
199
+ for (const item of items) {
200
+ if (item == null)
201
+ continue;
202
+ if (item.key === key)
203
+ return item;
204
+ }
205
+ return undefined;
206
+ }
207
+ /** 查找指定参数 */
208
+ export function findParameter(definition, key) {
209
+ if (!checkParameterDefinitions(definition))
210
+ return undefined;
211
+ for (const group of definition) {
212
+ if (group == null || !isArray(group.items))
213
+ continue;
214
+ const found = findParameterImpl(group.items, key);
215
+ if (found)
216
+ return found;
217
+ }
218
+ return undefined;
219
+ }
220
+ /** 获取参数默认值,修复现有的参数,填充缺失的参数,删除未定义的参数 */
221
+ export function fillArgumentMap(definition, args) {
222
+ args ??= {};
223
+ if (!checkParameterDefinitions(definition))
224
+ return args;
225
+ const keys = new Set(Object.keys(args));
226
+ // 根据定义填充或修复参数
227
+ for (const group of definition) {
228
+ for (const param of group.items) {
229
+ const key = param.key;
230
+ if (!key)
231
+ continue;
232
+ const currentValue = keys.has(key) ? args[key] : undefined;
233
+ if (currentValue == null) {
234
+ // 使用默认值填充
235
+ const defaultValue = param.value;
236
+ if (isExpression(defaultValue)) {
237
+ args[key] = Expression(defaultValue.source);
238
+ }
239
+ else {
240
+ const value = defaultValue != null && typeof defaultValue == 'object' ? klona(defaultValue) : defaultValue;
241
+ args[key] = toArgumentValue(value, param) ?? value;
242
+ }
243
+ }
244
+ else {
245
+ // 已存在的参数值
246
+ if (isExpression(currentValue)) {
247
+ // 保留表达式
248
+ }
249
+ else {
250
+ // 修复现有的参数值
251
+ const castedValue = toArgumentValue(currentValue, param);
252
+ if (castedValue != null && castedValue !== currentValue) {
253
+ args[key] = castedValue;
254
+ }
255
+ }
256
+ }
257
+ keys.delete(key);
258
+ }
259
+ }
260
+ // 删除多余的参数
261
+ for (const key of keys) {
262
+ // 保留特殊参数和私有字段
263
+ if (typeof key != 'string')
264
+ continue;
265
+ const k0 = key[0];
266
+ if (k0 === '_' || k0 === '$' || k0 === '@' || k0 === 'ɵ')
267
+ continue;
268
+ delete args[key];
269
+ }
270
+ return args;
271
+ }
272
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/definitions/utils.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  export function isVariable(obj) {
3
3
  if (obj == null || typeof obj != 'object')
4
4
  return false;
5
- if ('condition' in obj || 'description' in obj)
5
+ if ('condition' in obj || 'description' in obj || 'type' in obj)
6
6
  return false;
7
7
  const v = obj;
8
8
  return typeof v.key == 'string' && 'value' in v;
@@ -1 +1 @@
1
- {"version":3,"file":"variable.js","sourceRoot":"","sources":["../../src/definitions/variable.ts"],"names":[],"mappings":"AAWA,uBAAuB;AACvB,MAAM,UAAU,UAAU,CAAC,GAAY;IACnC,IAAI,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,IAAI,QAAQ;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,WAAW,IAAI,GAAG,IAAI,aAAa,IAAI,GAAG;QAAE,OAAO,KAAK,CAAC;IAC7D,MAAM,CAAC,GAAG,GAAe,CAAC;IAC1B,OAAO,OAAO,CAAC,CAAC,GAAG,IAAI,QAAQ,IAAI,OAAO,IAAI,CAAC,CAAC;AACpD,CAAC"}
1
+ {"version":3,"file":"variable.js","sourceRoot":"","sources":["../../src/definitions/variable.ts"],"names":[],"mappings":"AAWA,uBAAuB;AACvB,MAAM,UAAU,UAAU,CAAC,GAAY;IACnC,IAAI,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,IAAI,QAAQ;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,WAAW,IAAI,GAAG,IAAI,aAAa,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG;QAAE,OAAO,KAAK,CAAC;IAC9E,MAAM,CAAC,GAAG,GAAe,CAAC;IAC1B,OAAO,OAAO,CAAC,CAAC,GAAG,IAAI,QAAQ,IAAI,OAAO,IAAI,CAAC,CAAC;AACpD,CAAC"}
@@ -4,6 +4,5 @@ export * from './definitions/parameter.js';
4
4
  export * from './definitions/parameter-group.js';
5
5
  export * from './definitions/parameter-decoration.js';
6
6
  export * from './definitions/variable.js';
7
- export { isVmAny, isVmArray, isVmConst, isVmContext, isVmExtern, isVmFunction, isVmImmutable, isVmModule, isVmPrimitive, isVmRecord, isVmValue, } from '@mirascript/mirascript';
8
- export type { VmExtern, VmFunction, VmModule, VmAny, VmArray, VmConst, VmContext, VmImmutable, VmPrimitive, VmRecord, VmUninitialized, VmValue, } from '@mirascript/mirascript';
7
+ export * from './definitions/utils.js';
9
8
  //# sourceMappingURL=definitions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../src/definitions.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AACtD,cAAc,2BAA2B,CAAC;AAE1C,OAAO,EACH,OAAO,EACP,SAAS,EACT,SAAS,EACT,WAAW,EACX,UAAU,EACV,YAAY,EACZ,aAAa,EACb,UAAU,EACV,aAAa,EACb,UAAU,EACV,SAAS,GACZ,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACR,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,KAAK,EACL,OAAO,EACP,OAAO,EACP,SAAS,EACT,WAAW,EACX,WAAW,EACX,QAAQ,EACR,eAAe,EACf,OAAO,GACV,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../src/definitions.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AACtD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC"}
@@ -4,5 +4,5 @@ export * from './definitions/parameter.js';
4
4
  export * from './definitions/parameter-group.js';
5
5
  export * from './definitions/parameter-decoration.js';
6
6
  export * from './definitions/variable.js';
7
- export { isVmAny, isVmArray, isVmConst, isVmContext, isVmExtern, isVmFunction, isVmImmutable, isVmModule, isVmPrimitive, isVmRecord, isVmValue, } from '@mirascript/mirascript';
7
+ export * from './definitions/utils.js';
8
8
  //# sourceMappingURL=definitions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../src/definitions.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AACtD,cAAc,2BAA2B,CAAC;AAE1C,OAAO,EACH,OAAO,EACP,SAAS,EACT,SAAS,EACT,WAAW,EACX,UAAU,EACV,YAAY,EACZ,aAAa,EACb,UAAU,EACV,aAAa,EACb,UAAU,EACV,SAAS,GACZ,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../src/definitions.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AACtD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC"}
package/dist/eval.d.ts CHANGED
@@ -1,15 +1,13 @@
1
1
  import type { VmValue } from '@mirascript/mirascript';
2
- import type { Context } from './context.js';
3
2
  import type { EvalExpressionCache, ExpressionCache } from './parser.js';
4
3
  import { Scope } from './scope.js';
5
- import { TypeInfo } from './type.js';
6
- export declare const DEFAULTS: unique symbol;
4
+ import type { Evaluator } from './main.js';
7
5
  /**
8
6
  * 表达式求值
9
7
  */
10
- export declare function evaluateEval<T extends VmValue>(context: Context, expression: EvalExpressionCache, scope: Scope): T | typeof DEFAULTS;
8
+ export declare function evaluateEval<T extends VmValue>(evaluator: Evaluator | null, expression: EvalExpressionCache, scope: Scope): T | null;
11
9
  /**
12
10
  * 表达式求值
13
11
  */
14
- export declare function evaluate<T extends VmValue, D = T>(context: Context, expression: ExpressionCache, returnType: TypeInfo | null, scope: Scope | undefined, defaults: D): D | T;
12
+ export declare function evaluate<T extends VmValue>(evaluator: Evaluator | null, expression: ExpressionCache, scope: Scope): T | null;
15
13
  //# sourceMappingURL=eval.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../src/eval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,KAAK,EAAU,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,eAAO,MAAM,QAAQ,eAAqB,CAAC;AAE3C;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,OAAO,EAC1C,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,mBAAmB,EAC/B,KAAK,EAAE,KAAK,GACb,CAAC,GAAG,OAAO,QAAQ,CAgBrB;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,GAAG,CAAC,EAC7C,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,eAAe,EAC3B,UAAU,EAAE,QAAQ,GAAG,IAAI,EAC3B,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,QAAQ,EAAE,CAAC,GACZ,CAAC,GAAG,CAAC,CAqBP"}
1
+ {"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../src/eval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,KAAK,EAAU,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,OAAO,EAC1C,SAAS,EAAE,SAAS,GAAG,IAAI,EAC3B,UAAU,EAAE,mBAAmB,EAC/B,KAAK,EAAE,KAAK,GACb,CAAC,GAAG,IAAI,CAgBV;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,OAAO,EACtC,SAAS,EAAE,SAAS,GAAG,IAAI,EAC3B,UAAU,EAAE,eAAe,EAC3B,KAAK,EAAE,KAAK,GACb,CAAC,GAAG,IAAI,CAiBV"}
package/dist/eval.js CHANGED
@@ -1,54 +1,46 @@
1
1
  import { Scope, unwrap } from './scope.js';
2
- import { TypeInfo } from './type.js';
3
- export const DEFAULTS = Symbol('defaults');
4
2
  /**
5
3
  * 表达式求值
6
4
  */
7
- export function evaluateEval(context, expression, scope) {
5
+ export function evaluateEval(evaluator, expression, scope) {
8
6
  try {
9
7
  const result = expression.func(scope.proxy);
10
8
  if (result == null)
11
- return DEFAULTS;
9
+ return null;
12
10
  return unwrap(result);
13
11
  }
14
12
  catch (error) {
15
13
  if (scope.throws)
16
14
  throw error;
17
- context.logger.warn(`Failed to execute expression "${expression.source}": ${error.message || String(error)}.`, {
15
+ (evaluator?.logger ?? console).warn(`Failed to execute expression "${expression.source}": ${error.message || String(error)}.`, {
18
16
  error,
19
17
  scope,
20
18
  });
21
- return DEFAULTS;
19
+ return null;
22
20
  }
23
21
  }
24
22
  /**
25
23
  * 表达式求值
26
24
  */
27
- export function evaluate(context, expression, returnType, scope, defaults) {
28
- let ret;
25
+ export function evaluate(evaluator, expression, scope) {
26
+ let ret = null;
29
27
  if (expression.func != null) {
30
28
  scope ??= new Scope();
31
- const reset = scope.reset(context);
29
+ const reset = scope.reset(evaluator);
32
30
  try {
33
- ret = evaluateEval(context, expression, scope);
31
+ ret = evaluateEval(evaluator, expression, scope);
34
32
  }
35
33
  finally {
36
34
  reset();
37
35
  }
38
36
  }
39
37
  else if (expression.error != null) {
40
- if (scope?.throws ?? true) {
38
+ if (scope.throws) {
41
39
  throw expression.error;
42
40
  }
43
- ret = DEFAULTS;
44
41
  }
45
- else {
46
- ret = DEFAULTS;
47
- }
48
- if (ret === DEFAULTS)
49
- return defaults;
50
- if (!returnType)
51
- return ret;
52
- return TypeInfo.to(ret, returnType);
42
+ if (ret == null)
43
+ return null;
44
+ return ret;
53
45
  }
54
46
  //# sourceMappingURL=eval.js.map
package/dist/eval.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"eval.js","sourceRoot":"","sources":["../src/eval.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAE3C;;GAEG;AACH,MAAM,UAAU,YAAY,CACxB,OAAgB,EAChB,UAA+B,EAC/B,KAAY;IAEZ,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,MAAM,IAAI,IAAI;YAAE,OAAO,QAAQ,CAAC;QACpC,OAAO,MAAM,CAAC,MAAW,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,IAAI,KAAK,CAAC,MAAM;YAAE,MAAM,KAAK,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,IAAI,CACf,iCAAiC,UAAU,CAAC,MAAM,MAAO,KAAe,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,EACpG;YACI,KAAK;YACL,KAAK;SACR,CACJ,CAAC;QACF,OAAO,QAAQ,CAAC;IACpB,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CACpB,OAAgB,EAChB,UAA2B,EAC3B,UAA2B,EAC3B,KAAwB,EACxB,QAAW;IAEX,IAAI,GAAwB,CAAC;IAC7B,IAAI,UAAU,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QAC1B,KAAK,KAAK,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC;YACD,GAAG,GAAG,YAAY,CAAI,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC;gBAAS,CAAC;YACP,KAAK,EAAE,CAAC;QACZ,CAAC;IACL,CAAC;SAAM,IAAI,UAAU,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;QAClC,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,UAAU,CAAC,KAAK,CAAC;QAC3B,CAAC;QACD,GAAG,GAAG,QAAQ,CAAC;IACnB,CAAC;SAAM,CAAC;QACJ,GAAG,GAAG,QAAQ,CAAC;IACnB,CAAC;IACD,IAAI,GAAG,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACtC,IAAI,CAAC,UAAU;QAAE,OAAO,GAAG,CAAC;IAC5B,OAAO,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,CAAM,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"eval.js","sourceRoot":"","sources":["../src/eval.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAG3C;;GAEG;AACH,MAAM,UAAU,YAAY,CACxB,SAA2B,EAC3B,UAA+B,EAC/B,KAAY;IAEZ,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,MAAM,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAChC,OAAO,MAAM,CAAC,MAAW,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,IAAI,KAAK,CAAC,MAAM;YAAE,MAAM,KAAK,CAAC;QAC9B,CAAC,SAAS,EAAE,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,CAC/B,iCAAiC,UAAU,CAAC,MAAM,MAAO,KAAe,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,EACpG;YACI,KAAK;YACL,KAAK;SACR,CACJ,CAAC;QACF,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CACpB,SAA2B,EAC3B,UAA2B,EAC3B,KAAY;IAEZ,IAAI,GAAG,GAAa,IAAI,CAAC;IACzB,IAAI,UAAU,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QAC1B,KAAK,KAAK,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC;YACD,GAAG,GAAG,YAAY,CAAI,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;gBAAS,CAAC;YACP,KAAK,EAAE,CAAC;QACZ,CAAC;IACL,CAAC;SAAM,IAAI,UAAU,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,UAAU,CAAC,KAAK,CAAC;QAC3B,CAAC;IACL,CAAC;IACD,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC7B,OAAO,GAAG,CAAC;AACf,CAAC"}
@@ -2,6 +2,7 @@ import type { VmValue } from '@mirascript/mirascript';
2
2
  import type { Tagged } from 'type-fest';
3
3
  import type { LegacyType, TsTypeOf, TypeInfo } from './type.js';
4
4
  import type { Scope } from './scope.js';
5
+ import type { Evaluator } from './main.js';
5
6
  /** 表达式的标记属性 */
6
7
  export declare const ExpressionTag: "\u0275exp";
7
8
  /** 表示一个表达式 */
@@ -14,10 +15,7 @@ export type Expression<T extends VmValue = VmValue> = {
14
15
  /**
15
16
  * 编译后的表达式
16
17
  */
17
- export interface CompiledExpression<T extends VmValue = VmValue> extends Expression<T> {
18
- (scope: Scope, defaults: T): T;
19
- (scope?: Scope): T | undefined;
20
- }
18
+ export type CompiledExpression<T extends VmValue = VmValue> = Expression<T> & ExpressionFunction<T>;
21
19
  /** 表示一个表达式内容 */
22
20
  export type ExpressionSource<T extends VmValue = VmValue> = Tagged<string, 'ExpressionResult', T>;
23
21
  /** 表示表达式或值 */
@@ -34,4 +32,12 @@ export type ExpressionResult<T> = T extends Expression<infer R> ? R : T;
34
32
  export type ExpressionResultObject<T> = {
35
33
  [K in keyof T]: ExpressionResult<T[K]>;
36
34
  };
35
+ /**
36
+ * 表示一个具有类似表达式功能的 JS 函数
37
+ */
38
+ export type ExpressionFunction<out T> = (
39
+ /** 当前作用域 */
40
+ scope: Scope,
41
+ /** 当前求值器 */
42
+ evaluator: Evaluator) => T | null;
37
43
  //# sourceMappingURL=expression.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../src/expression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,eAAe;AACf,eAAO,MAAM,aAAa,EAAG,WAAe,CAAC;AAG7C,cAAc;AACd,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,IAAI;IAClD,+BAA+B;IAC/B,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,EAAE,CAAC;IACrD,YAAY;IACZ,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;CACxC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;IAClF,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC;CAClC;AAED,gBAAgB;AAChB,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC;AAElG,cAAc;AACd,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/E,mBAAmB;AACnB,wBAAgB,UAAU,CAAC,CAAC,SAAS,QAAQ,GAAG,UAAU,EACtD,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EACxC,UAAU,EAAE,CAAC,GACd,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,sBAAsB;AACtB,wBAAgB,UAAU,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAavG,eAAe;AACf,wBAAgB,YAAY,CAAC,CAAC,SAAS,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAG9G;AAED,mBAAmB;AACnB,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAExE,sBAAsB;AACtB,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI;KACnC,CAAC,IAAI,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACzC,CAAC"}
1
+ {"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../src/expression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,eAAe;AACf,eAAO,MAAM,aAAa,EAAG,WAAe,CAAC;AAG7C,cAAc;AACd,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,IAAI;IAClD,+BAA+B;IAC/B,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,EAAE,CAAC;IACrD,YAAY;IACZ,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;CACxC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAEpG,gBAAgB;AAChB,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC;AAElG,cAAc;AACd,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/E,mBAAmB;AACnB,wBAAgB,UAAU,CAAC,CAAC,SAAS,QAAQ,GAAG,UAAU,EACtD,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EACxC,UAAU,EAAE,CAAC,GACd,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,sBAAsB;AACtB,wBAAgB,UAAU,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAavG,eAAe;AACf,wBAAgB,YAAY,CAAC,CAAC,SAAS,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAG9G;AAED,mBAAmB;AACnB,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAExE,sBAAsB;AACtB,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI;KACnC,CAAC,IAAI,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI;AACpC,YAAY;AACZ,KAAK,EAAE,KAAK;AACZ,YAAY;AACZ,SAAS,EAAE,SAAS,KACnB,CAAC,GAAG,IAAI,CAAC"}
@@ -2,17 +2,17 @@
2
2
  export const ExpressionTag = 'ɵexp';
3
3
  /** 创建一个表达式 */
4
4
  export function Expression(source, returnType = '') {
5
- if (!source)
6
- throw new Error(`Invalid expression ${String(source)}`);
5
+ if (source == null)
6
+ throw new TypeError(`Invalid expression ${String(source)}`);
7
7
  const s = isExpression(source) ? source.source : source;
8
- if (!s || typeof s != 'string')
9
- throw new Error(`Invalid expression ${String(s)}`);
10
- return { [ExpressionTag]: returnType, source: s };
8
+ if (typeof s != 'string')
9
+ throw new TypeError(`Invalid expression ${String(s)}`);
10
+ return { [ExpressionTag]: returnType || '', source: s };
11
11
  }
12
12
  /** 检查是否为表达式 */
13
13
  export function isExpression(value) {
14
14
  if (value == null || (typeof value != 'object' && typeof value != 'function'))
15
15
  return false;
16
- return ExpressionTag in value;
16
+ return typeof value[ExpressionTag] == 'string';
17
17
  }
18
18
  //# sourceMappingURL=expression.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"expression.js","sourceRoot":"","sources":["../src/expression.ts"],"names":[],"mappings":"AAKA,eAAe;AACf,MAAM,CAAC,MAAM,aAAa,GAAG,MAAe,CAAC;AAgC7C,cAAc;AACd,MAAM,UAAU,UAAU,CACtB,MAA8B,EAC9B,aAAyC,EAAE;IAE3C,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACrE,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACxD,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACnF,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAwB,EAAE,CAAC;AAC7E,CAAC;AAED,eAAe;AACf,MAAM,UAAU,YAAY,CAAoB,KAAc;IAC1D,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,QAAQ,IAAI,OAAO,KAAK,IAAI,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5F,OAAO,aAAa,IAAI,KAAK,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"expression.js","sourceRoot":"","sources":["../src/expression.ts"],"names":[],"mappings":"AAMA,eAAe;AACf,MAAM,CAAC,MAAM,aAAa,GAAG,MAAe,CAAC;AA6B7C,cAAc;AACd,MAAM,UAAU,UAAU,CACtB,MAA8B,EAC9B,aAAyC,EAAE;IAE3C,IAAI,MAAM,IAAI,IAAI;QAAE,MAAM,IAAI,SAAS,CAAC,sBAAsB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChF,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACxD,IAAI,OAAO,CAAC,IAAI,QAAQ;QAAE,MAAM,IAAI,SAAS,CAAC,sBAAsB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACjF,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,UAAU,IAAI,EAAE,EAAE,MAAM,EAAE,CAAwB,EAAE,CAAC;AACnF,CAAC;AAED,eAAe;AACf,MAAM,UAAU,YAAY,CAAoB,KAAc;IAC1D,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,QAAQ,IAAI,OAAO,KAAK,IAAI,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5F,OAAO,OAAQ,KAAuB,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC;AACtE,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,8 @@
1
- export type { Options, Context } from './context.js';
1
+ export type { Options, Logger } from './interface.js';
2
2
  export { Scope } from './scope.js';
3
3
  export { Evaluator } from './main.js';
4
+ export type { GlobalReferenceChain } from './analyze.js';
4
5
  export * from './expression.js';
5
6
  export * from './type.js';
7
+ export * from './re-exports.js';
6
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -2,4 +2,5 @@ export { Scope } from './scope.js';
2
2
  export { Evaluator } from './main.js';
3
3
  export * from './expression.js';
4
4
  export * from './type.js';
5
+ export * from './re-exports.js';
5
6
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,30 @@
1
+ /** 日志 */
2
+ export interface Logger {
3
+ /**
4
+ * error
5
+ */
6
+ error(...args: unknown[]): void;
7
+ /**
8
+ * warning
9
+ */
10
+ warn(...args: unknown[]): void;
11
+ /**
12
+ * info
13
+ */
14
+ info(...args: unknown[]): void;
15
+ /**
16
+ * debug
17
+ */
18
+ debug(...args: unknown[]): void;
19
+ }
20
+ /** 选项 */
21
+ export interface Options {
22
+ /** 日志 */
23
+ logger: Logger;
24
+ /** 表达式缓存 */
25
+ expressionCacheSize: number;
26
+ /** 模板缓存 */
27
+ templateCacheSize: number;
28
+ }
29
+ export declare const defaultOptions: Options;
30
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../src/interface.ts"],"names":[],"mappings":"AAAA,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;IAC5B,WAAW;IACX,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAED,eAAO,MAAM,cAAc,EAAE,OAI5B,CAAC"}
@@ -0,0 +1,6 @@
1
+ export const defaultOptions = {
2
+ logger: console,
3
+ expressionCacheSize: 50,
4
+ templateCacheSize: 50,
5
+ };
6
+ //# sourceMappingURL=interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../src/interface.ts"],"names":[],"mappings":"AA8BA,MAAM,CAAC,MAAM,cAAc,GAAY;IACnC,MAAM,EAAE,OAAO;IACf,mBAAmB,EAAE,EAAE;IACvB,iBAAiB,EAAE,EAAE;CACxB,CAAC"}