ormbridge 0.8.0 → 0.10.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/README.md +2 -0
- package/dist/cliRunner.js +3 -3
- package/dist/cliRunner.js.map +1 -1
- package/dist/config.d.ts +3 -2
- package/dist/config.js.map +1 -1
- package/dist/emitters/efcore.d.ts +40 -0
- package/dist/emitters/efcore.js +686 -0
- package/dist/emitters/efcore.js.map +1 -0
- package/dist/emitters/efcoreColumns.d.ts +75 -0
- package/dist/emitters/efcoreColumns.js +492 -0
- package/dist/emitters/efcoreColumns.js.map +1 -0
- package/dist/emitters/efcoreNames.d.ts +30 -0
- package/dist/emitters/efcoreNames.js +268 -0
- package/dist/emitters/efcoreNames.js.map +1 -0
- package/dist/emitters/efcoreRender.d.ts +2 -0
- package/dist/emitters/efcoreRender.js +570 -0
- package/dist/emitters/efcoreRender.js.map +1 -0
- package/dist/emitters/efcoreTypes.d.ts +114 -0
- package/dist/emitters/efcoreTypes.js +2 -0
- package/dist/emitters/efcoreTypes.js.map +1 -0
- package/dist/emitters/jpa.d.ts +36 -0
- package/dist/emitters/jpa.js +253 -0
- package/dist/emitters/jpa.js.map +1 -0
- package/dist/emitters/jpaColumns.d.ts +25 -0
- package/dist/emitters/jpaColumns.js +341 -0
- package/dist/emitters/jpaColumns.js.map +1 -0
- package/dist/emitters/jpaDefaults.d.ts +24 -0
- package/dist/emitters/jpaDefaults.js +223 -0
- package/dist/emitters/jpaDefaults.js.map +1 -0
- package/dist/emitters/jpaEnums.d.ts +11 -0
- package/dist/emitters/jpaEnums.js +134 -0
- package/dist/emitters/jpaEnums.js.map +1 -0
- package/dist/emitters/jpaFormat.d.ts +16 -0
- package/dist/emitters/jpaFormat.js +73 -0
- package/dist/emitters/jpaFormat.js.map +1 -0
- package/dist/emitters/jpaKeys.d.ts +25 -0
- package/dist/emitters/jpaKeys.js +110 -0
- package/dist/emitters/jpaKeys.js.map +1 -0
- package/dist/emitters/jpaNames.d.ts +26 -0
- package/dist/emitters/jpaNames.js +234 -0
- package/dist/emitters/jpaNames.js.map +1 -0
- package/dist/emitters/jpaRelations.d.ts +41 -0
- package/dist/emitters/jpaRelations.js +304 -0
- package/dist/emitters/jpaRelations.js.map +1 -0
- package/dist/emitters/jpaRender.d.ts +10 -0
- package/dist/emitters/jpaRender.js +81 -0
- package/dist/emitters/jpaRender.js.map +1 -0
- package/dist/emitters/jpaScalars.d.ts +32 -0
- package/dist/emitters/jpaScalars.js +188 -0
- package/dist/emitters/jpaScalars.js.map +1 -0
- package/dist/emitters/jpaTable.d.ts +10 -0
- package/dist/emitters/jpaTable.js +109 -0
- package/dist/emitters/jpaTable.js.map +1 -0
- package/dist/emitters/jpaTypes.d.ts +85 -0
- package/dist/emitters/jpaTypes.js +36 -0
- package/dist/emitters/jpaTypes.js.map +1 -0
- package/dist/formats.d.ts +8 -4
- package/dist/formats.js +68 -0
- package/dist/formats.js.map +1 -1
- package/dist/index.d.ts +8 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/io.js +51 -1
- package/dist/io.js.map +1 -1
- package/dist/parsers/csharpChains.d.ts +36 -0
- package/dist/parsers/csharpChains.js +157 -0
- package/dist/parsers/csharpChains.js.map +1 -0
- package/dist/parsers/csharpDeclarations.d.ts +3 -0
- package/dist/parsers/csharpDeclarations.js +293 -0
- package/dist/parsers/csharpDeclarations.js.map +1 -0
- package/dist/parsers/csharpSyntax.d.ts +130 -0
- package/dist/parsers/csharpSyntax.js +339 -0
- package/dist/parsers/csharpSyntax.js.map +1 -0
- package/dist/parsers/efcore.d.ts +17 -0
- package/dist/parsers/efcore.js +265 -0
- package/dist/parsers/efcore.js.map +1 -0
- package/dist/parsers/efcoreAnnotations.d.ts +19 -0
- package/dist/parsers/efcoreAnnotations.js +293 -0
- package/dist/parsers/efcoreAnnotations.js.map +1 -0
- package/dist/parsers/efcoreBuild.d.ts +13 -0
- package/dist/parsers/efcoreBuild.js +523 -0
- package/dist/parsers/efcoreBuild.js.map +1 -0
- package/dist/parsers/efcoreEntities.d.ts +13 -0
- package/dist/parsers/efcoreEntities.js +468 -0
- package/dist/parsers/efcoreEntities.js.map +1 -0
- package/dist/parsers/efcoreFields.d.ts +22 -0
- package/dist/parsers/efcoreFields.js +285 -0
- package/dist/parsers/efcoreFields.js.map +1 -0
- package/dist/parsers/efcoreFluent.d.ts +47 -0
- package/dist/parsers/efcoreFluent.js +375 -0
- package/dist/parsers/efcoreFluent.js.map +1 -0
- package/dist/parsers/efcoreModel.d.ts +209 -0
- package/dist/parsers/efcoreModel.js +2 -0
- package/dist/parsers/efcoreModel.js.map +1 -0
- package/dist/parsers/efcoreRelations.d.ts +46 -0
- package/dist/parsers/efcoreRelations.js +317 -0
- package/dist/parsers/efcoreRelations.js.map +1 -0
- package/dist/parsers/efcoreSteps.d.ts +89 -0
- package/dist/parsers/efcoreSteps.js +793 -0
- package/dist/parsers/efcoreSteps.js.map +1 -0
- package/dist/parsers/efcoreTypes.d.ts +35 -0
- package/dist/parsers/efcoreTypes.js +404 -0
- package/dist/parsers/efcoreTypes.js.map +1 -0
- package/dist/parsers/javaSyntax.d.ts +120 -0
- package/dist/parsers/javaSyntax.js +304 -0
- package/dist/parsers/javaSyntax.js.map +1 -0
- package/dist/parsers/javaValues.d.ts +5 -0
- package/dist/parsers/javaValues.js +187 -0
- package/dist/parsers/javaValues.js.map +1 -0
- package/dist/parsers/jpa.d.ts +17 -0
- package/dist/parsers/jpa.js +131 -0
- package/dist/parsers/jpa.js.map +1 -0
- package/dist/parsers/jpaAnnotations.d.ts +46 -0
- package/dist/parsers/jpaAnnotations.js +156 -0
- package/dist/parsers/jpaAnnotations.js.map +1 -0
- package/dist/parsers/jpaBuild.d.ts +4 -0
- package/dist/parsers/jpaBuild.js +297 -0
- package/dist/parsers/jpaBuild.js.map +1 -0
- package/dist/parsers/jpaClasses.d.ts +27 -0
- package/dist/parsers/jpaClasses.js +257 -0
- package/dist/parsers/jpaClasses.js.map +1 -0
- package/dist/parsers/jpaCollections.d.ts +12 -0
- package/dist/parsers/jpaCollections.js +106 -0
- package/dist/parsers/jpaCollections.js.map +1 -0
- package/dist/parsers/jpaColumns.d.ts +26 -0
- package/dist/parsers/jpaColumns.js +361 -0
- package/dist/parsers/jpaColumns.js.map +1 -0
- package/dist/parsers/jpaEntities.d.ts +9 -0
- package/dist/parsers/jpaEntities.js +181 -0
- package/dist/parsers/jpaEntities.js.map +1 -0
- package/dist/parsers/jpaIndexes.d.ts +12 -0
- package/dist/parsers/jpaIndexes.js +87 -0
- package/dist/parsers/jpaIndexes.js.map +1 -0
- package/dist/parsers/jpaJoins.d.ts +68 -0
- package/dist/parsers/jpaJoins.js +131 -0
- package/dist/parsers/jpaJoins.js.map +1 -0
- package/dist/parsers/jpaModel.d.ts +73 -0
- package/dist/parsers/jpaModel.js +2 -0
- package/dist/parsers/jpaModel.js.map +1 -0
- package/dist/parsers/jpaNotes.d.ts +20 -0
- package/dist/parsers/jpaNotes.js +138 -0
- package/dist/parsers/jpaNotes.js.map +1 -0
- package/dist/parsers/jpaRelations.d.ts +4 -0
- package/dist/parsers/jpaRelations.js +242 -0
- package/dist/parsers/jpaRelations.js.map +1 -0
- package/dist/parsers/jpaTypes.d.ts +23 -0
- package/dist/parsers/jpaTypes.js +232 -0
- package/dist/parsers/jpaTypes.js.map +1 -0
- package/dist/styles.d.ts +4 -2
- package/dist/styles.js +7 -1
- package/dist/styles.js.map +1 -1
- package/package.json +10 -1
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
import { evaluate, parseTypeText, readAttributes, splitTopLevel, } from './csharpSyntax.js';
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// Declarations
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
const CLASS_LIKE = new Map([
|
|
6
|
+
['class_declaration', 'class'],
|
|
7
|
+
['record_declaration', 'record'],
|
|
8
|
+
['record_struct_declaration', 'record'],
|
|
9
|
+
['struct_declaration', 'struct'],
|
|
10
|
+
['interface_declaration', 'interface'],
|
|
11
|
+
]);
|
|
12
|
+
function modifiersOf(node) {
|
|
13
|
+
return node.namedChildren
|
|
14
|
+
.filter((child) => child.type === 'modifier')
|
|
15
|
+
.map((child) => child.text);
|
|
16
|
+
}
|
|
17
|
+
function readBases(node) {
|
|
18
|
+
const list = node.namedChildren.find((child) => child.type === 'base_list');
|
|
19
|
+
if (list === undefined) {
|
|
20
|
+
return [];
|
|
21
|
+
}
|
|
22
|
+
// The text is split instead of walking the children: a record with primary constructor and generic base
|
|
23
|
+
// produces error nodes in the grammar.
|
|
24
|
+
const text = list.text.replace(/^\s*:/, '');
|
|
25
|
+
return splitTopLevel(text)
|
|
26
|
+
.filter((part) => part !== '')
|
|
27
|
+
.map((part) => parseTypeText(part.replace(/\(.*$/s, '')));
|
|
28
|
+
}
|
|
29
|
+
function readTypeParameters(node) {
|
|
30
|
+
const list = node.namedChildren.find((child) => child.type === 'type_parameter_list');
|
|
31
|
+
return (list?.namedChildren.map((child) => child.namedChild(0)?.text ?? child.text) ?? []);
|
|
32
|
+
}
|
|
33
|
+
function readAccessors(node) {
|
|
34
|
+
const list = node.childForFieldName('accessors');
|
|
35
|
+
let hasGetter = false;
|
|
36
|
+
let hasSetter = false;
|
|
37
|
+
let isAuto = true;
|
|
38
|
+
for (const accessor of list?.namedChildren ?? []) {
|
|
39
|
+
if (accessor.type !== 'accessor_declaration') {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
const keyword = accessor.children.find((child) => ['get', 'set', 'init'].includes(child.type))?.type ?? '';
|
|
43
|
+
if (keyword === 'get') {
|
|
44
|
+
hasGetter = true;
|
|
45
|
+
}
|
|
46
|
+
else if (keyword === 'set' || keyword === 'init') {
|
|
47
|
+
hasSetter = true;
|
|
48
|
+
}
|
|
49
|
+
if (accessor.childForFieldName('body') !== null) {
|
|
50
|
+
isAuto = false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return { hasGetter, hasSetter, isAuto };
|
|
54
|
+
}
|
|
55
|
+
function readProperty(node) {
|
|
56
|
+
const nameNode = node.childForFieldName('name');
|
|
57
|
+
const typeNode = node.childForFieldName('type');
|
|
58
|
+
if (nameNode === null || typeNode === null) {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
const value = node.childForFieldName('value');
|
|
62
|
+
const isArrow = value?.type === 'arrow_expression_clause';
|
|
63
|
+
const accessors = readAccessors(node);
|
|
64
|
+
const initializer = value === null || isArrow
|
|
65
|
+
? null
|
|
66
|
+
: value.type === 'equals_value_clause'
|
|
67
|
+
? value.namedChild(0)
|
|
68
|
+
: value;
|
|
69
|
+
return {
|
|
70
|
+
name: nameNode.text,
|
|
71
|
+
type: parseTypeText(typeNode.text),
|
|
72
|
+
modifiers: modifiersOf(node),
|
|
73
|
+
attributes: readAttributes(node),
|
|
74
|
+
hasGetter: accessors.hasGetter || isArrow,
|
|
75
|
+
hasSetter: accessors.hasSetter,
|
|
76
|
+
isComputed: isArrow || (accessors.hasGetter && !accessors.hasSetter),
|
|
77
|
+
isField: false,
|
|
78
|
+
...(initializer === null ? {} : { initializer }),
|
|
79
|
+
node,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function readFieldProperties(node, cls, consts) {
|
|
83
|
+
const declaration = node.namedChildren.find((child) => child.type === 'variable_declaration');
|
|
84
|
+
const typeNode = declaration?.childForFieldName('type') ?? null;
|
|
85
|
+
if (declaration === undefined || typeNode === null) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const modifiers = modifiersOf(node);
|
|
89
|
+
for (const declarator of declaration.namedChildren) {
|
|
90
|
+
if (declarator.type !== 'variable_declarator') {
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
const nameNode = declarator.childForFieldName('name') ?? declarator.namedChild(0);
|
|
94
|
+
const clause = declarator.namedChildren.find((child) => child.type === 'equals_value_clause');
|
|
95
|
+
const initializer = clause?.namedChild(0) ?? null;
|
|
96
|
+
if (nameNode === null) {
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
if (modifiers.includes('const') && initializer !== null) {
|
|
100
|
+
cls.consts.set(nameNode.text, evaluate(initializer, consts));
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
if (modifiers.includes('static') &&
|
|
104
|
+
modifiers.includes('readonly') &&
|
|
105
|
+
initializer !== null) {
|
|
106
|
+
const value = evaluate(initializer, consts);
|
|
107
|
+
if (value.kind === 'string' || value.kind === 'number') {
|
|
108
|
+
cls.consts.set(nameNode.text, value);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
cls.properties.push({
|
|
112
|
+
name: nameNode.text,
|
|
113
|
+
type: parseTypeText(typeNode.text),
|
|
114
|
+
modifiers,
|
|
115
|
+
attributes: readAttributes(node),
|
|
116
|
+
hasGetter: true,
|
|
117
|
+
hasSetter: !modifiers.includes('readonly'),
|
|
118
|
+
isComputed: false,
|
|
119
|
+
isField: true,
|
|
120
|
+
...(initializer === null ? {} : { initializer }),
|
|
121
|
+
node,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
function readMethod(node) {
|
|
126
|
+
const nameNode = node.childForFieldName('name');
|
|
127
|
+
if (nameNode === null) {
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
const parameters = [];
|
|
131
|
+
const list = node.childForFieldName('parameters');
|
|
132
|
+
for (const parameter of list?.namedChildren ?? []) {
|
|
133
|
+
const parameterName = parameter.childForFieldName('name');
|
|
134
|
+
const parameterType = parameter.childForFieldName('type');
|
|
135
|
+
if (parameterName !== null && parameterType !== null) {
|
|
136
|
+
parameters.push({
|
|
137
|
+
name: parameterName.text,
|
|
138
|
+
type: parseTypeText(parameterType.text),
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
const body = node.childForFieldName('body');
|
|
143
|
+
return {
|
|
144
|
+
name: nameNode.text,
|
|
145
|
+
parameters,
|
|
146
|
+
...(body === null ? {} : { body }),
|
|
147
|
+
node,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
function readClassLike(node, kind, path, outer, file, consts, depth) {
|
|
151
|
+
const nameNode = node.childForFieldName('name');
|
|
152
|
+
if (nameNode === null) {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
const cls = {
|
|
156
|
+
name: nameNode.text,
|
|
157
|
+
kind,
|
|
158
|
+
modifiers: modifiersOf(node),
|
|
159
|
+
typeParameters: readTypeParameters(node),
|
|
160
|
+
bases: readBases(node),
|
|
161
|
+
attributes: readAttributes(node),
|
|
162
|
+
properties: [],
|
|
163
|
+
methods: [],
|
|
164
|
+
consts: new Map(),
|
|
165
|
+
...(outer === undefined ? {} : { outer }),
|
|
166
|
+
path,
|
|
167
|
+
};
|
|
168
|
+
file.classes.push(cls);
|
|
169
|
+
// Positional records: `record Person(int Id, string Name)` declares the properties Id and Name.
|
|
170
|
+
const parameters = node.childForFieldName('parameters');
|
|
171
|
+
if (kind === 'record') {
|
|
172
|
+
for (const parameter of parameters?.namedChildren ?? []) {
|
|
173
|
+
const parameterName = parameter.childForFieldName('name');
|
|
174
|
+
const parameterType = parameter.childForFieldName('type');
|
|
175
|
+
if (parameterName !== null && parameterType !== null) {
|
|
176
|
+
cls.properties.push({
|
|
177
|
+
name: parameterName.text,
|
|
178
|
+
type: parseTypeText(parameterType.text),
|
|
179
|
+
modifiers: ['public'],
|
|
180
|
+
attributes: readAttributes(parameter),
|
|
181
|
+
hasGetter: true,
|
|
182
|
+
hasSetter: true,
|
|
183
|
+
isComputed: false,
|
|
184
|
+
isField: false,
|
|
185
|
+
node: parameter,
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
const body = node.childForFieldName('body');
|
|
191
|
+
for (const member of body?.namedChildren ?? []) {
|
|
192
|
+
if (member.type === 'property_declaration') {
|
|
193
|
+
const property = readProperty(member);
|
|
194
|
+
if (property !== undefined) {
|
|
195
|
+
cls.properties.push(property);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
else if (member.type === 'field_declaration') {
|
|
199
|
+
readFieldProperties(member, cls, (names) => cls.consts.get(names.join('.')) ?? consts(names));
|
|
200
|
+
}
|
|
201
|
+
else if (member.type === 'method_declaration') {
|
|
202
|
+
const method = readMethod(member);
|
|
203
|
+
if (method !== undefined) {
|
|
204
|
+
cls.methods.push(method);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
else if (depth < 8) {
|
|
208
|
+
readDeclaration(member, path, cls.name, file, consts, depth + 1);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
function readEnum(node, path) {
|
|
213
|
+
const nameNode = node.childForFieldName('name');
|
|
214
|
+
if (nameNode === null) {
|
|
215
|
+
return undefined;
|
|
216
|
+
}
|
|
217
|
+
const members = [];
|
|
218
|
+
let next = 0;
|
|
219
|
+
const values = new Map();
|
|
220
|
+
const lookup = (names) => {
|
|
221
|
+
const known = values.get(names[names.length - 1] ?? '');
|
|
222
|
+
return known === undefined
|
|
223
|
+
? undefined
|
|
224
|
+
: { kind: 'number', value: known, text: String(known) };
|
|
225
|
+
};
|
|
226
|
+
const body = node.childForFieldName('body');
|
|
227
|
+
for (const member of body?.namedChildren ?? []) {
|
|
228
|
+
if (member.type !== 'enum_member_declaration') {
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
const memberName = member.childForFieldName('name');
|
|
232
|
+
if (memberName === null) {
|
|
233
|
+
continue;
|
|
234
|
+
}
|
|
235
|
+
const valueNode = member.childForFieldName('value');
|
|
236
|
+
let value = next;
|
|
237
|
+
if (valueNode !== null) {
|
|
238
|
+
const evaluated = evaluate(valueNode, lookup);
|
|
239
|
+
value = evaluated.kind === 'number' ? evaluated.value : undefined;
|
|
240
|
+
}
|
|
241
|
+
members.push({ name: memberName.text, value });
|
|
242
|
+
if (value !== undefined) {
|
|
243
|
+
values.set(memberName.text, value);
|
|
244
|
+
}
|
|
245
|
+
next = value === undefined ? undefined : value + 1;
|
|
246
|
+
}
|
|
247
|
+
return { name: nameNode.text, members, path };
|
|
248
|
+
}
|
|
249
|
+
function readDeclaration(node, path, outer, file, consts, depth) {
|
|
250
|
+
const kind = CLASS_LIKE.get(node.type);
|
|
251
|
+
if (kind !== undefined) {
|
|
252
|
+
readClassLike(node, kind, path, outer, file, consts, depth);
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
if (node.type === 'enum_declaration') {
|
|
256
|
+
const declared = readEnum(node, path);
|
|
257
|
+
if (declared !== undefined) {
|
|
258
|
+
file.enums.push(declared);
|
|
259
|
+
}
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
if ((node.type === 'namespace_declaration' ||
|
|
263
|
+
node.type === 'file_scoped_namespace_declaration') &&
|
|
264
|
+
depth < 16) {
|
|
265
|
+
const container = node.childForFieldName('body') ?? node;
|
|
266
|
+
for (const child of container.namedChildren) {
|
|
267
|
+
readDeclaration(child, path, outer, file, consts, depth + 1);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
/** Reads the types of one parsed file. Constants are looked up through `consts` (from other files). */
|
|
272
|
+
export function readCSharpFile(root, path, consts) {
|
|
273
|
+
const file = {
|
|
274
|
+
path,
|
|
275
|
+
classes: [],
|
|
276
|
+
enums: [],
|
|
277
|
+
hasErrors: root.hasError,
|
|
278
|
+
nullableDirective: undefined,
|
|
279
|
+
};
|
|
280
|
+
for (const directive of root.descendantsOfType('nullable_directive')) {
|
|
281
|
+
if (/\bdisable\b/.test(directive.text)) {
|
|
282
|
+
file.nullableDirective = file.nullableDirective ?? 'disable';
|
|
283
|
+
}
|
|
284
|
+
else if (/\benable\b/.test(directive.text)) {
|
|
285
|
+
file.nullableDirective = file.nullableDirective ?? 'enable';
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
for (const child of root.namedChildren) {
|
|
289
|
+
readDeclaration(child, path, undefined, file, consts, 0);
|
|
290
|
+
}
|
|
291
|
+
return file;
|
|
292
|
+
}
|
|
293
|
+
//# sourceMappingURL=csharpDeclarations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csharpDeclarations.js","sourceRoot":"","sources":["../../src/parsers/csharpDeclarations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import Parser from 'web-tree-sitter';
|
|
2
|
+
import { type Result } from '../result.js';
|
|
3
|
+
export type SyntaxNode = Parser.SyntaxNode;
|
|
4
|
+
/** A C# type expression reduced to what mapping needs: a name, generic arguments and `?` / `[]` markers. */
|
|
5
|
+
export interface CsType {
|
|
6
|
+
/** The last identifier, without qualifiers or arguments: `ICollection`, `Post`, `int`. */
|
|
7
|
+
name: string;
|
|
8
|
+
/** The type as written, without nullable and array markers. */
|
|
9
|
+
text: string;
|
|
10
|
+
args: CsType[];
|
|
11
|
+
/** True for `T?` and `Nullable<T>` (the wrapper is removed from `name` and `args`). */
|
|
12
|
+
nullable: boolean;
|
|
13
|
+
/** Number of array dimensions: `byte[]` is 1 and `int[][]` is 2. */
|
|
14
|
+
arrayDepth: number;
|
|
15
|
+
}
|
|
16
|
+
/** A statically evaluated expression. Anything that cannot be evaluated is `other` with its source text. */
|
|
17
|
+
export type CsValue = {
|
|
18
|
+
kind: 'string';
|
|
19
|
+
value: string;
|
|
20
|
+
} | {
|
|
21
|
+
kind: 'number';
|
|
22
|
+
value: number;
|
|
23
|
+
text: string;
|
|
24
|
+
} | {
|
|
25
|
+
kind: 'bool';
|
|
26
|
+
value: boolean;
|
|
27
|
+
} | {
|
|
28
|
+
kind: 'null';
|
|
29
|
+
}
|
|
30
|
+
/** `DeleteBehavior.Cascade`, or a bare identifier that is not a known constant. */
|
|
31
|
+
| {
|
|
32
|
+
kind: 'member';
|
|
33
|
+
path: string[];
|
|
34
|
+
} | {
|
|
35
|
+
kind: 'nameof';
|
|
36
|
+
name: string;
|
|
37
|
+
} | {
|
|
38
|
+
kind: 'typeof';
|
|
39
|
+
type: string;
|
|
40
|
+
} | {
|
|
41
|
+
kind: 'array';
|
|
42
|
+
items: CsValue[];
|
|
43
|
+
} | {
|
|
44
|
+
kind: 'other';
|
|
45
|
+
text: string;
|
|
46
|
+
};
|
|
47
|
+
/** Looks a constant up by simple or `Class.Name` form; used while evaluating expressions. */
|
|
48
|
+
export type ConstLookup = (path: string[]) => CsValue | undefined;
|
|
49
|
+
export interface CsAttribute {
|
|
50
|
+
/** The attribute name without the `Attribute` suffix and any qualifier: `Key`, `Table`. */
|
|
51
|
+
name: string;
|
|
52
|
+
/** Positional argument expressions. */
|
|
53
|
+
args: SyntaxNode[];
|
|
54
|
+
/** Named arguments (`Schema = "x"`, `name: "x"`) by name. */
|
|
55
|
+
named: Map<string, SyntaxNode>;
|
|
56
|
+
node: SyntaxNode;
|
|
57
|
+
}
|
|
58
|
+
export interface CsProperty {
|
|
59
|
+
name: string;
|
|
60
|
+
type: CsType;
|
|
61
|
+
modifiers: string[];
|
|
62
|
+
attributes: CsAttribute[];
|
|
63
|
+
hasGetter: boolean;
|
|
64
|
+
hasSetter: boolean;
|
|
65
|
+
/** True for `=> expression` properties and for properties with a getter body only. */
|
|
66
|
+
isComputed: boolean;
|
|
67
|
+
/** True for fields (`public int X;`), which EF Core does not map by convention. */
|
|
68
|
+
isField: boolean;
|
|
69
|
+
initializer?: SyntaxNode;
|
|
70
|
+
node: SyntaxNode;
|
|
71
|
+
}
|
|
72
|
+
export interface CsParameter {
|
|
73
|
+
name: string;
|
|
74
|
+
type: CsType;
|
|
75
|
+
}
|
|
76
|
+
export interface CsMethod {
|
|
77
|
+
name: string;
|
|
78
|
+
parameters: CsParameter[];
|
|
79
|
+
/** The body block, or the expression of an expression-bodied method. */
|
|
80
|
+
body?: SyntaxNode;
|
|
81
|
+
node: SyntaxNode;
|
|
82
|
+
}
|
|
83
|
+
export type CsClassKind = 'class' | 'record' | 'struct' | 'interface';
|
|
84
|
+
export interface CsClass {
|
|
85
|
+
name: string;
|
|
86
|
+
kind: CsClassKind;
|
|
87
|
+
modifiers: string[];
|
|
88
|
+
typeParameters: string[];
|
|
89
|
+
bases: CsType[];
|
|
90
|
+
attributes: CsAttribute[];
|
|
91
|
+
properties: CsProperty[];
|
|
92
|
+
methods: CsMethod[];
|
|
93
|
+
consts: Map<string, CsValue>;
|
|
94
|
+
/** Name of the enclosing type for nested types. */
|
|
95
|
+
outer?: string;
|
|
96
|
+
path: string;
|
|
97
|
+
}
|
|
98
|
+
export interface CsEnumMember {
|
|
99
|
+
name: string;
|
|
100
|
+
/** The numeric value, or undefined when it could not be evaluated. */
|
|
101
|
+
value: number | undefined;
|
|
102
|
+
}
|
|
103
|
+
export interface CsEnum {
|
|
104
|
+
name: string;
|
|
105
|
+
members: CsEnumMember[];
|
|
106
|
+
path: string;
|
|
107
|
+
}
|
|
108
|
+
export interface CsFile {
|
|
109
|
+
path: string;
|
|
110
|
+
classes: CsClass[];
|
|
111
|
+
enums: CsEnum[];
|
|
112
|
+
/** True when the grammar reported syntax errors. */
|
|
113
|
+
hasErrors: boolean;
|
|
114
|
+
/** True when the file switches nullable reference types on or off with a `#nullable` directive. */
|
|
115
|
+
nullableDirective: 'enable' | 'disable' | undefined;
|
|
116
|
+
}
|
|
117
|
+
/** Lazily loads the tree-sitter C# grammar (WebAssembly, no native build step). */
|
|
118
|
+
export declare function getCSharpParser(): Promise<Result<Parser>>;
|
|
119
|
+
/** Splits at commas that are not inside `<...>`, `(...)` or `[...]`. */
|
|
120
|
+
export declare function splitTopLevel(text: string): string[];
|
|
121
|
+
/** Reads a type from its source text. Never fails: unreadable text becomes a type named after the text. */
|
|
122
|
+
export declare function parseTypeText(text: string, depth?: number): CsType;
|
|
123
|
+
/** Decodes the text of a regular, verbatim (`@"..."`) or raw (`"""..."""`) string literal. */
|
|
124
|
+
export declare function unquoteCSharpString(literal: string): string;
|
|
125
|
+
/** Evaluates literals, constants, `nameof`, `typeof`, enum-like member paths, unary minus and `+`. */
|
|
126
|
+
export declare function evaluate(node: SyntaxNode, consts: ConstLookup, depth?: number): CsValue;
|
|
127
|
+
/** `A.B.C` as ['A', 'B', 'C'], or undefined when a part is not a plain name. */
|
|
128
|
+
export declare function memberPath(node: SyntaxNode): string[] | undefined;
|
|
129
|
+
/** The attributes of a declaration, skipping those aimed at the field, return value or parameters. */
|
|
130
|
+
export declare function readAttributes(declaration: SyntaxNode): CsAttribute[];
|