@aster-cloud/aster-lang-ts 2.0.0 → 3.0.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 (106) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/scripts/generate-naming-rules.d.ts +5 -0
  3. package/dist/scripts/generate-naming-rules.d.ts.map +1 -0
  4. package/dist/scripts/generate-naming-rules.js +35 -0
  5. package/dist/scripts/generate-naming-rules.js.map +1 -0
  6. package/dist/src/browser/schema.d.ts.map +1 -1
  7. package/dist/src/browser/schema.js +1 -3
  8. package/dist/src/browser/schema.js.map +1 -1
  9. package/dist/src/browser.d.ts.map +1 -1
  10. package/dist/src/browser.js +1 -3
  11. package/dist/src/browser.js.map +1 -1
  12. package/dist/src/compile-pipeline.d.ts.map +1 -1
  13. package/dist/src/compile-pipeline.js +1 -2
  14. package/dist/src/compile-pipeline.js.map +1 -1
  15. package/dist/src/config/lexicons/fallback-lexicon.d.ts +1 -1
  16. package/dist/src/config/lexicons/fallback-lexicon.d.ts.map +1 -1
  17. package/dist/src/config/lexicons/fallback-lexicon.js +1 -4
  18. package/dist/src/config/lexicons/fallback-lexicon.js.map +1 -1
  19. package/dist/src/config/lexicons/overlay-loader.d.ts +0 -13
  20. package/dist/src/config/lexicons/overlay-loader.d.ts.map +1 -1
  21. package/dist/src/config/lexicons/overlay-loader.js +0 -18
  22. package/dist/src/config/lexicons/overlay-loader.js.map +1 -1
  23. package/dist/src/config/lexicons/types.d.ts +0 -3
  24. package/dist/src/config/lexicons/types.d.ts.map +1 -1
  25. package/dist/src/config/lexicons/types.js.map +1 -1
  26. package/dist/src/core/lambda-captures.d.ts +14 -0
  27. package/dist/src/core/lambda-captures.d.ts.map +1 -0
  28. package/dist/src/core/lambda-captures.js +128 -0
  29. package/dist/src/core/lambda-captures.js.map +1 -0
  30. package/dist/src/lower_to_core.d.ts +0 -18
  31. package/dist/src/lower_to_core.d.ts.map +1 -1
  32. package/dist/src/lower_to_core.js +50 -90
  33. package/dist/src/lower_to_core.js.map +1 -1
  34. package/dist/src/mapping/mapping-ir.d.ts +2 -2
  35. package/dist/src/mapping/mapping-ir.js +2 -2
  36. package/dist/src/parser/expr-stmt-parser.d.ts.map +1 -1
  37. package/dist/src/parser/expr-stmt-parser.js +14 -8
  38. package/dist/src/parser/expr-stmt-parser.js.map +1 -1
  39. package/dist/src/parser/field-variant-parser.js +3 -3
  40. package/dist/src/parser/field-variant-parser.js.map +1 -1
  41. package/dist/src/parser/naming-rules.d.ts +19 -0
  42. package/dist/src/parser/naming-rules.d.ts.map +1 -0
  43. package/dist/src/parser/naming-rules.generated.d.ts +7 -0
  44. package/dist/src/parser/naming-rules.generated.d.ts.map +1 -0
  45. package/dist/src/parser/naming-rules.generated.js +392 -0
  46. package/dist/src/parser/naming-rules.generated.js.map +1 -0
  47. package/dist/src/parser/naming-rules.js +2 -0
  48. package/dist/src/parser/naming-rules.js.map +1 -0
  49. package/dist/src/parser/type-inference.d.ts +29 -70
  50. package/dist/src/parser/type-inference.d.ts.map +1 -1
  51. package/dist/src/parser/type-inference.js +82 -212
  52. package/dist/src/parser/type-inference.js.map +1 -1
  53. package/dist/src/parser/type-parser.d.ts.map +1 -1
  54. package/dist/src/parser/type-parser.js +12 -19
  55. package/dist/src/parser/type-parser.js.map +1 -1
  56. package/dist/src/parser.d.ts.map +1 -1
  57. package/dist/src/parser.js +2 -5
  58. package/dist/src/parser.js.map +1 -1
  59. package/dist/src/typecheck/effects.js +11 -4
  60. package/dist/src/typecheck/effects.js.map +1 -1
  61. package/dist/src/types/type-inference.d.ts +1 -13
  62. package/dist/src/types/type-inference.d.ts.map +1 -1
  63. package/dist/src/types/type-inference.js +1 -2
  64. package/dist/src/types/type-inference.js.map +1 -1
  65. package/dist/test/helpers/locales-type-inference.d.ts +6 -0
  66. package/dist/test/helpers/locales-type-inference.d.ts.map +1 -0
  67. package/dist/test/helpers/locales-type-inference.js +14 -0
  68. package/dist/test/helpers/locales-type-inference.js.map +1 -0
  69. package/dist/test/integration/compliance/compliance-smoke.test.js +1 -2
  70. package/dist/test/integration/compliance/compliance-smoke.test.js.map +1 -1
  71. package/dist/test/unit/core/resolve-typed-references.test.js +3 -2
  72. package/dist/test/unit/core/resolve-typed-references.test.js.map +1 -1
  73. package/dist/test/unit/effect/effect-caps-explicit-only.test.d.ts +2 -0
  74. package/dist/test/unit/effect/effect-caps-explicit-only.test.d.ts.map +1 -0
  75. package/dist/test/unit/effect/effect-caps-explicit-only.test.js +73 -0
  76. package/dist/test/unit/effect/effect-caps-explicit-only.test.js.map +1 -0
  77. package/dist/test/unit/lambda-capture-parity.test.js +43 -14
  78. package/dist/test/unit/lambda-capture-parity.test.js.map +1 -1
  79. package/dist/test/unit/lexicons/fallback-lexicon.test.d.ts +1 -1
  80. package/dist/test/unit/lexicons/fallback-lexicon.test.js +2 -4
  81. package/dist/test/unit/lexicons/fallback-lexicon.test.js.map +1 -1
  82. package/dist/test/unit/parser/inferred-type-anchor.test.d.ts +2 -0
  83. package/dist/test/unit/parser/inferred-type-anchor.test.d.ts.map +1 -0
  84. package/dist/test/unit/parser/inferred-type-anchor.test.js +83 -0
  85. package/dist/test/unit/parser/inferred-type-anchor.test.js.map +1 -0
  86. package/dist/test/unit/parser/naming-rules-parity.test.d.ts +2 -0
  87. package/dist/test/unit/parser/naming-rules-parity.test.d.ts.map +1 -0
  88. package/dist/test/unit/parser/naming-rules-parity.test.js +26 -0
  89. package/dist/test/unit/parser/naming-rules-parity.test.js.map +1 -0
  90. package/dist/test/unit/parser/parser.test.js +6 -28
  91. package/dist/test/unit/parser/parser.test.js.map +1 -1
  92. package/dist/test/unit/parser/type-inference-vectors.test.d.ts +2 -0
  93. package/dist/test/unit/parser/type-inference-vectors.test.d.ts.map +1 -0
  94. package/dist/test/unit/parser/type-inference-vectors.test.js +40 -0
  95. package/dist/test/unit/parser/type-inference-vectors.test.js.map +1 -0
  96. package/dist/test/unit/parser/type-inference.test.d.ts +2 -1
  97. package/dist/test/unit/parser/type-inference.test.d.ts.map +1 -1
  98. package/dist/test/unit/parser/type-inference.test.js +93 -159
  99. package/dist/test/unit/parser/type-inference.test.js.map +1 -1
  100. package/dist/test/unit/regex-guard.test.js +6 -6
  101. package/dist/test/unit/regex-guard.test.js.map +1 -1
  102. package/package.json +1 -1
  103. package/dist/src/config/lexicons/type-inference-rules.d.ts +0 -19
  104. package/dist/src/config/lexicons/type-inference-rules.d.ts.map +0 -1
  105. package/dist/src/config/lexicons/type-inference-rules.js +0 -63
  106. package/dist/src/config/lexicons/type-inference-rules.js.map +0 -1
@@ -0,0 +1,392 @@
1
+ export const NAMING_RULES = {
2
+ "version": 1,
3
+ "default": "Text",
4
+ "rules": [
5
+ {
6
+ "type": "Text",
7
+ "priority": 11,
8
+ "match": "lastWord",
9
+ "words": [
10
+ "message",
11
+ "dosage"
12
+ ]
13
+ },
14
+ {
15
+ "type": "Text",
16
+ "priority": 10,
17
+ "match": "lastWordMulti",
18
+ "words": [
19
+ "id",
20
+ "identifier"
21
+ ]
22
+ },
23
+ {
24
+ "type": "Text",
25
+ "priority": 8,
26
+ "match": "lastWord",
27
+ "words": [
28
+ "code",
29
+ "key",
30
+ "token",
31
+ "uuid",
32
+ "guid",
33
+ "vin"
34
+ ]
35
+ },
36
+ {
37
+ "type": "Float",
38
+ "priority": 10,
39
+ "match": "lastWord",
40
+ "words": [
41
+ "amount",
42
+ "price",
43
+ "cost",
44
+ "fee",
45
+ "total",
46
+ "balance",
47
+ "salary",
48
+ "income",
49
+ "payment",
50
+ "percentage",
51
+ "ratio"
52
+ ]
53
+ },
54
+ {
55
+ "type": "Float",
56
+ "priority": 9,
57
+ "match": "lastWord",
58
+ "words": [
59
+ "rate",
60
+ "interest"
61
+ ]
62
+ },
63
+ {
64
+ "type": "Int",
65
+ "priority": 10,
66
+ "match": "lastWord",
67
+ "words": [
68
+ "count",
69
+ "number",
70
+ "qty",
71
+ "quantity",
72
+ "score",
73
+ "level",
74
+ "rank",
75
+ "index",
76
+ "size",
77
+ "length",
78
+ "width",
79
+ "height",
80
+ "age"
81
+ ]
82
+ },
83
+ {
84
+ "type": "Int",
85
+ "priority": 9,
86
+ "match": "anyWord",
87
+ "words": [
88
+ "year",
89
+ "years",
90
+ "month",
91
+ "months",
92
+ "week",
93
+ "weeks",
94
+ "day",
95
+ "days",
96
+ "hour",
97
+ "hours",
98
+ "minute",
99
+ "minutes",
100
+ "second",
101
+ "seconds"
102
+ ]
103
+ },
104
+ {
105
+ "type": "Bool",
106
+ "priority": 11,
107
+ "match": "firstWord",
108
+ "words": [
109
+ "is",
110
+ "iss",
111
+ "ises",
112
+ "isd",
113
+ "ised",
114
+ "has",
115
+ "hass",
116
+ "hases",
117
+ "hasd",
118
+ "hased",
119
+ "can",
120
+ "cans",
121
+ "canes",
122
+ "cand",
123
+ "caned",
124
+ "should",
125
+ "shoulds",
126
+ "shouldes",
127
+ "shouldd",
128
+ "shoulded",
129
+ "was",
130
+ "wass",
131
+ "wases",
132
+ "wasd",
133
+ "wased",
134
+ "will",
135
+ "wills",
136
+ "willes",
137
+ "willd",
138
+ "willed",
139
+ "did",
140
+ "dids",
141
+ "dides",
142
+ "didd",
143
+ "dided",
144
+ "does",
145
+ "doess",
146
+ "doeses",
147
+ "doesd",
148
+ "doesed",
149
+ "allow",
150
+ "allows",
151
+ "allowes",
152
+ "allowd",
153
+ "allowed",
154
+ "enable",
155
+ "enables",
156
+ "enablees",
157
+ "enabled",
158
+ "enableed",
159
+ "disable",
160
+ "disables",
161
+ "disablees",
162
+ "disabled",
163
+ "disableed",
164
+ "active",
165
+ "actives",
166
+ "activees",
167
+ "actived",
168
+ "activeed",
169
+ "valid",
170
+ "valids",
171
+ "valides",
172
+ "validd",
173
+ "valided",
174
+ "require",
175
+ "requires",
176
+ "requirees",
177
+ "required",
178
+ "requireed"
179
+ ]
180
+ },
181
+ {
182
+ "type": "Bool",
183
+ "priority": 8,
184
+ "match": "lastWord",
185
+ "words": [
186
+ "flag",
187
+ "enabled",
188
+ "disabled",
189
+ "active",
190
+ "valid",
191
+ "approved",
192
+ "rejected",
193
+ "completed",
194
+ "confirmed",
195
+ "sufficient",
196
+ "success",
197
+ "passed",
198
+ "verified"
199
+ ]
200
+ },
201
+ {
202
+ "type": "DateTime",
203
+ "priority": 10,
204
+ "match": "lastWord",
205
+ "words": [
206
+ "date",
207
+ "time",
208
+ "at",
209
+ "timestamp",
210
+ "created",
211
+ "updated",
212
+ "modified",
213
+ "expired",
214
+ "birthday",
215
+ "anniversary"
216
+ ]
217
+ },
218
+ {
219
+ "type": "Text",
220
+ "priority": 8,
221
+ "match": "lastWord",
222
+ "words": [
223
+ "type",
224
+ "status",
225
+ "category",
226
+ "kind",
227
+ "mode"
228
+ ]
229
+ },
230
+ {
231
+ "type": "Text",
232
+ "priority": 7,
233
+ "match": "lastWord",
234
+ "words": [
235
+ "make",
236
+ "model",
237
+ "brand",
238
+ "manufacturer"
239
+ ]
240
+ },
241
+ {
242
+ "type": "Text",
243
+ "priority": 7,
244
+ "match": "lastWord",
245
+ "words": [
246
+ "name",
247
+ "title",
248
+ "description",
249
+ "comment",
250
+ "note",
251
+ "remark",
252
+ "address",
253
+ "email",
254
+ "phone",
255
+ "url",
256
+ "path",
257
+ "reason",
258
+ "recommendation",
259
+ "factors",
260
+ "purpose"
261
+ ]
262
+ },
263
+ {
264
+ "type": "Int",
265
+ "priority": 9,
266
+ "match": "lastWord",
267
+ "words": [
268
+ "rating",
269
+ "limit",
270
+ "premium",
271
+ "deductible",
272
+ "multiplier",
273
+ "deposit",
274
+ "line",
275
+ "utilization",
276
+ "inquiries",
277
+ "rent",
278
+ "debt",
279
+ "cards",
280
+ "value",
281
+ "payments"
282
+ ]
283
+ },
284
+ {
285
+ "type": "Int",
286
+ "priority": 8,
287
+ "match": "lastWord",
288
+ "words": [
289
+ "licensed",
290
+ "employed",
291
+ "job",
292
+ "experience"
293
+ ]
294
+ },
295
+ {
296
+ "type": "Int",
297
+ "priority": 9,
298
+ "match": "lastWord",
299
+ "words": [
300
+ "bps",
301
+ "apr",
302
+ "apy"
303
+ ]
304
+ },
305
+ {
306
+ "type": "Int",
307
+ "priority": 8,
308
+ "match": "lastWord",
309
+ "words": [
310
+ "checked"
311
+ ]
312
+ },
313
+ {
314
+ "type": "Bool",
315
+ "priority": 11,
316
+ "match": "textPrefix",
317
+ "strings": [
318
+ "是否",
319
+ "有无",
320
+ "能否",
321
+ "可否",
322
+ "允许",
323
+ "启用",
324
+ "禁用"
325
+ ]
326
+ },
327
+ {
328
+ "type": "Bool",
329
+ "priority": 8,
330
+ "match": "textSuffix",
331
+ "strings": [
332
+ "批准",
333
+ "通过",
334
+ "有效",
335
+ "合格",
336
+ "可疑",
337
+ "确认",
338
+ "验证"
339
+ ]
340
+ },
341
+ {
342
+ "type": "Int",
343
+ "priority": 10,
344
+ "match": "textSuffix",
345
+ "strings": [
346
+ "评分",
347
+ "年龄",
348
+ "数量",
349
+ "次数",
350
+ "额度",
351
+ "金额",
352
+ "保费",
353
+ "免赔额",
354
+ "账龄",
355
+ "卡数"
356
+ ]
357
+ },
358
+ {
359
+ "type": "Float",
360
+ "priority": 9,
361
+ "match": "textSuffix",
362
+ "strings": [
363
+ "利率",
364
+ "费率",
365
+ "比率",
366
+ "百分比"
367
+ ]
368
+ },
369
+ {
370
+ "type": "Bool",
371
+ "priority": 8,
372
+ "match": "textSuffix",
373
+ "strings": [
374
+ "genehmigt",
375
+ "berechtigt",
376
+ "verdaechtig",
377
+ "aktiviert",
378
+ "deaktiviert",
379
+ "aktiv",
380
+ "gueltig",
381
+ "erfolgreich",
382
+ "bestanden",
383
+ "bestaetigt",
384
+ "verifiziert",
385
+ "abgelehnt",
386
+ "abgeschlossen",
387
+ "erforderlich"
388
+ ]
389
+ }
390
+ ]
391
+ };
392
+ //# sourceMappingURL=naming-rules.generated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"naming-rules.generated.js","sourceRoot":"","sources":["../../../src/parser/naming-rules.generated.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=naming-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"naming-rules.js","sourceRoot":"","sources":["../../../src/parser/naming-rules.ts"],"names":[],"mappings":""}
@@ -1,84 +1,43 @@
1
1
  /**
2
- * CNL 字段类型推断引擎
2
+ * 未标注形参 / 字段的类型推断(ADR 0056 §3.2)。
3
3
  *
4
- * 实现基于命名约定和约束信号的类型推断,使字段定义更接近自然语言。
5
- *
6
- * 推断优先级(从高到低):
7
- * 1. 显式类型声明(由调用方处理,不在本模块)
8
- * 2. 约束驱动推断(Range → 数值类型,Pattern → Text)
9
- * 3. 命名约定推断(*Id → Text, *Amount → Float 等)
10
- * 4. 默认类型(Text)
4
+ * 规则表是 aster-lang-locales type-inference/naming-rules.json 的内置副本(naming-rules.generated.ts,
5
+ * 由 shared/type-inference-naming-rules.json 生成并由 sibling parity 测试守护),与词法表无关:全部规则对所有
6
+ * 模块生效。算法与 aster-lang-core TypeInference 逐步相同,两侧用 locales 的共用测试向量对照:
7
+ * 1. 分词:名字只含 ASCII 字母、数字与 `_` 时按 `_` 切段,每段按 WORD 切词并做 ASCII 小写;否则词列表为空;
8
+ * 2. 逐条判定规则是否命中(首词 / 末词 / 任一词 / 整名前缀后缀);
9
+ * 3. 命中规则中 priority 最大者胜,同优先级取表中靠前者,都不命中取缺省类型;
10
+ * 4. 按约束修正(与约束书写顺序无关)。
11
11
  *
12
12
  * @example
13
13
  * ```typescript
14
- * // 命名推断
15
- * inferFieldType('applicantId') // → Text (匹配 *Id)
16
- * inferFieldType('loanAmount') // → Float (匹配 *Amount)
17
- * inferFieldType('termMonths') // → Int (匹配 *Months)
18
- * inferFieldType('isApproved') // → Bool (匹配 is*)
19
- *
20
- * // 约束驱动推断
21
- * inferFieldType('score', [{ kind: 'Range', min: 0, max: 100 }]) // → Int
22
- * inferFieldType('rate', [{ kind: 'Range', min: 0.0, max: 1.0 }]) // → Float
14
+ * inferFieldType('applicantId') // → Text(末词 id,且词数 ≥ 2)
15
+ * inferFieldType('loanAmount') // → Float
16
+ * inferFieldType('termMonths') // → Int
17
+ * inferFieldType('isApproved') // → Bool
18
+ * inferFieldType('score', [{ kind: 'Range', min: 0, max: 100, ... }]) // → Int
23
19
  * ```
24
20
  */
25
21
  import type { Constraint, Type } from '../types.js';
26
- import type { TypeInferenceRule, PrimitiveTypeName } from '../types/type-inference.js';
27
- import type { Lexicon } from '../config/lexicons/types.js';
28
- export type { TypeInferenceRule, PrimitiveTypeName };
29
- /**
30
- * 默认的字段命名类型推断规则
31
- *
32
- * 规则按照常见业务领域设计,覆盖:
33
- * - 标识符类型(ID、Identifier、Vin)
34
- * - 金融类型(Amount、Price、Cost)
35
- * - 计数类型(Count、Number、Age)
36
- * - 业务指标(Rating、Limit、Premium)
37
- * - 布尔类型(isXxx、hasXxx、Flag、Sufficient)
38
- * - 时间类型(Date、Time、At)
39
- * - 分类类型(Type、Status、Category)
40
- * - 产品属性(Make、Model)
41
- */
42
- /**
43
- * 语言无关的通用基线命名规则。
44
- * 语言特定规则(英文布尔前缀、中文前缀、德语后缀等)
45
- * 已拆分至 config/lexicons/type-inference-rules.ts(overlay 模式)。
46
- */
47
- export declare const BASE_NAMING_RULES: readonly TypeInferenceRule[];
22
+ import type { PrimitiveTypeName } from '../types/type-inference.js';
23
+ export type { PrimitiveTypeName };
24
+ /** 第 1 步:分词。名字含 ASCII 字母、数字、`_` 以外的字符时返回空列表。 */
25
+ export declare function tokenize(name: string): string[];
26
+ /** 第 1–3 步:只按名字推断类型名。 */
27
+ export declare function inferTypeNameFromName(name: string): PrimitiveTypeName;
48
28
  /**
49
- * 从约束列表推断类型
50
- *
51
- * 推断规则:
52
- * - Range 约束 → 数值类型(Int 或 Float)
53
- * - Pattern 约束 → Text
54
- * - Required 约束 → 不影响类型推断
55
- *
56
- * @param constraints 约束列表
57
- * @returns 推断的类型名,如果无法从约束推断则返回 null
29
+ * 第 5 步的约束类型:存在 Range 时,任一端点的规范十进制串(ADR 0055 §5)含 `.` 得 Float,否则 Int;
30
+ * 不存在 Range 而存在 Pattern 时得 Text;其余为 null。
58
31
  */
59
- export declare function inferTypeFromConstraints(constraints: readonly Constraint[]): PrimitiveTypeName | null;
32
+ export declare function constraintType(constraints: readonly Constraint[]): PrimitiveTypeName | null;
33
+ /** 第 5 步:名字推断结果 n 与约束类型 c 合并。 */
34
+ export declare function refine(n: PrimitiveTypeName, c: PrimitiveTypeName | null): PrimitiveTypeName;
60
35
  /**
61
- * 推断字段类型
62
- *
63
- * 按优先级尝试推断:
64
- * 1. 约束驱动推断
65
- * 2. 命名约定推断
66
- * 3. 默认类型(Text)
67
- *
68
- * @param fieldName 字段名称
69
- * @param constraints 可选的约束列表
70
- * @returns 推断的类型 AST 节点
71
- */
72
- export declare function inferFieldType(fieldName: string, constraints?: readonly Constraint[], lexicon?: Lexicon): Type;
73
- /**
74
- * 根据约束修正已推断的类型
75
- *
76
- * 当字段使用推断类型后又解析到约束时,可能需要修正类型。
77
- * 例如:字段名 `value` 默认推断为 Text,但如果有 Range 约束则应为数值类型。
36
+ * 推断未标注形参 / 字段的类型:按名字推断,再按约束修正。
78
37
  *
79
- * @param currentType 当前推断的类型
80
- * @param constraints 约束列表
81
- * @returns 修正后的类型
38
+ * @param fieldName 字段 / 形参名
39
+ * @param constraints 源码写下的约束
40
+ * @returns 推断的类型 AST 节点(span 由调用方锚定在名字 token,ADR 0056 §3.3)
82
41
  */
83
- export declare function refineInferredType(currentType: Type, constraints: readonly Constraint[]): Type;
42
+ export declare function inferFieldType(fieldName: string, constraints?: readonly Constraint[]): Type;
84
43
  //# sourceMappingURL=type-inference.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"type-inference.d.ts","sourceRoot":"","sources":["../../../src/parser/type-inference.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAmB,IAAI,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAE3D,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;AAErD;;;;;;;;;;;;GAYG;AACH;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,iBAAiB,EAyBzD,CAAC;AAMF;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,GAAG,iBAAiB,GAAG,IAAI,CAqBrG;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,WAAW,GAAE,SAAS,UAAU,EAAO,EACvC,OAAO,CAAC,EAAE,OAAO,GAChB,IAAI,CAQN;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,UAAU,EAAE,GAAG,IAAI,CA8B9F"}
1
+ {"version":3,"file":"type-inference.d.ts","sourceRoot":"","sources":["../../../src/parser/type-inference.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAmB,IAAI,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAKpE,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAWlC,gDAAgD;AAChD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAO/C;AAqBD,yBAAyB;AACzB,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAOrE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,GAAG,iBAAiB,GAAG,IAAI,CAI3F;AAWD,iCAAiC;AACjC,wBAAgB,MAAM,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,GAAG,IAAI,GAAG,iBAAiB,CAK3F;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,GAAE,SAAS,UAAU,EAAO,GAAG,IAAI,CAE/F"}