@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.
Files changed (190) hide show
  1. package/dist/src/core/components/index.js +2 -1
  2. package/dist/src/core/components/index.js.map +1 -0
  3. package/dist/src/core/components/output.js +2 -1
  4. package/dist/src/core/components/output.js.map +1 -0
  5. package/dist/src/core/components/overrides/component-overrides.js +2 -1
  6. package/dist/src/core/components/overrides/component-overrides.js.map +1 -0
  7. package/dist/src/core/components/overrides/config.js +2 -1
  8. package/dist/src/core/components/overrides/config.js.map +1 -0
  9. package/dist/src/core/components/overrides/context.js +2 -1
  10. package/dist/src/core/components/overrides/context.js.map +1 -0
  11. package/dist/src/core/context/index.js +2 -1
  12. package/dist/src/core/context/index.js.map +1 -0
  13. package/dist/src/core/context/name-policy-context.js +2 -1
  14. package/dist/src/core/context/name-policy-context.js.map +1 -0
  15. package/dist/src/core/context/tsp-context.js +2 -1
  16. package/dist/src/core/context/tsp-context.js.map +1 -0
  17. package/dist/src/core/index.js +2 -1
  18. package/dist/src/core/index.js.map +1 -0
  19. package/dist/src/core/transport-name-policy.js +2 -1
  20. package/dist/src/core/transport-name-policy.js.map +1 -0
  21. package/dist/src/core/write-output.d.ts.map +1 -1
  22. package/dist/src/core/write-output.js +4 -3
  23. package/dist/src/core/write-output.js.map +1 -0
  24. package/dist/src/csharp/components/class/declaration.d.ts +1 -1
  25. package/dist/src/csharp/components/class/declaration.d.ts.map +1 -1
  26. package/dist/src/csharp/components/class/declaration.js +14 -5
  27. package/dist/src/csharp/components/class/declaration.js.map +1 -0
  28. package/dist/src/csharp/components/class/declaration.test.js +65 -105
  29. package/dist/src/csharp/components/class/declaration.test.js.map +1 -0
  30. package/dist/src/csharp/components/enum/declaration.js +2 -1
  31. package/dist/src/csharp/components/enum/declaration.js.map +1 -0
  32. package/dist/src/csharp/components/enum/declaration.test.js +52 -88
  33. package/dist/src/csharp/components/enum/declaration.test.js.map +1 -0
  34. package/dist/src/csharp/components/index.js +2 -1
  35. package/dist/src/csharp/components/index.js.map +1 -0
  36. package/dist/src/csharp/components/property/property.d.ts.map +1 -1
  37. package/dist/src/csharp/components/property/property.js +40 -14
  38. package/dist/src/csharp/components/property/property.js.map +1 -0
  39. package/dist/src/csharp/components/property/property.test.js +129 -29
  40. package/dist/src/csharp/components/property/property.test.js.map +1 -0
  41. package/dist/src/csharp/components/type-expression.d.ts.map +1 -1
  42. package/dist/src/csharp/components/type-expression.js +22 -3
  43. package/dist/src/csharp/components/type-expression.js.map +1 -0
  44. package/dist/src/csharp/components/type-expression.test.js +87 -54
  45. package/dist/src/csharp/components/type-expression.test.js.map +1 -0
  46. package/dist/src/csharp/components/utils/doc-comments.js +2 -1
  47. package/dist/src/csharp/components/utils/doc-comments.js.map +1 -0
  48. package/dist/src/csharp/components/utils/nullable-util.d.ts +4 -0
  49. package/dist/src/csharp/components/utils/nullable-util.d.ts.map +1 -0
  50. package/dist/src/csharp/components/utils/nullable-util.js +27 -0
  51. package/dist/src/csharp/components/utils/nullable-util.js.map +1 -0
  52. package/dist/src/csharp/components/utils/refkey.js +2 -1
  53. package/dist/src/csharp/components/utils/refkey.js.map +1 -0
  54. package/dist/src/csharp/index.js +2 -1
  55. package/dist/src/csharp/index.js.map +1 -0
  56. package/dist/src/lib.js +2 -1
  57. package/dist/src/lib.js.map +1 -0
  58. package/dist/src/testing/index.js +2 -1
  59. package/dist/src/testing/index.js.map +1 -0
  60. package/dist/src/testing/scenario-test/code-block-expectation.js +2 -1
  61. package/dist/src/testing/scenario-test/code-block-expectation.js.map +1 -0
  62. package/dist/src/testing/scenario-test/code-block-expectation.test.js +2 -1
  63. package/dist/src/testing/scenario-test/code-block-expectation.test.js.map +1 -0
  64. package/dist/src/testing/scenario-test/harness.js +2 -1
  65. package/dist/src/testing/scenario-test/harness.js.map +1 -0
  66. package/dist/src/testing/scenario-test/index.js +2 -1
  67. package/dist/src/testing/scenario-test/index.js.map +1 -0
  68. package/dist/src/testing/scenario-test/snippet-extractor.js +2 -1
  69. package/dist/src/testing/scenario-test/snippet-extractor.js.map +1 -0
  70. package/dist/src/typescript/components/array-expression.js +2 -1
  71. package/dist/src/typescript/components/array-expression.js.map +1 -0
  72. package/dist/src/typescript/components/arrow-function.js +2 -1
  73. package/dist/src/typescript/components/arrow-function.js.map +1 -0
  74. package/dist/src/typescript/components/class-method.js +2 -1
  75. package/dist/src/typescript/components/class-method.js.map +1 -0
  76. package/dist/src/typescript/components/enum-declaration.js +2 -1
  77. package/dist/src/typescript/components/enum-declaration.js.map +1 -0
  78. package/dist/src/typescript/components/function-declaration.js +2 -1
  79. package/dist/src/typescript/components/function-declaration.js.map +1 -0
  80. package/dist/src/typescript/components/function-expression.js +2 -1
  81. package/dist/src/typescript/components/function-expression.js.map +1 -0
  82. package/dist/src/typescript/components/function-type.js +2 -1
  83. package/dist/src/typescript/components/function-type.js.map +1 -0
  84. package/dist/src/typescript/components/index.js +2 -1
  85. package/dist/src/typescript/components/index.js.map +1 -0
  86. package/dist/src/typescript/components/interface-declaration.js +2 -1
  87. package/dist/src/typescript/components/interface-declaration.js.map +1 -0
  88. package/dist/src/typescript/components/interface-member.js +2 -1
  89. package/dist/src/typescript/components/interface-member.js.map +1 -0
  90. package/dist/src/typescript/components/interface-method.js +2 -1
  91. package/dist/src/typescript/components/interface-method.js.map +1 -0
  92. package/dist/src/typescript/components/record-expression.js +2 -1
  93. package/dist/src/typescript/components/record-expression.js.map +1 -0
  94. package/dist/src/typescript/components/static-serializers.js +2 -1
  95. package/dist/src/typescript/components/static-serializers.js.map +1 -0
  96. package/dist/src/typescript/components/type-alias-declaration.js +2 -1
  97. package/dist/src/typescript/components/type-alias-declaration.js.map +1 -0
  98. package/dist/src/typescript/components/type-declaration.js +2 -1
  99. package/dist/src/typescript/components/type-declaration.js.map +1 -0
  100. package/dist/src/typescript/components/type-expression.js +2 -1
  101. package/dist/src/typescript/components/type-expression.js.map +1 -0
  102. package/dist/src/typescript/components/type-transform.js +2 -1
  103. package/dist/src/typescript/components/type-transform.js.map +1 -0
  104. package/dist/src/typescript/components/union/declaration.js +2 -1
  105. package/dist/src/typescript/components/union/declaration.js.map +1 -0
  106. package/dist/src/typescript/components/union/declaration.test.js +2 -1
  107. package/dist/src/typescript/components/union/declaration.test.js.map +1 -0
  108. package/dist/src/typescript/components/union/expression.js +2 -1
  109. package/dist/src/typescript/components/union/expression.js.map +1 -0
  110. package/dist/src/typescript/components/union/expression.test.js +2 -1
  111. package/dist/src/typescript/components/union/expression.test.js.map +1 -0
  112. package/dist/src/typescript/components/value-expression.js +2 -1
  113. package/dist/src/typescript/components/value-expression.js.map +1 -0
  114. package/dist/src/typescript/index.js +2 -1
  115. package/dist/src/typescript/index.js.map +1 -0
  116. package/dist/src/typescript/lib.js +2 -1
  117. package/dist/src/typescript/lib.js.map +1 -0
  118. package/dist/src/typescript/utils/index.js +2 -1
  119. package/dist/src/typescript/utils/index.js.map +1 -0
  120. package/dist/src/typescript/utils/operation.js +2 -1
  121. package/dist/src/typescript/utils/operation.js.map +1 -0
  122. package/dist/src/typescript/utils/refkey.js +2 -1
  123. package/dist/src/typescript/utils/refkey.js.map +1 -0
  124. package/dist/test/test-host.js +2 -1
  125. package/dist/test/test-host.js.map +1 -0
  126. package/dist/test/testing/snippet-extractor-csharp.test.js +2 -1
  127. package/dist/test/testing/snippet-extractor-csharp.test.js.map +1 -0
  128. package/dist/test/testing/snippet-extractor-java.test.js +2 -1
  129. package/dist/test/testing/snippet-extractor-java.test.js.map +1 -0
  130. package/dist/test/testing/snippet-extractor-python.test.js +2 -1
  131. package/dist/test/testing/snippet-extractor-python.test.js.map +1 -0
  132. package/dist/test/testing/snippet-extractor-typescript.test.js +2 -1
  133. package/dist/test/testing/snippet-extractor-typescript.test.js.map +1 -0
  134. package/dist/test/typescript/components/arrow-function.test.js +18 -22
  135. package/dist/test/typescript/components/arrow-function.test.js.map +1 -0
  136. package/dist/test/typescript/components/component-override.test.js +3 -2
  137. package/dist/test/typescript/components/component-override.test.js.map +1 -0
  138. package/dist/test/typescript/components/enum-declaration.test.js +2 -1
  139. package/dist/test/typescript/components/enum-declaration.test.js.map +1 -0
  140. package/dist/test/typescript/components/function-declaration.test.js +3 -2
  141. package/dist/test/typescript/components/function-declaration.test.js.map +1 -0
  142. package/dist/test/typescript/components/function-expression.test.js +18 -22
  143. package/dist/test/typescript/components/function-expression.test.js.map +1 -0
  144. package/dist/test/typescript/components/function-type.test.js +18 -22
  145. package/dist/test/typescript/components/function-type.test.js.map +1 -0
  146. package/dist/test/typescript/components/interface-declaration.test.js +3 -2
  147. package/dist/test/typescript/components/interface-declaration.test.js.map +1 -0
  148. package/dist/test/typescript/components/interface-method.test.js +37 -45
  149. package/dist/test/typescript/components/interface-method.test.js.map +1 -0
  150. package/dist/test/typescript/components/member-expression.test.js +2 -1
  151. package/dist/test/typescript/components/member-expression.test.js.map +1 -0
  152. package/dist/test/typescript/components/type-alias-declaration.test.js +8 -5
  153. package/dist/test/typescript/components/type-alias-declaration.test.js.map +1 -0
  154. package/dist/test/typescript/components/type-transform.test.js +29 -27
  155. package/dist/test/typescript/components/type-transform.test.js.map +1 -0
  156. package/dist/test/typescript/components/value-expression.test.js +3 -2
  157. package/dist/test/typescript/components/value-expression.test.js.map +1 -0
  158. package/dist/test/typescript/utils.js +2 -1
  159. package/dist/test/typescript/utils.js.map +1 -0
  160. package/dist/test/utils.d.ts +1 -0
  161. package/dist/test/utils.d.ts.map +1 -1
  162. package/dist/test/utils.js +13 -3
  163. package/dist/test/utils.js.map +1 -0
  164. package/dist/test/vitest.setup.js +2 -1
  165. package/dist/test/vitest.setup.js.map +1 -0
  166. package/package.json +8 -8
  167. package/src/core/write-output.ts +2 -2
  168. package/src/csharp/components/class/declaration.test.tsx +64 -102
  169. package/src/csharp/components/class/declaration.tsx +13 -3
  170. package/src/csharp/components/enum/declaration.test.tsx +47 -78
  171. package/src/csharp/components/property/property.test.tsx +108 -25
  172. package/src/csharp/components/property/property.tsx +43 -11
  173. package/src/csharp/components/type-expression.test.tsx +84 -69
  174. package/src/csharp/components/type-expression.tsx +25 -4
  175. package/src/csharp/components/utils/nullable-util.ts +25 -0
  176. package/test/typescript/components/arrow-function.test.tsx +23 -42
  177. package/test/typescript/components/component-override.test.tsx +1 -1
  178. package/test/typescript/components/function-declaration.test.tsx +2 -1
  179. package/test/typescript/components/function-expression.test.tsx +23 -42
  180. package/test/typescript/components/function-type.test.tsx +22 -40
  181. package/test/typescript/components/interface-declaration.test.tsx +1 -1
  182. package/test/typescript/components/interface-method.test.tsx +50 -92
  183. package/test/typescript/components/type-alias-declaration.test.tsx +8 -6
  184. package/test/typescript/components/type-transform.test.tsx +37 -37
  185. package/test/typescript/components/value-expression.test.tsx +1 -1
  186. package/test/utils.ts +10 -3
  187. package/dist/test/typescript/test-host.d.ts +0 -12
  188. package/dist/test/typescript/test-host.d.ts.map +0 -1
  189. package/dist/test/typescript/test-host.js +0 -29
  190. 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, Namespace, SourceFile } from "@alloy-js/csharp";
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(Namespace, {
21
- name: "TestNamespace",
20
+ return _$createComponent(SourceFile, {
21
+ path: "test.cs",
22
22
  get children() {
23
- return _$createComponent(SourceFile, {
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
- namespace TestNamespace
46
+ enum TestEnum
52
47
  {
53
- enum TestEnum
54
- {
55
- Value1,
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
- namespace TestNamespace
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
- namespace TestNamespace
90
+ enum CustomEnumName
102
91
  {
103
- enum CustomEnumName
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
- namespace TestNamespace
114
+ internal enum TestEnum
129
115
  {
130
- internal enum TestEnum
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(Namespace, {
157
- name: "TestNamespace",
139
+ return _$createComponent(SourceFile, {
140
+ path: "test.cs",
158
141
  get children() {
159
- return _$createComponent(SourceFile, {
160
- path: "test.cs",
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
- namespace TestNamespace
149
+ enum TestEnum
172
150
  {
173
- enum TestEnum
174
- {
175
- ValueOne,
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
- namespace TestNamespace
198
- {
199
- enum TestEnum
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
- namespace TestNamespace
196
+ enum TestEnum
225
197
  {
226
- enum TestEnum
227
- {
228
- Value0,
229
- Value1,
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
- namespace TestNamespace
229
+ enum TestEnum1
261
230
  {
262
- enum TestEnum1
263
- {
264
- Value1,
265
- Value2
266
- }
267
- enum TestEnum2
268
- {
269
- OptionA,
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
- namespace TestNamespace
260
+ enum TestEnum
295
261
  {
296
- enum TestEnum
297
- {
298
- /// <summary>
299
- /// This is value one
300
- /// </summary>
301
- Value1,
302
- /// <summary>
303
- /// This is value two
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":[]}
@@ -1,4 +1,5 @@
1
1
  export * from "./class/declaration.js";
2
2
  export * from "./enum/declaration.js";
3
3
  export * from "./property/property.js";
4
- export * from "./type-expression.js";
4
+ export * from "./type-expression.js";
5
+ //# sourceMappingURL=index.js.map
@@ -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,EAAE,KAAK,aAAa,EAAiC,MAAM,oBAAoB,CAAC;AAKvF,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,CAiBvD;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,aAAa,CAAC;CACrB"}
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.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(type) {
61
- const {
62
- $
63
- } = useTsp();
89
+ function preprocessPropertyType(prop) {
90
+ const type = prop.type;
64
91
  if (type.kind === "Union") {
65
- const variants = type.variants;
66
- const nonNullVariant = [...variants.values()].find(v => v.type !== $.intrinsic.null);
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: nonNullVariant.type,
95
+ type: innerType,
71
96
  nullable: true
72
97
  };
73
98
  } else {
74
99
  return {
75
100
  type,
76
- nullable: false
101
+ nullable: prop.optional
77
102
  };
78
103
  }
79
104
  } else {
80
105
  return {
81
106
  type,
82
- nullable: false
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":"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","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 { ClassDeclaration, createCSharpNamePolicy, Namespace, SourceFile } from "@alloy-js/csharp";
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(Namespace, {
21
- name: "TestNamespace",
21
+ return _$createComponent(SourceFile, {
22
+ path: "test.cs",
22
23
  get children() {
23
- return _$createComponent(SourceFile, {
24
- path: "test.cs",
24
+ return _$createComponent(ClassDeclaration, {
25
+ name: "Test",
25
26
  get children() {
26
- return _$createComponent(ClassDeclaration, {
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
- namespace TestNamespace
50
+ class Test
55
51
  {
56
- class Test
57
- {
58
- public required string? Prop1 { get; set; }
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
- namespace TestNamespace
115
+ class Test
81
116
  {
82
- class Test
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
- namespace TestNamespace
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
- class Test
110
- {
111
- [System.Text.Json.JsonPropertyName("prop_1")]
112
- public required string Prop1 { get; set; }
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,EAAE,KAAK,QAAQ,EAAQ,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAe,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,KAAK,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC7F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAK1D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,QAAQ,CAoBnE;AAED,QAAA,MAAM,yBAAyB,4BAqC7B,CAAC;AAEH,wBAAgB,4BAA4B,CAC1C,CAAC,EAAE,OAAO,EACV,IAAI,EAAE,MAAM,GAAG,aAAa,GAC3B,MAAM,GAAG,IAAI,CAoBf;AA0BD,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
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 Boolean(type.name);
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":[]}