@alloy-js/csharp 0.18.0-dev.2 → 0.18.0-dev.21

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 (158) hide show
  1. package/LICENSE +7 -0
  2. package/dist/src/components/ClassDeclaration.d.ts +74 -0
  3. package/dist/src/components/ClassDeclaration.d.ts.map +1 -0
  4. package/dist/src/components/{Class.js → ClassDeclaration.js} +64 -38
  5. package/dist/src/components/ClassMethod.d.ts +26 -5
  6. package/dist/src/components/ClassMethod.d.ts.map +1 -1
  7. package/dist/src/components/ClassMethod.js +27 -9
  8. package/dist/src/components/EnumDeclaration.d.ts +34 -0
  9. package/dist/src/components/EnumDeclaration.d.ts.map +1 -0
  10. package/dist/src/components/{Enum.js → EnumDeclaration.js} +25 -5
  11. package/dist/src/components/doc/comment.d.ts +70 -0
  12. package/dist/src/components/doc/comment.d.ts.map +1 -0
  13. package/dist/src/components/doc/comment.js +88 -0
  14. package/dist/src/components/doc/comment.test.d.ts +2 -0
  15. package/dist/src/components/doc/comment.test.d.ts.map +1 -0
  16. package/dist/src/components/doc/comment.test.js +348 -0
  17. package/dist/src/components/doc/from-markdown.d.ts +6 -0
  18. package/dist/src/components/doc/from-markdown.d.ts.map +1 -0
  19. package/dist/src/components/doc/from-markdown.js +58 -0
  20. package/dist/src/components/doc/from-markdown.test.d.ts +2 -0
  21. package/dist/src/components/doc/from-markdown.test.d.ts.map +1 -0
  22. package/dist/src/components/doc/from-markdown.test.js +83 -0
  23. package/dist/src/components/index.d.ts +13 -4
  24. package/dist/src/components/index.d.ts.map +1 -1
  25. package/dist/src/components/index.js +14 -5
  26. package/dist/src/components/interface/declaration.d.ts +47 -0
  27. package/dist/src/components/interface/declaration.d.ts.map +1 -0
  28. package/dist/src/components/interface/declaration.js +77 -0
  29. package/dist/src/components/interface/declaration.test.d.ts +2 -0
  30. package/dist/src/components/interface/declaration.test.d.ts.map +1 -0
  31. package/dist/src/components/interface/declaration.test.js +153 -0
  32. package/dist/src/components/interface/method.d.ts +32 -0
  33. package/dist/src/components/interface/method.d.ts.map +1 -0
  34. package/dist/src/components/interface/method.js +68 -0
  35. package/dist/src/components/interface/method.test.d.ts +2 -0
  36. package/dist/src/components/interface/method.test.d.ts.map +1 -0
  37. package/dist/src/components/interface/method.test.js +279 -0
  38. package/dist/src/components/interface/property.d.ts +38 -0
  39. package/dist/src/components/interface/property.d.ts.map +1 -0
  40. package/dist/src/components/interface/property.js +67 -0
  41. package/dist/src/components/interface/property.test.d.ts +2 -0
  42. package/dist/src/components/interface/property.test.d.ts.map +1 -0
  43. package/dist/src/components/interface/property.test.js +165 -0
  44. package/dist/src/components/parameters/parameters.d.ts +19 -0
  45. package/dist/src/components/parameters/parameters.d.ts.map +1 -0
  46. package/dist/src/components/parameters/parameters.js +43 -0
  47. package/dist/src/components/property/property.d.ts +57 -0
  48. package/dist/src/components/property/property.d.ts.map +1 -0
  49. package/dist/src/components/property/property.js +70 -0
  50. package/dist/src/components/property/property.test.d.ts +2 -0
  51. package/dist/src/components/property/property.test.d.ts.map +1 -0
  52. package/dist/src/components/property/property.test.js +218 -0
  53. package/dist/src/components/record/declaration.d.ts +35 -0
  54. package/dist/src/components/record/declaration.d.ts.map +1 -0
  55. package/dist/src/components/record/declaration.js +90 -0
  56. package/dist/src/components/record/declaration.test.d.ts +2 -0
  57. package/dist/src/components/record/declaration.test.d.ts.map +1 -0
  58. package/dist/src/components/record/declaration.test.js +94 -0
  59. package/dist/src/components/stc/index.d.ts +2 -2
  60. package/dist/src/components/stc/index.d.ts.map +1 -1
  61. package/dist/src/components/stc/index.js +2 -2
  62. package/dist/src/components/type-parameters/type-parameter-constraints.d.ts +8 -0
  63. package/dist/src/components/type-parameters/type-parameter-constraints.d.ts.map +1 -0
  64. package/dist/src/components/type-parameters/type-parameter-constraints.js +44 -0
  65. package/dist/src/components/type-parameters/type-parameter-constraints.test.d.ts +2 -0
  66. package/dist/src/components/type-parameters/type-parameter-constraints.test.d.ts.map +1 -0
  67. package/dist/src/components/type-parameters/type-parameter-constraints.test.js +67 -0
  68. package/dist/src/components/type-parameters/type-parameter.d.ts +20 -0
  69. package/dist/src/components/type-parameters/type-parameter.d.ts.map +1 -0
  70. package/dist/src/components/type-parameters/type-parameter.js +22 -0
  71. package/dist/src/components/type-parameters/type-parameters.d.ts +17 -0
  72. package/dist/src/components/type-parameters/type-parameters.d.ts.map +1 -0
  73. package/dist/src/components/type-parameters/type-parameters.js +54 -0
  74. package/dist/src/components/type-parameters/type-parameters.test.d.ts +2 -0
  75. package/dist/src/components/type-parameters/type-parameters.test.d.ts.map +1 -0
  76. package/dist/src/components/type-parameters/type-parameters.test.js +48 -0
  77. package/dist/src/components/var/declaration.d.ts +35 -0
  78. package/dist/src/components/var/declaration.d.ts.map +1 -0
  79. package/dist/src/components/var/declaration.js +40 -0
  80. package/dist/src/components/var/declaration.test.d.ts +2 -0
  81. package/dist/src/components/var/declaration.test.d.ts.map +1 -0
  82. package/dist/src/components/var/declaration.test.js +73 -0
  83. package/dist/src/modifiers.d.ts +10 -4
  84. package/dist/src/modifiers.d.ts.map +1 -1
  85. package/dist/src/modifiers.js +9 -32
  86. package/dist/src/name-policy.d.ts +1 -1
  87. package/dist/src/name-policy.d.ts.map +1 -1
  88. package/dist/src/name-policy.js +2 -0
  89. package/dist/test/class-declaration.test.d.ts +2 -0
  90. package/dist/test/class-declaration.test.d.ts.map +1 -0
  91. package/dist/test/class-declaration.test.js +463 -0
  92. package/dist/test/class-method.test.js +37 -14
  93. package/dist/test/enum.test.js +12 -12
  94. package/dist/test/namespace.test.js +8 -8
  95. package/dist/test/project-directory.test.d.ts +2 -0
  96. package/dist/test/project-directory.test.d.ts.map +1 -0
  97. package/dist/test/{projectdirectory.test.js → project-directory.test.js} +8 -8
  98. package/dist/test/sourcefile.test.js +4 -4
  99. package/dist/test/using.test.js +9 -9
  100. package/dist/test/vitest.setup.d.ts +2 -0
  101. package/dist/test/vitest.setup.d.ts.map +1 -0
  102. package/dist/test/vitest.setup.js +1 -0
  103. package/dist/tsconfig.tsbuildinfo +1 -1
  104. package/package.json +21 -21
  105. package/src/components/ClassDeclaration.tsx +213 -0
  106. package/src/components/ClassMethod.tsx +54 -15
  107. package/src/components/{Enum.tsx → EnumDeclaration.tsx} +30 -6
  108. package/src/components/doc/comment.test.tsx +337 -0
  109. package/src/components/doc/comment.tsx +152 -0
  110. package/src/components/doc/from-markdown.test.tsx +103 -0
  111. package/src/components/doc/from-markdown.tsx +58 -0
  112. package/src/components/index.ts +13 -4
  113. package/src/components/interface/declaration.test.tsx +143 -0
  114. package/src/components/interface/declaration.tsx +105 -0
  115. package/src/components/interface/method.test.tsx +278 -0
  116. package/src/components/interface/method.tsx +102 -0
  117. package/src/components/interface/property.test.tsx +144 -0
  118. package/src/components/interface/property.tsx +107 -0
  119. package/src/components/parameters/parameters.tsx +74 -0
  120. package/src/components/property/property.test.tsx +187 -0
  121. package/src/components/property/property.tsx +146 -0
  122. package/src/components/record/declaration.test.tsx +73 -0
  123. package/src/components/record/declaration.tsx +109 -0
  124. package/src/components/stc/index.ts +2 -2
  125. package/src/components/type-parameters/type-parameter-constraints.test.tsx +93 -0
  126. package/src/components/type-parameters/type-parameter-constraints.tsx +46 -0
  127. package/src/components/type-parameters/type-parameter.tsx +35 -0
  128. package/src/components/type-parameters/type-parameters.test.tsx +46 -0
  129. package/src/components/type-parameters/type-parameters.tsx +63 -0
  130. package/src/components/var/declaration.test.tsx +59 -0
  131. package/src/components/var/declaration.tsx +47 -0
  132. package/src/modifiers.ts +25 -42
  133. package/src/name-policy.ts +5 -0
  134. package/temp/api.json +5228 -686
  135. package/test/class-declaration.test.tsx +418 -0
  136. package/test/class-method.test.tsx +24 -14
  137. package/test/enum.test.tsx +11 -11
  138. package/test/namespace.test.tsx +4 -4
  139. package/test/{projectdirectory.test.tsx → project-directory.test.tsx} +4 -4
  140. package/test/sourcefile.test.tsx +2 -2
  141. package/test/using.test.tsx +9 -9
  142. package/test/vitest.setup.ts +1 -0
  143. package/vitest.config.ts +3 -0
  144. package/dist/src/components/Class.d.ts +0 -26
  145. package/dist/src/components/Class.d.ts.map +0 -1
  146. package/dist/src/components/Enum.d.ts +0 -15
  147. package/dist/src/components/Enum.d.ts.map +0 -1
  148. package/dist/src/components/Parameters.d.ts +0 -13
  149. package/dist/src/components/Parameters.d.ts.map +0 -1
  150. package/dist/src/components/Parameters.js +0 -34
  151. package/dist/test/class.test.d.ts +0 -2
  152. package/dist/test/class.test.d.ts.map +0 -1
  153. package/dist/test/class.test.js +0 -298
  154. package/dist/test/projectdirectory.test.d.ts +0 -2
  155. package/dist/test/projectdirectory.test.d.ts.map +0 -1
  156. package/src/components/Class.tsx +0 -149
  157. package/src/components/Parameters.tsx +0 -51
  158. package/test/class.test.tsx +0 -292
@@ -1,292 +0,0 @@
1
- import * as core from "@alloy-js/core";
2
- import * as coretest from "@alloy-js/core/testing";
3
- import { expect, it } from "vitest";
4
- import * as csharp from "../src/index.js";
5
- import * as utils from "./utils.js";
6
-
7
- it("declares class with no members", () => {
8
- const res = utils.toSourceText(
9
- <csharp.Class accessModifier="public" name="TestClass" />,
10
- );
11
-
12
- expect(res).toBe(coretest.d`
13
- namespace TestCode
14
- {
15
- public class TestClass;
16
- }
17
- `);
18
- });
19
-
20
- it("declares class with some members", () => {
21
- const res = utils.toSourceText(
22
- <csharp.Class accessModifier="public" name="TestClass">
23
- <core.StatementList>
24
- <csharp.ClassMember
25
- accessModifier="public"
26
- name="MemberOne"
27
- type="string"
28
- />
29
- <csharp.ClassMember
30
- accessModifier="private"
31
- name="MemberTwo"
32
- type="int"
33
- />
34
- </core.StatementList>
35
- </csharp.Class>,
36
- );
37
-
38
- expect(res).toBe(coretest.d`
39
- namespace TestCode
40
- {
41
- public class TestClass
42
- {
43
- public string MemberOne;
44
- private int memberTwo;
45
- }
46
- }
47
- `);
48
- });
49
-
50
- it("declares class with some methods", () => {
51
- const res = utils.toSourceText(
52
- <csharp.Class accessModifier="public" name="TestClass">
53
- <core.List>
54
- <csharp.ClassMethod accessModifier="public" name="MethodOne" />
55
- <csharp.ClassMethod
56
- accessModifier="private"
57
- methodModifier="virtual"
58
- name="MethodTwo"
59
- />
60
- </core.List>
61
- </csharp.Class>,
62
- );
63
-
64
- expect(res).toBe(coretest.d`
65
- namespace TestCode
66
- {
67
- public class TestClass
68
- {
69
- public void MethodOne() {}
70
- private virtual void MethodTwo() {}
71
- }
72
- }
73
- `);
74
- });
75
-
76
- it("uses refkeys for members, params, and return type", () => {
77
- const inputTypeRefkey = core.refkey();
78
- const testResultTypeRefkey = core.refkey();
79
- const enumTypeRefkey = core.refkey();
80
-
81
- const params = [
82
- {
83
- name: "IntParam",
84
- type: "int",
85
- },
86
- {
87
- name: "BodyParam",
88
- type: inputTypeRefkey,
89
- },
90
- ];
91
-
92
- const res = core.render(
93
- <core.Output namePolicy={csharp.createCSharpNamePolicy()}>
94
- <csharp.Namespace name="TestCode">
95
- <csharp.SourceFile path="Test.cs">
96
- <csharp.Enum
97
- accessModifier="public"
98
- name="TestEnum"
99
- refkey={enumTypeRefkey}
100
- >
101
- <core.List comma hardline>
102
- <csharp.EnumMember name="One" />
103
- <csharp.EnumMember name="Two" />
104
- </core.List>
105
- </csharp.Enum>
106
- <hbr />
107
- <csharp.Class
108
- accessModifier="public"
109
- name="TestInput"
110
- refkey={inputTypeRefkey}
111
- />
112
- <hbr />
113
- <csharp.Class
114
- accessModifier="public"
115
- name="TestResult"
116
- refkey={testResultTypeRefkey}
117
- />
118
- <hbr />
119
- <csharp.Class accessModifier="public" name="TestClass">
120
- <csharp.ClassMember
121
- accessModifier="private"
122
- name="MemberOne"
123
- type={enumTypeRefkey}
124
- />
125
- ;
126
- <hbr />
127
- <csharp.ClassMethod
128
- accessModifier="public"
129
- name="MethodOne"
130
- parameters={params}
131
- returns={testResultTypeRefkey}
132
- >
133
- return new {testResultTypeRefkey}();
134
- </csharp.ClassMethod>
135
- </csharp.Class>
136
- </csharp.SourceFile>
137
- </csharp.Namespace>
138
- </core.Output>,
139
- );
140
-
141
- expect(res.contents[0].contents).toBe(coretest.d`
142
- namespace TestCode
143
- {
144
- public enum TestEnum
145
- {
146
- One,
147
- Two
148
- }
149
- public class TestInput;
150
- public class TestResult;
151
- public class TestClass
152
- {
153
- private TestEnum memberOne;
154
- public TestResult MethodOne(int intParam, TestInput bodyParam)
155
- {
156
- return new TestResult();
157
- }
158
- }
159
- }
160
- `);
161
- });
162
-
163
- it("declares class with generic parameters", () => {
164
- const typeParameters = {
165
- T: core.refkey(),
166
- U: core.refkey(),
167
- };
168
-
169
- const res = utils.toSourceText(
170
- <csharp.Class
171
- accessModifier="public"
172
- name="TestClass"
173
- typeParameters={typeParameters}
174
- >
175
- <csharp.ClassMember
176
- accessModifier="public"
177
- name="memberOne"
178
- type={typeParameters.T}
179
- />
180
- ;<hbr />
181
- <csharp.ClassMember
182
- accessModifier="private"
183
- name="memberTwo"
184
- type={typeParameters.U}
185
- />
186
- ;
187
- </csharp.Class>,
188
- );
189
-
190
- expect(res).toBe(coretest.d`
191
- namespace TestCode
192
- {
193
- public class TestClass<T, U>
194
- {
195
- public T MemberOne;
196
- private U memberTwo;
197
- }
198
- }
199
- `);
200
- });
201
-
202
- it("declares class with invalid members", () => {
203
- const decl = (
204
- <csharp.Class accessModifier="public" name="TestClass">
205
- <csharp.EnumMember name="One" />,<hbr />
206
- <csharp.EnumMember name="Two" />
207
- </csharp.Class>
208
- );
209
-
210
- expect(() => utils.toSourceText(decl)).toThrow(
211
- "can't define an enum member outside of an enum-decl scope",
212
- );
213
- });
214
-
215
- it("declares class with constructor", () => {
216
- const res = utils.toSourceText(
217
- <csharp.Class accessModifier="public" name="TestClass">
218
- <csharp.ClassConstructor accessModifier="public" />
219
- </csharp.Class>,
220
- );
221
-
222
- expect(res).toBe(coretest.d`
223
- namespace TestCode
224
- {
225
- public class TestClass
226
- {
227
- public TestClass() {}
228
- }
229
- }
230
- `);
231
- });
232
-
233
- it("declares class with constructor params and assigns values to fields", () => {
234
- const thisNameRefkey = core.refkey();
235
- const thisSizeRefkey = core.refkey();
236
- const paramNameRefkey = core.refkey();
237
- const paramSizeRefkey = core.refkey();
238
-
239
- const ctorParams = [
240
- {
241
- name: "name",
242
- type: "string",
243
- refkey: paramNameRefkey,
244
- },
245
- {
246
- name: "size",
247
- type: "int",
248
- refkey: paramSizeRefkey,
249
- },
250
- ];
251
-
252
- const res = utils.toSourceText(
253
- <csharp.Class accessModifier="public" name="TestClass">
254
- <csharp.ClassMember
255
- accessModifier="private"
256
- name="name"
257
- type="string"
258
- refkey={thisNameRefkey}
259
- />
260
- ;<hbr />
261
- <csharp.ClassMember
262
- accessModifier="private"
263
- name="size"
264
- type="int"
265
- refkey={thisSizeRefkey}
266
- />
267
- ;<hbr />
268
- <csharp.ClassConstructor accessModifier="public" parameters={ctorParams}>
269
- {thisNameRefkey} = {paramNameRefkey};<hbr />
270
- {thisSizeRefkey} = {paramSizeRefkey};
271
- </csharp.ClassConstructor>
272
- </csharp.Class>,
273
- );
274
-
275
- // TODO: assignments to members should have this. prefix
276
- // e.g. this.name = name;
277
- expect(res).toBe(coretest.d`
278
- namespace TestCode
279
- {
280
- public class TestClass
281
- {
282
- private string name;
283
- private int size;
284
- public TestClass(string name, int size)
285
- {
286
- name = name;
287
- size = size;
288
- }
289
- }
290
- }
291
- `);
292
- });