@typespec/emitter-framework 0.11.0-dev.1 → 0.11.0-dev.10
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/dist/src/core/components/index.js +2 -1
- package/dist/src/core/components/index.js.map +1 -0
- package/dist/src/core/components/output.js +2 -1
- package/dist/src/core/components/output.js.map +1 -0
- package/dist/src/core/components/overrides/component-overrides.js +2 -1
- package/dist/src/core/components/overrides/component-overrides.js.map +1 -0
- package/dist/src/core/components/overrides/config.js +2 -1
- package/dist/src/core/components/overrides/config.js.map +1 -0
- package/dist/src/core/components/overrides/context.js +2 -1
- package/dist/src/core/components/overrides/context.js.map +1 -0
- package/dist/src/core/context/index.js +2 -1
- package/dist/src/core/context/index.js.map +1 -0
- package/dist/src/core/context/name-policy-context.js +2 -1
- package/dist/src/core/context/name-policy-context.js.map +1 -0
- package/dist/src/core/context/tsp-context.js +2 -1
- package/dist/src/core/context/tsp-context.js.map +1 -0
- package/dist/src/core/index.js +2 -1
- package/dist/src/core/index.js.map +1 -0
- package/dist/src/core/transport-name-policy.js +2 -1
- package/dist/src/core/transport-name-policy.js.map +1 -0
- package/dist/src/core/write-output.d.ts.map +1 -1
- package/dist/src/core/write-output.js +4 -3
- package/dist/src/core/write-output.js.map +1 -0
- package/dist/src/csharp/components/class/declaration.d.ts +1 -1
- package/dist/src/csharp/components/class/declaration.d.ts.map +1 -1
- package/dist/src/csharp/components/class/declaration.js +14 -5
- package/dist/src/csharp/components/class/declaration.js.map +1 -0
- package/dist/src/csharp/components/class/declaration.test.js +65 -105
- package/dist/src/csharp/components/class/declaration.test.js.map +1 -0
- package/dist/src/csharp/components/enum/declaration.js +2 -1
- package/dist/src/csharp/components/enum/declaration.js.map +1 -0
- package/dist/src/csharp/components/enum/declaration.test.js +52 -88
- package/dist/src/csharp/components/enum/declaration.test.js.map +1 -0
- package/dist/src/csharp/components/index.js +2 -1
- package/dist/src/csharp/components/index.js.map +1 -0
- package/dist/src/csharp/components/property/property.d.ts.map +1 -1
- package/dist/src/csharp/components/property/property.js +40 -14
- package/dist/src/csharp/components/property/property.js.map +1 -0
- package/dist/src/csharp/components/property/property.test.js +129 -29
- package/dist/src/csharp/components/property/property.test.js.map +1 -0
- package/dist/src/csharp/components/type-expression.d.ts.map +1 -1
- package/dist/src/csharp/components/type-expression.js +22 -3
- package/dist/src/csharp/components/type-expression.js.map +1 -0
- package/dist/src/csharp/components/type-expression.test.js +87 -54
- package/dist/src/csharp/components/type-expression.test.js.map +1 -0
- package/dist/src/csharp/components/utils/doc-comments.js +2 -1
- package/dist/src/csharp/components/utils/doc-comments.js.map +1 -0
- package/dist/src/csharp/components/utils/nullable-util.d.ts +4 -0
- package/dist/src/csharp/components/utils/nullable-util.d.ts.map +1 -0
- package/dist/src/csharp/components/utils/nullable-util.js +27 -0
- package/dist/src/csharp/components/utils/nullable-util.js.map +1 -0
- package/dist/src/csharp/components/utils/refkey.js +2 -1
- package/dist/src/csharp/components/utils/refkey.js.map +1 -0
- package/dist/src/csharp/index.js +2 -1
- package/dist/src/csharp/index.js.map +1 -0
- package/dist/src/lib.js +2 -1
- package/dist/src/lib.js.map +1 -0
- package/dist/src/testing/index.js +2 -1
- package/dist/src/testing/index.js.map +1 -0
- package/dist/src/testing/scenario-test/code-block-expectation.js +2 -1
- package/dist/src/testing/scenario-test/code-block-expectation.js.map +1 -0
- package/dist/src/testing/scenario-test/code-block-expectation.test.js +2 -1
- package/dist/src/testing/scenario-test/code-block-expectation.test.js.map +1 -0
- package/dist/src/testing/scenario-test/harness.js +2 -1
- package/dist/src/testing/scenario-test/harness.js.map +1 -0
- package/dist/src/testing/scenario-test/index.js +2 -1
- package/dist/src/testing/scenario-test/index.js.map +1 -0
- package/dist/src/testing/scenario-test/snippet-extractor.js +2 -1
- package/dist/src/testing/scenario-test/snippet-extractor.js.map +1 -0
- package/dist/src/typescript/components/array-expression.js +2 -1
- package/dist/src/typescript/components/array-expression.js.map +1 -0
- package/dist/src/typescript/components/arrow-function.js +2 -1
- package/dist/src/typescript/components/arrow-function.js.map +1 -0
- package/dist/src/typescript/components/class-method.js +2 -1
- package/dist/src/typescript/components/class-method.js.map +1 -0
- package/dist/src/typescript/components/enum-declaration.js +2 -1
- package/dist/src/typescript/components/enum-declaration.js.map +1 -0
- package/dist/src/typescript/components/function-declaration.js +2 -1
- package/dist/src/typescript/components/function-declaration.js.map +1 -0
- package/dist/src/typescript/components/function-expression.js +2 -1
- package/dist/src/typescript/components/function-expression.js.map +1 -0
- package/dist/src/typescript/components/function-type.js +2 -1
- package/dist/src/typescript/components/function-type.js.map +1 -0
- package/dist/src/typescript/components/index.js +2 -1
- package/dist/src/typescript/components/index.js.map +1 -0
- package/dist/src/typescript/components/interface-declaration.js +2 -1
- package/dist/src/typescript/components/interface-declaration.js.map +1 -0
- package/dist/src/typescript/components/interface-member.js +2 -1
- package/dist/src/typescript/components/interface-member.js.map +1 -0
- package/dist/src/typescript/components/interface-method.js +2 -1
- package/dist/src/typescript/components/interface-method.js.map +1 -0
- package/dist/src/typescript/components/record-expression.js +2 -1
- package/dist/src/typescript/components/record-expression.js.map +1 -0
- package/dist/src/typescript/components/static-serializers.js +2 -1
- package/dist/src/typescript/components/static-serializers.js.map +1 -0
- package/dist/src/typescript/components/type-alias-declaration.js +2 -1
- package/dist/src/typescript/components/type-alias-declaration.js.map +1 -0
- package/dist/src/typescript/components/type-declaration.js +2 -1
- package/dist/src/typescript/components/type-declaration.js.map +1 -0
- package/dist/src/typescript/components/type-expression.js +2 -1
- package/dist/src/typescript/components/type-expression.js.map +1 -0
- package/dist/src/typescript/components/type-transform.js +2 -1
- package/dist/src/typescript/components/type-transform.js.map +1 -0
- package/dist/src/typescript/components/union/declaration.js +2 -1
- package/dist/src/typescript/components/union/declaration.js.map +1 -0
- package/dist/src/typescript/components/union/declaration.test.js +2 -1
- package/dist/src/typescript/components/union/declaration.test.js.map +1 -0
- package/dist/src/typescript/components/union/expression.js +2 -1
- package/dist/src/typescript/components/union/expression.js.map +1 -0
- package/dist/src/typescript/components/union/expression.test.js +2 -1
- package/dist/src/typescript/components/union/expression.test.js.map +1 -0
- package/dist/src/typescript/components/value-expression.js +2 -1
- package/dist/src/typescript/components/value-expression.js.map +1 -0
- package/dist/src/typescript/index.js +2 -1
- package/dist/src/typescript/index.js.map +1 -0
- package/dist/src/typescript/lib.js +2 -1
- package/dist/src/typescript/lib.js.map +1 -0
- package/dist/src/typescript/utils/index.js +2 -1
- package/dist/src/typescript/utils/index.js.map +1 -0
- package/dist/src/typescript/utils/operation.js +2 -1
- package/dist/src/typescript/utils/operation.js.map +1 -0
- package/dist/src/typescript/utils/refkey.js +2 -1
- package/dist/src/typescript/utils/refkey.js.map +1 -0
- package/dist/test/test-host.js +2 -1
- package/dist/test/test-host.js.map +1 -0
- package/dist/test/testing/snippet-extractor-csharp.test.js +2 -1
- package/dist/test/testing/snippet-extractor-csharp.test.js.map +1 -0
- package/dist/test/testing/snippet-extractor-java.test.js +2 -1
- package/dist/test/testing/snippet-extractor-java.test.js.map +1 -0
- package/dist/test/testing/snippet-extractor-python.test.js +2 -1
- package/dist/test/testing/snippet-extractor-python.test.js.map +1 -0
- package/dist/test/testing/snippet-extractor-typescript.test.js +2 -1
- package/dist/test/testing/snippet-extractor-typescript.test.js.map +1 -0
- package/dist/test/typescript/components/arrow-function.test.js +18 -22
- package/dist/test/typescript/components/arrow-function.test.js.map +1 -0
- package/dist/test/typescript/components/component-override.test.js +3 -2
- package/dist/test/typescript/components/component-override.test.js.map +1 -0
- package/dist/test/typescript/components/enum-declaration.test.js +2 -1
- package/dist/test/typescript/components/enum-declaration.test.js.map +1 -0
- package/dist/test/typescript/components/function-declaration.test.js +3 -2
- package/dist/test/typescript/components/function-declaration.test.js.map +1 -0
- package/dist/test/typescript/components/function-expression.test.js +18 -22
- package/dist/test/typescript/components/function-expression.test.js.map +1 -0
- package/dist/test/typescript/components/function-type.test.js +18 -22
- package/dist/test/typescript/components/function-type.test.js.map +1 -0
- package/dist/test/typescript/components/interface-declaration.test.js +3 -2
- package/dist/test/typescript/components/interface-declaration.test.js.map +1 -0
- package/dist/test/typescript/components/interface-method.test.js +37 -45
- package/dist/test/typescript/components/interface-method.test.js.map +1 -0
- package/dist/test/typescript/components/member-expression.test.js +2 -1
- package/dist/test/typescript/components/member-expression.test.js.map +1 -0
- package/dist/test/typescript/components/type-alias-declaration.test.js +8 -5
- package/dist/test/typescript/components/type-alias-declaration.test.js.map +1 -0
- package/dist/test/typescript/components/type-transform.test.js +29 -27
- package/dist/test/typescript/components/type-transform.test.js.map +1 -0
- package/dist/test/typescript/components/value-expression.test.js +3 -2
- package/dist/test/typescript/components/value-expression.test.js.map +1 -0
- package/dist/test/typescript/utils.js +2 -1
- package/dist/test/typescript/utils.js.map +1 -0
- package/dist/test/utils.d.ts +1 -0
- package/dist/test/utils.d.ts.map +1 -1
- package/dist/test/utils.js +13 -3
- package/dist/test/utils.js.map +1 -0
- package/dist/test/vitest.setup.js +2 -1
- package/dist/test/vitest.setup.js.map +1 -0
- package/package.json +8 -8
- package/src/core/write-output.ts +2 -2
- package/src/csharp/components/class/declaration.test.tsx +64 -102
- package/src/csharp/components/class/declaration.tsx +13 -3
- package/src/csharp/components/enum/declaration.test.tsx +47 -78
- package/src/csharp/components/property/property.test.tsx +108 -25
- package/src/csharp/components/property/property.tsx +43 -11
- package/src/csharp/components/type-expression.test.tsx +84 -69
- package/src/csharp/components/type-expression.tsx +25 -4
- package/src/csharp/components/utils/nullable-util.ts +25 -0
- package/test/typescript/components/arrow-function.test.tsx +23 -42
- package/test/typescript/components/component-override.test.tsx +1 -1
- package/test/typescript/components/function-declaration.test.tsx +2 -1
- package/test/typescript/components/function-expression.test.tsx +23 -42
- package/test/typescript/components/function-type.test.tsx +22 -40
- package/test/typescript/components/interface-declaration.test.tsx +1 -1
- package/test/typescript/components/interface-method.test.tsx +50 -92
- package/test/typescript/components/type-alias-declaration.test.tsx +8 -6
- package/test/typescript/components/type-transform.test.tsx +37 -37
- package/test/typescript/components/value-expression.test.tsx +1 -1
- package/test/utils.ts +10 -3
- package/dist/test/typescript/test-host.d.ts +0 -12
- package/dist/test/typescript/test-host.d.ts.map +0 -1
- package/dist/test/typescript/test-host.js +0 -29
- package/test/typescript/test-host.ts +0 -37
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createComponent as _$createComponent, createIntrinsic as _$createIntrinsic } from "@alloy-js/core/jsx-runtime";
|
|
2
2
|
import { Tester } from "#test/test-host.js";
|
|
3
|
-
import { createCSharpNamePolicy,
|
|
3
|
+
import { createCSharpNamePolicy, SourceFile } from "@alloy-js/csharp";
|
|
4
4
|
import { t } from "@typespec/compiler/testing";
|
|
5
5
|
import { beforeEach, expect, it } from "vitest";
|
|
6
6
|
import { Output } from "../../../core/index.js";
|
|
@@ -17,15 +17,10 @@ function Wrapper(props) {
|
|
|
17
17
|
},
|
|
18
18
|
namePolicy: policy,
|
|
19
19
|
get children() {
|
|
20
|
-
return _$createComponent(
|
|
21
|
-
|
|
20
|
+
return _$createComponent(SourceFile, {
|
|
21
|
+
path: "test.cs",
|
|
22
22
|
get children() {
|
|
23
|
-
return
|
|
24
|
-
path: "test.cs",
|
|
25
|
-
get children() {
|
|
26
|
-
return props.children;
|
|
27
|
-
}
|
|
28
|
-
});
|
|
23
|
+
return props.children;
|
|
29
24
|
}
|
|
30
25
|
});
|
|
31
26
|
}
|
|
@@ -48,14 +43,11 @@ it("renders a basic enum declaration", async () => {
|
|
|
48
43
|
});
|
|
49
44
|
}
|
|
50
45
|
})).toRenderTo(`
|
|
51
|
-
|
|
46
|
+
enum TestEnum
|
|
52
47
|
{
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
Value2,
|
|
57
|
-
Value3
|
|
58
|
-
}
|
|
48
|
+
Value1,
|
|
49
|
+
Value2,
|
|
50
|
+
Value3
|
|
59
51
|
}
|
|
60
52
|
`);
|
|
61
53
|
});
|
|
@@ -72,12 +64,9 @@ it("renders an empty enum declaration", async () => {
|
|
|
72
64
|
});
|
|
73
65
|
}
|
|
74
66
|
})).toRenderTo(`
|
|
75
|
-
|
|
67
|
+
enum TestEnum
|
|
76
68
|
{
|
|
77
|
-
enum TestEnum
|
|
78
|
-
{
|
|
79
69
|
|
|
80
|
-
}
|
|
81
70
|
}
|
|
82
71
|
`);
|
|
83
72
|
});
|
|
@@ -98,13 +87,10 @@ it("can override enum name", async () => {
|
|
|
98
87
|
});
|
|
99
88
|
}
|
|
100
89
|
})).toRenderTo(`
|
|
101
|
-
|
|
90
|
+
enum CustomEnumName
|
|
102
91
|
{
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
Value1,
|
|
106
|
-
Value2
|
|
107
|
-
}
|
|
92
|
+
Value1,
|
|
93
|
+
Value2
|
|
108
94
|
}
|
|
109
95
|
`);
|
|
110
96
|
});
|
|
@@ -125,13 +111,10 @@ it("renders an enum with access modifiers", async () => {
|
|
|
125
111
|
});
|
|
126
112
|
}
|
|
127
113
|
})).toRenderTo(`
|
|
128
|
-
|
|
114
|
+
internal enum TestEnum
|
|
129
115
|
{
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
Value1,
|
|
133
|
-
Value2
|
|
134
|
-
}
|
|
116
|
+
Value1,
|
|
117
|
+
Value2
|
|
135
118
|
}
|
|
136
119
|
`);
|
|
137
120
|
});
|
|
@@ -153,29 +136,21 @@ it("renders enum with C# naming conventions", async () => {
|
|
|
153
136
|
return createCSharpNamePolicy();
|
|
154
137
|
},
|
|
155
138
|
get children() {
|
|
156
|
-
return _$createComponent(
|
|
157
|
-
|
|
139
|
+
return _$createComponent(SourceFile, {
|
|
140
|
+
path: "test.cs",
|
|
158
141
|
get children() {
|
|
159
|
-
return _$createComponent(
|
|
160
|
-
|
|
161
|
-
get children() {
|
|
162
|
-
return _$createComponent(EnumDeclaration, {
|
|
163
|
-
type: TestEnum
|
|
164
|
-
});
|
|
165
|
-
}
|
|
142
|
+
return _$createComponent(EnumDeclaration, {
|
|
143
|
+
type: TestEnum
|
|
166
144
|
});
|
|
167
145
|
}
|
|
168
146
|
});
|
|
169
147
|
}
|
|
170
148
|
})).toRenderTo(`
|
|
171
|
-
|
|
149
|
+
enum TestEnum
|
|
172
150
|
{
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
ValueTwo,
|
|
177
|
-
ValueThree
|
|
178
|
-
}
|
|
151
|
+
ValueOne,
|
|
152
|
+
ValueTwo,
|
|
153
|
+
ValueThree
|
|
179
154
|
}
|
|
180
155
|
`);
|
|
181
156
|
});
|
|
@@ -194,13 +169,10 @@ it("renders enum with single value", async () => {
|
|
|
194
169
|
});
|
|
195
170
|
}
|
|
196
171
|
})).toRenderTo(`
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
OnlyValue
|
|
202
|
-
}
|
|
203
|
-
}
|
|
172
|
+
enum TestEnum
|
|
173
|
+
{
|
|
174
|
+
OnlyValue
|
|
175
|
+
}
|
|
204
176
|
`);
|
|
205
177
|
});
|
|
206
178
|
it("renders enum with numeric-like member names", async () => {
|
|
@@ -221,15 +193,12 @@ it("renders enum with numeric-like member names", async () => {
|
|
|
221
193
|
});
|
|
222
194
|
}
|
|
223
195
|
})).toRenderTo(`
|
|
224
|
-
|
|
196
|
+
enum TestEnum
|
|
225
197
|
{
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
Value10,
|
|
231
|
-
Value100
|
|
232
|
-
}
|
|
198
|
+
Value0,
|
|
199
|
+
Value1,
|
|
200
|
+
Value10,
|
|
201
|
+
Value100
|
|
233
202
|
}
|
|
234
203
|
`);
|
|
235
204
|
});
|
|
@@ -257,19 +226,16 @@ it("renders multiple enums in the same namespace", async () => {
|
|
|
257
226
|
})];
|
|
258
227
|
}
|
|
259
228
|
})).toRenderTo(`
|
|
260
|
-
|
|
229
|
+
enum TestEnum1
|
|
261
230
|
{
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
OptionB,
|
|
271
|
-
OptionC
|
|
272
|
-
}
|
|
231
|
+
Value1,
|
|
232
|
+
Value2
|
|
233
|
+
}
|
|
234
|
+
enum TestEnum2
|
|
235
|
+
{
|
|
236
|
+
OptionA,
|
|
237
|
+
OptionB,
|
|
238
|
+
OptionC
|
|
273
239
|
}
|
|
274
240
|
`);
|
|
275
241
|
});
|
|
@@ -291,19 +257,17 @@ it("renders an enum with doc comments", async () => {
|
|
|
291
257
|
});
|
|
292
258
|
}
|
|
293
259
|
})).toRenderTo(`
|
|
294
|
-
|
|
260
|
+
enum TestEnum
|
|
295
261
|
{
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
/// </summary>
|
|
305
|
-
Value2
|
|
306
|
-
}
|
|
262
|
+
/// <summary>
|
|
263
|
+
/// This is value one
|
|
264
|
+
/// </summary>
|
|
265
|
+
Value1,
|
|
266
|
+
/// <summary>
|
|
267
|
+
/// This is value two
|
|
268
|
+
/// </summary>
|
|
269
|
+
Value2
|
|
307
270
|
}
|
|
308
271
|
`);
|
|
309
|
-
});
|
|
272
|
+
});
|
|
273
|
+
//# sourceMappingURL=declaration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Tester","createCSharpNamePolicy","SourceFile","t","beforeEach","expect","it","Output","EnumDeclaration","runner","createInstance","Wrapper","props","policy","_$createComponent","program","namePolicy","children","path","TestEnum","compile","code","enum","type","toRenderTo","name","internal","TestEnum1","TestEnum2","_$createIntrinsic"],"sources":["../../../../../src/csharp/components/enum/declaration.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../../src/csharp/components/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc,wBAAwB;AACtC;AACA;AACA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"property.d.ts","sourceRoot":"","sources":["../../../../../src/csharp/components/property/property.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,
|
|
1
|
+
{"version":3,"file":"property.d.ts","sourceRoot":"","sources":["../../../../../src/csharp/components/property/property.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAe,KAAK,aAAa,EAAiC,MAAM,oBAAoB,CAAC;AAMpG,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,aAAa,CAAC;IACpB,8FAA8F;IAC9F,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,QAAQ,CAkDvD;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,aAAa,CAAC;CACrB"}
|
|
@@ -1,18 +1,44 @@
|
|
|
1
1
|
import { memo as _$memo, createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
2
|
import * as cs from "@alloy-js/csharp";
|
|
3
3
|
import { Attribute } from "@alloy-js/csharp";
|
|
4
|
-
import { resolveEncodedName } from "@typespec/compiler";
|
|
4
|
+
import { getProperty, resolveEncodedName } from "@typespec/compiler";
|
|
5
5
|
import { useTsp } from "../../../core/index.js";
|
|
6
6
|
import { TypeExpression } from "../type-expression.js";
|
|
7
7
|
import { getDocComments } from "../utils/doc-comments.js";
|
|
8
|
+
import { getNullableUnionInnerType } from "../utils/nullable-util.js";
|
|
8
9
|
/**
|
|
9
10
|
* Create a C# property declaration from a TypeSpec property type.
|
|
10
11
|
*/
|
|
11
12
|
export function Property(props) {
|
|
12
|
-
const result = preprocessPropertyType(props.type
|
|
13
|
+
const result = preprocessPropertyType(props.type);
|
|
13
14
|
const {
|
|
14
15
|
$
|
|
15
16
|
} = useTsp();
|
|
17
|
+
let overrideType = "";
|
|
18
|
+
let isVirtual = false;
|
|
19
|
+
if (props.type.model) {
|
|
20
|
+
if (props.type.model.baseModel) {
|
|
21
|
+
const base = props.type.model.baseModel;
|
|
22
|
+
const baseProperty = getProperty(base, props.type.name);
|
|
23
|
+
if (baseProperty) {
|
|
24
|
+
const baseResult = preprocessPropertyType(baseProperty);
|
|
25
|
+
if (baseResult.nullable === result.nullable && baseResult.type === result.type) {
|
|
26
|
+
overrideType = "override";
|
|
27
|
+
} else {
|
|
28
|
+
overrideType = "new";
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (overrideType === "" && props.type.model.derivedModels && props.type.model.derivedModels.length > 0) {
|
|
33
|
+
isVirtual = props.type.model.derivedModels.some(derived => {
|
|
34
|
+
const derivedProperty = derived.properties.get(props.type.name);
|
|
35
|
+
if (derivedProperty) {
|
|
36
|
+
const derivedResult = preprocessPropertyType(derivedProperty);
|
|
37
|
+
return derivedResult.nullable === result.nullable && derivedResult.type === result.type;
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
16
42
|
return _$createComponent(cs.Property, {
|
|
17
43
|
get name() {
|
|
18
44
|
return props.type.name;
|
|
@@ -24,7 +50,10 @@ export function Property(props) {
|
|
|
24
50
|
}
|
|
25
51
|
});
|
|
26
52
|
},
|
|
53
|
+
override: overrideType === "override",
|
|
54
|
+
"new": overrideType === "new",
|
|
27
55
|
"public": true,
|
|
56
|
+
virtual: isVirtual,
|
|
28
57
|
get required() {
|
|
29
58
|
return !props.type.optional;
|
|
30
59
|
},
|
|
@@ -57,29 +86,26 @@ function JsonNameAttribute(props) {
|
|
|
57
86
|
}
|
|
58
87
|
});
|
|
59
88
|
}
|
|
60
|
-
function preprocessPropertyType(
|
|
61
|
-
const
|
|
62
|
-
$
|
|
63
|
-
} = useTsp();
|
|
89
|
+
function preprocessPropertyType(prop) {
|
|
90
|
+
const type = prop.type;
|
|
64
91
|
if (type.kind === "Union") {
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
const nullVariant = [...variants.values()].find(v => v.type !== $.intrinsic.null);
|
|
68
|
-
if (nonNullVariant && nullVariant && variants.size === 2) {
|
|
92
|
+
const innerType = getNullableUnionInnerType(type);
|
|
93
|
+
if (innerType) {
|
|
69
94
|
return {
|
|
70
|
-
type:
|
|
95
|
+
type: innerType,
|
|
71
96
|
nullable: true
|
|
72
97
|
};
|
|
73
98
|
} else {
|
|
74
99
|
return {
|
|
75
100
|
type,
|
|
76
|
-
nullable:
|
|
101
|
+
nullable: prop.optional
|
|
77
102
|
};
|
|
78
103
|
}
|
|
79
104
|
} else {
|
|
80
105
|
return {
|
|
81
106
|
type,
|
|
82
|
-
nullable:
|
|
107
|
+
nullable: prop.optional
|
|
83
108
|
};
|
|
84
109
|
}
|
|
85
|
-
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=property.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["cs","Attribute","getProperty","resolveEncodedName","useTsp","TypeExpression","getDocComments","getNullableUnionInnerType","Property","props","result","preprocessPropertyType","type","$","overrideType","isVirtual","model","baseModel","base","baseProperty","name","baseResult","nullable","derivedModels","length","some","derived","derivedProperty","properties","get","derivedResult","_$createComponent","override","virtual","required","optional","doc","attributes","_$memo","jsonAttributes","JsonNameAttribute","undefined","set","program","jsonName","args","JSON","stringify","prop","kind","innerType"],"sources":["../../../../../src/csharp/components/property/property.tsx"],"sourcesContent":[null],"mappings":";AACA,OAAO,KAAKA,EAAE,MAAM,kBAAkB;AACtC,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,WAAW,EAAsBC,kBAAkB,QAAmB,oBAAoB;AACnG,SAASC,MAAM,QAAQ,wBAAwB;AAC/C,SAASC,cAAc;AACvB,SAASC,cAAc;AACvB,SAASC,yBAAyB,QAAQ,2BAA2B;AAQrE;AACA;AACA;AACA,OAAO,SAASC,QAAQA,CAACC,KAAoB,EAAY;EACvD,MAAMC,MAAM,GAAGC,sBAAsB,CAACF,KAAK,CAACG,IAAI,CAAC;EACjD,MAAM;IAAEC;EAAE,CAAC,GAAGT,MAAM,CAAC,CAAC;EAEtB,IAAIU,YAAqC,GAAG,EAAE;EAC9C,IAAIC,SAAS,GAAG,KAAK;EACrB,IAAIN,KAAK,CAACG,IAAI,CAACI,KAAK,EAAE;IACpB,IAAIP,KAAK,CAACG,IAAI,CAACI,KAAK,CAACC,SAAS,EAAE;MAC9B,MAAMC,IAAI,GAAGT,KAAK,CAACG,IAAI,CAACI,KAAK,CAACC,SAAS;MACvC,MAAME,YAAY,GAAGjB,WAAW,CAACgB,IAAI,EAAET,KAAK,CAACG,IAAI,CAACQ,IAAI,CAAC;MACvD,IAAID,YAAY,EAAE;QAChB,MAAME,UAAU,GAAGV,sBAAsB,CAACQ,YAAY,CAAC;QACvD,IAAIE,UAAU,CAACC,QAAQ,KAAKZ,MAAM,CAACY,QAAQ,IAAID,UAAU,CAACT,IAAI,KAAKF,MAAM,CAACE,IAAI,EAAE;UAC9EE,YAAY,GAAG,UAAU;QAC3B,CAAC,MAAM;UACLA,YAAY,GAAG,KAAK;QACtB;MACF;IACF;IACA,IACEA,YAAY,KAAK,EAAE,IACnBL,KAAK,CAACG,IAAI,CAACI,KAAK,CAACO,aAAa,IAC9Bd,KAAK,CAACG,IAAI,CAACI,KAAK,CAACO,aAAa,CAACC,MAAM,GAAG,CAAC,EACzC;MACAT,SAAS,GAAGN,KAAK,CAACG,IAAI,CAACI,KAAK,CAACO,aAAa,CAACE,IAAI,CAAEC,OAAO,IAAK;QAC3D,MAAMC,eAAe,GAAGD,OAAO,CAACE,UAAU,CAACC,GAAG,CAACpB,KAAK,CAACG,IAAI,CAACQ,IAAI,CAAC;QAC/D,IAAIO,eAAe,EAAE;UACnB,MAAMG,aAAa,GAAGnB,sBAAsB,CAACgB,eAAe,CAAC;UAC7D,OAAOG,aAAa,CAACR,QAAQ,KAAKZ,MAAM,CAACY,QAAQ,IAAIQ,aAAa,CAAClB,IAAI,KAAKF,MAAM,CAACE,IAAI;QACzF;MACF,CAAC,CAAC;IACJ;EACF;EAEA,OAAAmB,iBAAA,CACG/B,EAAE,CAACQ,QAAQ;IAAA,IACVY,IAAIA,CAAA;MAAA,OAAEX,KAAK,CAACG,IAAI,CAACQ,IAAI;IAAA;IAAA,IACrBR,IAAIA,CAAA;MAAA,OAAAmB,iBAAA,CAAG1B,cAAc;QAAA,IAACO,IAAIA,CAAA;UAAA,OAAEF,MAAM,CAACE,IAAI;QAAA;MAAA;IAAA;IACvCoB,QAAQ,EAAElB,YAAY,KAAK,UAAU;IAAA,OAChCA,YAAY,KAAK,KAAK;IAAA;IAE3BmB,OAAO,EAAElB,SAAS;IAAA,IAClBmB,QAAQA,CAAA;MAAA,OAAE,CAACzB,KAAK,CAACG,IAAI,CAACuB,QAAQ;IAAA;IAAA,IAC9Bb,QAAQA,CAAA;MAAA,OAAEZ,MAAM,CAACY,QAAQ;IAAA;IAAA,IACzBc,GAAGA,CAAA;MAAA,OAAE9B,cAAc,CAACO,CAAC,EAAEJ,KAAK,CAACG,IAAI,CAAC;IAAA;IAAA,IAClCyB,UAAUA,CAAA;MAAA,OAAEC,MAAA,SAAA7B,KAAK,CAAC8B,cAAc,MAAG,CAAAR,iBAAA,CAAES,iBAAiB;QAAA,IAAC5B,IAAIA,CAAA;UAAA,OAAEH,KAAK,CAACG,IAAI;QAAA;MAAA,GAAK,GAAG6B,SAAS;IAAA;IACxFZ,GAAG;IACHa,GAAG;EAAA;AAGT;AAMA,SAASF,iBAAiBA,CAAC/B,KAA6B,EAAY;EAClE,MAAM;IAAEkC;EAAQ,CAAC,GAAGvC,MAAM,CAAC,CAAC;EAC5B,MAAMwC,QAAQ,GAAGzC,kBAAkB,CAACwC,OAAO,EAAElC,KAAK,CAACG,IAAI,EAAE,kBAAkB,CAAC;EAC5E,OAAAmB,iBAAA,CAAQ9B,SAAS;IAACmB,IAAI;IAAA,IAAqCyB,IAAIA,CAAA;MAAA,OAAE,CAACC,IAAI,CAACC,SAAS,CAACH,QAAQ,CAAC,CAAC;IAAA;EAAA;AAC7F;AAEA,SAASjC,sBAAsBA,CAACqC,IAAmB,EAAqC;EACtF,MAAMpC,IAAI,GAAGoC,IAAI,CAACpC,IAAI;EAEtB,IAAIA,IAAI,CAACqC,IAAI,KAAK,OAAO,EAAE;IACzB,MAAMC,SAAS,GAAG3C,yBAAyB,CAACK,IAAI,CAAC;IACjD,IAAIsC,SAAS,EAAE;MACb,OAAO;QAAEtC,IAAI,EAAEsC,SAAS;QAAE5B,QAAQ,EAAE;MAAK,CAAC;IAC5C,CAAC,MAAM;MACL,OAAO;QAAEV,IAAI;QAAEU,QAAQ,EAAE0B,IAAI,CAACb;MAAS,CAAC;IAC1C;EACF,CAAC,MAAM;IACL,OAAO;MAAEvB,IAAI;MAAEU,QAAQ,EAAE0B,IAAI,CAACb;IAAS,CAAC;EAC1C;AACF","ignoreList":[]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
2
|
import { Tester } from "#test/test-host.js";
|
|
3
|
-
import {
|
|
3
|
+
import { List } from "@alloy-js/core";
|
|
4
|
+
import { ClassDeclaration, createCSharpNamePolicy, SourceFile } from "@alloy-js/csharp";
|
|
4
5
|
import { t } from "@typespec/compiler/testing";
|
|
5
6
|
import { beforeEach, describe, expect, it } from "vitest";
|
|
6
7
|
import { Output } from "../../../core/components/output.js";
|
|
@@ -17,18 +18,13 @@ function Wrapper(props) {
|
|
|
17
18
|
},
|
|
18
19
|
namePolicy: policy,
|
|
19
20
|
get children() {
|
|
20
|
-
return _$createComponent(
|
|
21
|
-
|
|
21
|
+
return _$createComponent(SourceFile, {
|
|
22
|
+
path: "test.cs",
|
|
22
23
|
get children() {
|
|
23
|
-
return _$createComponent(
|
|
24
|
-
|
|
24
|
+
return _$createComponent(ClassDeclaration, {
|
|
25
|
+
name: "Test",
|
|
25
26
|
get children() {
|
|
26
|
-
return
|
|
27
|
-
name: "Test",
|
|
28
|
-
get children() {
|
|
29
|
-
return props.children;
|
|
30
|
-
}
|
|
31
|
-
});
|
|
27
|
+
return props.children;
|
|
32
28
|
}
|
|
33
29
|
});
|
|
34
30
|
}
|
|
@@ -51,12 +47,51 @@ it("maps prop: string | null to nullable property", async () => {
|
|
|
51
47
|
});
|
|
52
48
|
}
|
|
53
49
|
})).toRenderTo(`
|
|
54
|
-
|
|
50
|
+
class Test
|
|
55
51
|
{
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
52
|
+
public required string? Prop1 { get; set; }
|
|
53
|
+
}
|
|
54
|
+
`);
|
|
55
|
+
});
|
|
56
|
+
it("maps optional properties to nullable properties", async () => {
|
|
57
|
+
const {
|
|
58
|
+
prop1
|
|
59
|
+
} = await tester.compile(t.code`
|
|
60
|
+
model TestModel {
|
|
61
|
+
${t.modelProperty("prop1")}?: string;
|
|
62
|
+
}
|
|
63
|
+
`);
|
|
64
|
+
expect(_$createComponent(Wrapper, {
|
|
65
|
+
get children() {
|
|
66
|
+
return _$createComponent(Property, {
|
|
67
|
+
type: prop1
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
})).toRenderTo(`
|
|
71
|
+
class Test
|
|
72
|
+
{
|
|
73
|
+
public string? Prop1 { get; set; }
|
|
74
|
+
}
|
|
75
|
+
`);
|
|
76
|
+
});
|
|
77
|
+
it("maps optional and nullable properties to nullable properties", async () => {
|
|
78
|
+
const {
|
|
79
|
+
prop1
|
|
80
|
+
} = await tester.compile(t.code`
|
|
81
|
+
model TestModel {
|
|
82
|
+
${t.modelProperty("prop1")}?: string | null;
|
|
83
|
+
}
|
|
84
|
+
`);
|
|
85
|
+
expect(_$createComponent(Wrapper, {
|
|
86
|
+
get children() {
|
|
87
|
+
return _$createComponent(Property, {
|
|
88
|
+
type: prop1
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
})).toRenderTo(`
|
|
92
|
+
class Test
|
|
93
|
+
{
|
|
94
|
+
public string? Prop1 { get; set; }
|
|
60
95
|
}
|
|
61
96
|
`);
|
|
62
97
|
});
|
|
@@ -77,13 +112,10 @@ describe("jsonAttributes", () => {
|
|
|
77
112
|
});
|
|
78
113
|
}
|
|
79
114
|
})).toRenderTo(`
|
|
80
|
-
|
|
115
|
+
class Test
|
|
81
116
|
{
|
|
82
|
-
|
|
83
|
-
{
|
|
84
|
-
[System.Text.Json.JsonPropertyName("prop1")]
|
|
85
|
-
public required string Prop1 { get; set; }
|
|
86
|
-
}
|
|
117
|
+
[System.Text.Json.JsonPropertyName("prop1")]
|
|
118
|
+
public required string Prop1 { get; set; }
|
|
87
119
|
}
|
|
88
120
|
`);
|
|
89
121
|
});
|
|
@@ -104,14 +136,82 @@ describe("jsonAttributes", () => {
|
|
|
104
136
|
});
|
|
105
137
|
}
|
|
106
138
|
})).toRenderTo(`
|
|
107
|
-
|
|
139
|
+
class Test
|
|
140
|
+
{
|
|
141
|
+
[System.Text.Json.JsonPropertyName("prop_1")]
|
|
142
|
+
public required string Prop1 { get; set; }
|
|
143
|
+
}
|
|
144
|
+
`);
|
|
145
|
+
});
|
|
146
|
+
it("inherit prop: override, new", async () => {
|
|
147
|
+
const r = await tester.compile(t.code`
|
|
148
|
+
model TestModel extends BaseModel {
|
|
149
|
+
${t.modelProperty("prop1")}: string;
|
|
150
|
+
${t.modelProperty("prop2")}: string | null;
|
|
151
|
+
}
|
|
152
|
+
model BaseModel {
|
|
153
|
+
prop1: string | null;
|
|
154
|
+
prop2: string | null;
|
|
155
|
+
}
|
|
156
|
+
`);
|
|
157
|
+
expect(_$createComponent(Wrapper, {
|
|
158
|
+
get children() {
|
|
159
|
+
return _$createComponent(List, {
|
|
160
|
+
get children() {
|
|
161
|
+
return [_$createComponent(Property, {
|
|
162
|
+
get type() {
|
|
163
|
+
return r.prop1;
|
|
164
|
+
}
|
|
165
|
+
}), _$createComponent(Property, {
|
|
166
|
+
get type() {
|
|
167
|
+
return r.prop2;
|
|
168
|
+
}
|
|
169
|
+
})];
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
})).toRenderTo(`
|
|
174
|
+
class Test
|
|
108
175
|
{
|
|
109
|
-
|
|
110
|
-
{
|
|
111
|
-
|
|
112
|
-
|
|
176
|
+
public new required string Prop1 { get; set; }
|
|
177
|
+
public override required string? Prop2 { get; set; }
|
|
178
|
+
}
|
|
179
|
+
`);
|
|
180
|
+
});
|
|
181
|
+
it("inherit prop: virtual", async () => {
|
|
182
|
+
const r = await tester.compile(t.code`
|
|
183
|
+
model TestModel extends BaseModel {
|
|
184
|
+
prop1: string;
|
|
185
|
+
prop2: string | null;
|
|
186
|
+
}
|
|
187
|
+
model BaseModel {
|
|
188
|
+
${t.modelProperty("prop1")}: string | null;
|
|
189
|
+
${t.modelProperty("prop2")}: string | null;
|
|
190
|
+
}
|
|
191
|
+
`);
|
|
192
|
+
expect(_$createComponent(Wrapper, {
|
|
193
|
+
get children() {
|
|
194
|
+
return _$createComponent(List, {
|
|
195
|
+
get children() {
|
|
196
|
+
return [_$createComponent(Property, {
|
|
197
|
+
get type() {
|
|
198
|
+
return r.prop1;
|
|
199
|
+
}
|
|
200
|
+
}), _$createComponent(Property, {
|
|
201
|
+
get type() {
|
|
202
|
+
return r.prop2;
|
|
203
|
+
}
|
|
204
|
+
})];
|
|
113
205
|
}
|
|
206
|
+
});
|
|
114
207
|
}
|
|
115
|
-
|
|
208
|
+
})).toRenderTo(`
|
|
209
|
+
class Test
|
|
210
|
+
{
|
|
211
|
+
public required string? Prop1 { get; set; }
|
|
212
|
+
public virtual required string? Prop2 { get; set; }
|
|
213
|
+
}
|
|
214
|
+
`);
|
|
116
215
|
});
|
|
117
|
-
});
|
|
216
|
+
});
|
|
217
|
+
//# sourceMappingURL=property.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Tester","List","ClassDeclaration","createCSharpNamePolicy","SourceFile","t","beforeEach","describe","expect","it","Output","Property","tester","createInstance","Wrapper","props","policy","_$createComponent","program","namePolicy","children","path","name","prop1","compile","code","modelProperty","type","toRenderTo","jsonAttributes","r","prop2"],"sources":["../../../../../src/csharp/components/property/property.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-expression.d.ts","sourceRoot":"","sources":["../../../../src/csharp/components/type-expression.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"type-expression.d.ts","sourceRoot":"","sources":["../../../../src/csharp/components/type-expression.tsx"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,IAAI,EACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAM1D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,QAAQ,CAmCnE;AAED,QAAA,MAAM,yBAAyB,4BAqC7B,CAAC;AAEH,wBAAgB,4BAA4B,CAC1C,CAAC,EAAE,OAAO,EACV,IAAI,EAAE,MAAM,GAAG,aAAa,GAC3B,MAAM,GAAG,IAAI,CAoBf;AAyBD,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
|
|
@@ -2,11 +2,20 @@ import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime
|
|
|
2
2
|
import { Experimental_OverridableComponent } from "#core/index.js";
|
|
3
3
|
import { code } from "@alloy-js/core";
|
|
4
4
|
import { Reference } from "@alloy-js/csharp";
|
|
5
|
-
import { getTypeName } from "@typespec/compiler";
|
|
5
|
+
import { getTypeName, isVoidType } from "@typespec/compiler";
|
|
6
6
|
import { useTsp } from "../../core/index.js";
|
|
7
7
|
import { reportTypescriptDiagnostic } from "../../typescript/lib.js";
|
|
8
|
+
import { getNullableUnionInnerType } from "./utils/nullable-util.js";
|
|
8
9
|
import { efRefkey } from "./utils/refkey.js";
|
|
9
10
|
export function TypeExpression(props) {
|
|
11
|
+
if (props.type.kind === "Union") {
|
|
12
|
+
const nullabletype = getNullableUnionInnerType(props.type);
|
|
13
|
+
if (nullabletype) {
|
|
14
|
+
return code`${_$createComponent(TypeExpression, {
|
|
15
|
+
type: nullabletype
|
|
16
|
+
})}?`;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
10
19
|
const {
|
|
11
20
|
$
|
|
12
21
|
} = useTsp();
|
|
@@ -39,6 +48,15 @@ export function TypeExpression(props) {
|
|
|
39
48
|
return props.type.indexer.value;
|
|
40
49
|
}
|
|
41
50
|
})}>`;
|
|
51
|
+
} else if ($.literal.isString(props.type)) {
|
|
52
|
+
// c# doesn't have literal types, so we map them to their corresponding C# types in general
|
|
53
|
+
return code`string`;
|
|
54
|
+
} else if ($.literal.isNumeric(props.type)) {
|
|
55
|
+
return Number.isInteger(props.type.value) ? code`int` : code`double`;
|
|
56
|
+
} else if ($.literal.isBoolean(props.type)) {
|
|
57
|
+
return code`bool`;
|
|
58
|
+
} else if (isVoidType(props.type)) {
|
|
59
|
+
return code`void`;
|
|
42
60
|
}
|
|
43
61
|
throw new Error(`Unsupported type for TypeExpression: ${props.type.kind} (${getTypeName(props.type)})`);
|
|
44
62
|
}
|
|
@@ -142,11 +160,12 @@ function isDeclaration($, type) {
|
|
|
142
160
|
if ($.array.is(type) || $.record.is(type)) {
|
|
143
161
|
return false;
|
|
144
162
|
}
|
|
145
|
-
return
|
|
163
|
+
return true;
|
|
146
164
|
case "Union":
|
|
147
165
|
return Boolean(type.name);
|
|
148
166
|
default:
|
|
149
167
|
return false;
|
|
150
168
|
}
|
|
151
169
|
}
|
|
152
|
-
export { intrinsicNameToCSharpType };
|
|
170
|
+
export { intrinsicNameToCSharpType };
|
|
171
|
+
//# sourceMappingURL=type-expression.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Experimental_OverridableComponent","code","Reference","getTypeName","isVoidType","useTsp","reportTypescriptDiagnostic","getNullableUnionInnerType","efRefkey","TypeExpression","props","type","kind","nullabletype","_$createComponent","$","isDeclaration","reference","children","refkey","scalar","is","getScalarIntrinsicExpression","array","indexer","value","record","literal","isString","isNumeric","Number","isInteger","isBoolean","Error","intrinsicNameToCSharpType","Map","intrinsicName","isUtcDateTime","extendsUtcDateTime","getStdBase","name","csType","get","program","target","Boolean"],"sources":["../../../../src/csharp/components/type-expression.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|