@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.
- package/CHANGELOG.md +27 -0
- package/dist/scripts/generate-naming-rules.d.ts +5 -0
- package/dist/scripts/generate-naming-rules.d.ts.map +1 -0
- package/dist/scripts/generate-naming-rules.js +35 -0
- package/dist/scripts/generate-naming-rules.js.map +1 -0
- package/dist/src/browser/schema.d.ts.map +1 -1
- package/dist/src/browser/schema.js +1 -3
- package/dist/src/browser/schema.js.map +1 -1
- package/dist/src/browser.d.ts.map +1 -1
- package/dist/src/browser.js +1 -3
- package/dist/src/browser.js.map +1 -1
- package/dist/src/compile-pipeline.d.ts.map +1 -1
- package/dist/src/compile-pipeline.js +1 -2
- package/dist/src/compile-pipeline.js.map +1 -1
- package/dist/src/config/lexicons/fallback-lexicon.d.ts +1 -1
- package/dist/src/config/lexicons/fallback-lexicon.d.ts.map +1 -1
- package/dist/src/config/lexicons/fallback-lexicon.js +1 -4
- package/dist/src/config/lexicons/fallback-lexicon.js.map +1 -1
- package/dist/src/config/lexicons/overlay-loader.d.ts +0 -13
- package/dist/src/config/lexicons/overlay-loader.d.ts.map +1 -1
- package/dist/src/config/lexicons/overlay-loader.js +0 -18
- package/dist/src/config/lexicons/overlay-loader.js.map +1 -1
- package/dist/src/config/lexicons/types.d.ts +0 -3
- package/dist/src/config/lexicons/types.d.ts.map +1 -1
- package/dist/src/config/lexicons/types.js.map +1 -1
- package/dist/src/core/lambda-captures.d.ts +14 -0
- package/dist/src/core/lambda-captures.d.ts.map +1 -0
- package/dist/src/core/lambda-captures.js +128 -0
- package/dist/src/core/lambda-captures.js.map +1 -0
- package/dist/src/lower_to_core.d.ts +0 -18
- package/dist/src/lower_to_core.d.ts.map +1 -1
- package/dist/src/lower_to_core.js +50 -90
- package/dist/src/lower_to_core.js.map +1 -1
- package/dist/src/mapping/mapping-ir.d.ts +2 -2
- package/dist/src/mapping/mapping-ir.js +2 -2
- package/dist/src/parser/expr-stmt-parser.d.ts.map +1 -1
- package/dist/src/parser/expr-stmt-parser.js +14 -8
- package/dist/src/parser/expr-stmt-parser.js.map +1 -1
- package/dist/src/parser/field-variant-parser.js +3 -3
- package/dist/src/parser/field-variant-parser.js.map +1 -1
- package/dist/src/parser/naming-rules.d.ts +19 -0
- package/dist/src/parser/naming-rules.d.ts.map +1 -0
- package/dist/src/parser/naming-rules.generated.d.ts +7 -0
- package/dist/src/parser/naming-rules.generated.d.ts.map +1 -0
- package/dist/src/parser/naming-rules.generated.js +392 -0
- package/dist/src/parser/naming-rules.generated.js.map +1 -0
- package/dist/src/parser/naming-rules.js +2 -0
- package/dist/src/parser/naming-rules.js.map +1 -0
- package/dist/src/parser/type-inference.d.ts +29 -70
- package/dist/src/parser/type-inference.d.ts.map +1 -1
- package/dist/src/parser/type-inference.js +82 -212
- package/dist/src/parser/type-inference.js.map +1 -1
- package/dist/src/parser/type-parser.d.ts.map +1 -1
- package/dist/src/parser/type-parser.js +12 -19
- package/dist/src/parser/type-parser.js.map +1 -1
- package/dist/src/parser.d.ts.map +1 -1
- package/dist/src/parser.js +2 -5
- package/dist/src/parser.js.map +1 -1
- package/dist/src/typecheck/effects.js +11 -4
- package/dist/src/typecheck/effects.js.map +1 -1
- package/dist/src/types/type-inference.d.ts +1 -13
- package/dist/src/types/type-inference.d.ts.map +1 -1
- package/dist/src/types/type-inference.js +1 -2
- package/dist/src/types/type-inference.js.map +1 -1
- package/dist/test/helpers/locales-type-inference.d.ts +6 -0
- package/dist/test/helpers/locales-type-inference.d.ts.map +1 -0
- package/dist/test/helpers/locales-type-inference.js +14 -0
- package/dist/test/helpers/locales-type-inference.js.map +1 -0
- package/dist/test/integration/compliance/compliance-smoke.test.js +1 -2
- package/dist/test/integration/compliance/compliance-smoke.test.js.map +1 -1
- package/dist/test/unit/core/resolve-typed-references.test.js +3 -2
- package/dist/test/unit/core/resolve-typed-references.test.js.map +1 -1
- package/dist/test/unit/effect/effect-caps-explicit-only.test.d.ts +2 -0
- package/dist/test/unit/effect/effect-caps-explicit-only.test.d.ts.map +1 -0
- package/dist/test/unit/effect/effect-caps-explicit-only.test.js +73 -0
- package/dist/test/unit/effect/effect-caps-explicit-only.test.js.map +1 -0
- package/dist/test/unit/lambda-capture-parity.test.js +43 -14
- package/dist/test/unit/lambda-capture-parity.test.js.map +1 -1
- package/dist/test/unit/lexicons/fallback-lexicon.test.d.ts +1 -1
- package/dist/test/unit/lexicons/fallback-lexicon.test.js +2 -4
- package/dist/test/unit/lexicons/fallback-lexicon.test.js.map +1 -1
- package/dist/test/unit/parser/inferred-type-anchor.test.d.ts +2 -0
- package/dist/test/unit/parser/inferred-type-anchor.test.d.ts.map +1 -0
- package/dist/test/unit/parser/inferred-type-anchor.test.js +83 -0
- package/dist/test/unit/parser/inferred-type-anchor.test.js.map +1 -0
- package/dist/test/unit/parser/naming-rules-parity.test.d.ts +2 -0
- package/dist/test/unit/parser/naming-rules-parity.test.d.ts.map +1 -0
- package/dist/test/unit/parser/naming-rules-parity.test.js +26 -0
- package/dist/test/unit/parser/naming-rules-parity.test.js.map +1 -0
- package/dist/test/unit/parser/parser.test.js +6 -28
- package/dist/test/unit/parser/parser.test.js.map +1 -1
- package/dist/test/unit/parser/type-inference-vectors.test.d.ts +2 -0
- package/dist/test/unit/parser/type-inference-vectors.test.d.ts.map +1 -0
- package/dist/test/unit/parser/type-inference-vectors.test.js +40 -0
- package/dist/test/unit/parser/type-inference-vectors.test.js.map +1 -0
- package/dist/test/unit/parser/type-inference.test.d.ts +2 -1
- package/dist/test/unit/parser/type-inference.test.d.ts.map +1 -1
- package/dist/test/unit/parser/type-inference.test.js +93 -159
- package/dist/test/unit/parser/type-inference.test.js.map +1 -1
- package/dist/test/unit/regex-guard.test.js +6 -6
- package/dist/test/unit/regex-guard.test.js.map +1 -1
- package/package.json +1 -1
- package/dist/src/config/lexicons/type-inference-rules.d.ts +0 -19
- package/dist/src/config/lexicons/type-inference-rules.d.ts.map +0 -1
- package/dist/src/config/lexicons/type-inference-rules.js +0 -63
- 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":"AAMA,MAAM,CAAC,MAAM,YAAY,GAAqB;IAC5C,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,MAAM;IACjB,OAAO,EAAE;QACP;YACE,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE;gBACP,SAAS;gBACT,QAAQ;aACT;SACF;QACD;YACE,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,eAAe;YACxB,OAAO,EAAE;gBACP,IAAI;gBACJ,YAAY;aACb;SACF;QACD;YACE,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE;gBACP,MAAM;gBACN,KAAK;gBACL,OAAO;gBACP,MAAM;gBACN,MAAM;gBACN,KAAK;aACN;SACF;QACD;YACE,MAAM,EAAE,OAAO;YACf,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE;gBACP,QAAQ;gBACR,OAAO;gBACP,MAAM;gBACN,KAAK;gBACL,OAAO;gBACP,SAAS;gBACT,QAAQ;gBACR,QAAQ;gBACR,SAAS;gBACT,YAAY;gBACZ,OAAO;aACR;SACF;QACD;YACE,MAAM,EAAE,OAAO;YACf,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE;gBACP,MAAM;gBACN,UAAU;aACX;SACF;QACD;YACE,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE;gBACP,OAAO;gBACP,QAAQ;gBACR,KAAK;gBACL,UAAU;gBACV,OAAO;gBACP,OAAO;gBACP,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,QAAQ;gBACR,OAAO;gBACP,QAAQ;gBACR,KAAK;aACN;SACF;QACD;YACE,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE;gBACP,MAAM;gBACN,OAAO;gBACP,OAAO;gBACP,QAAQ;gBACR,MAAM;gBACN,OAAO;gBACP,KAAK;gBACL,MAAM;gBACN,MAAM;gBACN,OAAO;gBACP,QAAQ;gBACR,SAAS;gBACT,QAAQ;gBACR,SAAS;aACV;SACF;QACD;YACE,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,WAAW;YACpB,OAAO,EAAE;gBACP,IAAI;gBACJ,KAAK;gBACL,MAAM;gBACN,KAAK;gBACL,MAAM;gBACN,KAAK;gBACL,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,OAAO;gBACP,KAAK;gBACL,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,OAAO;gBACP,QAAQ;gBACR,SAAS;gBACT,UAAU;gBACV,SAAS;gBACT,UAAU;gBACV,KAAK;gBACL,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,OAAO;gBACP,QAAQ;gBACR,OAAO;gBACP,QAAQ;gBACR,KAAK;gBACL,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,OAAO;gBACP,QAAQ;gBACR,OAAO;gBACP,QAAQ;gBACR,OAAO;gBACP,QAAQ;gBACR,SAAS;gBACT,QAAQ;gBACR,SAAS;gBACT,QAAQ;gBACR,SAAS;gBACT,UAAU;gBACV,SAAS;gBACT,UAAU;gBACV,SAAS;gBACT,UAAU;gBACV,WAAW;gBACX,UAAU;gBACV,WAAW;gBACX,QAAQ;gBACR,SAAS;gBACT,UAAU;gBACV,SAAS;gBACT,UAAU;gBACV,OAAO;gBACP,QAAQ;gBACR,SAAS;gBACT,QAAQ;gBACR,SAAS;gBACT,SAAS;gBACT,UAAU;gBACV,WAAW;gBACX,UAAU;gBACV,WAAW;aACZ;SACF;QACD;YACE,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE;gBACP,MAAM;gBACN,SAAS;gBACT,UAAU;gBACV,QAAQ;gBACR,OAAO;gBACP,UAAU;gBACV,UAAU;gBACV,WAAW;gBACX,WAAW;gBACX,YAAY;gBACZ,SAAS;gBACT,QAAQ;gBACR,UAAU;aACX;SACF;QACD;YACE,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE;gBACP,MAAM;gBACN,MAAM;gBACN,IAAI;gBACJ,WAAW;gBACX,SAAS;gBACT,SAAS;gBACT,UAAU;gBACV,SAAS;gBACT,UAAU;gBACV,aAAa;aACd;SACF;QACD;YACE,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE;gBACP,MAAM;gBACN,QAAQ;gBACR,UAAU;gBACV,MAAM;gBACN,MAAM;aACP;SACF;QACD;YACE,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE;gBACP,MAAM;gBACN,OAAO;gBACP,OAAO;gBACP,cAAc;aACf;SACF;QACD;YACE,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE;gBACP,MAAM;gBACN,OAAO;gBACP,aAAa;gBACb,SAAS;gBACT,MAAM;gBACN,QAAQ;gBACR,SAAS;gBACT,OAAO;gBACP,OAAO;gBACP,KAAK;gBACL,MAAM;gBACN,QAAQ;gBACR,gBAAgB;gBAChB,SAAS;gBACT,SAAS;aACV;SACF;QACD;YACE,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE;gBACP,QAAQ;gBACR,OAAO;gBACP,SAAS;gBACT,YAAY;gBACZ,YAAY;gBACZ,SAAS;gBACT,MAAM;gBACN,aAAa;gBACb,WAAW;gBACX,MAAM;gBACN,MAAM;gBACN,OAAO;gBACP,OAAO;gBACP,UAAU;aACX;SACF;QACD;YACE,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE;gBACP,UAAU;gBACV,UAAU;gBACV,KAAK;gBACL,YAAY;aACb;SACF;QACD;YACE,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE;gBACP,KAAK;gBACL,KAAK;gBACL,KAAK;aACN;SACF;QACD;YACE,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE;gBACP,SAAS;aACV;SACF;QACD;YACE,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,YAAY;YACrB,SAAS,EAAE;gBACT,IAAI;gBACJ,IAAI;gBACJ,IAAI;gBACJ,IAAI;gBACJ,IAAI;gBACJ,IAAI;gBACJ,IAAI;aACL;SACF;QACD;YACE,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,YAAY;YACrB,SAAS,EAAE;gBACT,IAAI;gBACJ,IAAI;gBACJ,IAAI;gBACJ,IAAI;gBACJ,IAAI;gBACJ,IAAI;gBACJ,IAAI;aACL;SACF;QACD;YACE,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,YAAY;YACrB,SAAS,EAAE;gBACT,IAAI;gBACJ,IAAI;gBACJ,IAAI;gBACJ,IAAI;gBACJ,IAAI;gBACJ,IAAI;gBACJ,IAAI;gBACJ,KAAK;gBACL,IAAI;gBACJ,IAAI;aACL;SACF;QACD;YACE,MAAM,EAAE,OAAO;YACf,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,YAAY;YACrB,SAAS,EAAE;gBACT,IAAI;gBACJ,IAAI;gBACJ,IAAI;gBACJ,KAAK;aACN;SACF;QACD;YACE,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,YAAY;YACrB,SAAS,EAAE;gBACT,WAAW;gBACX,YAAY;gBACZ,aAAa;gBACb,WAAW;gBACX,aAAa;gBACb,OAAO;gBACP,SAAS;gBACT,aAAa;gBACb,WAAW;gBACX,YAAY;gBACZ,aAAa;gBACb,WAAW;gBACX,eAAe;gBACf,cAAc;aACf;SACF;KACF;CACF,CAAC"}
|
|
@@ -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
|
-
*
|
|
2
|
+
* 未标注形参 / 字段的类型推断(ADR 0056 §3.2)。
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* 1.
|
|
8
|
-
* 2.
|
|
9
|
-
* 3.
|
|
10
|
-
* 4.
|
|
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('
|
|
16
|
-
* inferFieldType('
|
|
17
|
-
* inferFieldType('
|
|
18
|
-
* inferFieldType('
|
|
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 {
|
|
27
|
-
|
|
28
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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"}
|