@alloy-js/csharp 0.17.0 → 0.18.0-dev.11

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 (117) hide show
  1. package/dist/src/components/ClassDeclaration.d.ts +57 -0
  2. package/dist/src/components/ClassDeclaration.d.ts.map +1 -0
  3. package/dist/src/components/{Class.js → ClassDeclaration.js} +42 -53
  4. package/dist/src/components/ClassMethod.d.ts +25 -0
  5. package/dist/src/components/ClassMethod.d.ts.map +1 -0
  6. package/dist/src/components/ClassMethod.js +60 -0
  7. package/dist/src/components/EnumDeclaration.d.ts +34 -0
  8. package/dist/src/components/EnumDeclaration.d.ts.map +1 -0
  9. package/dist/src/components/{Enum.js → EnumDeclaration.js} +25 -5
  10. package/dist/src/components/class/property.d.ts +55 -0
  11. package/dist/src/components/class/property.d.ts.map +1 -0
  12. package/dist/src/components/class/property.js +67 -0
  13. package/dist/src/components/class/property.test.d.ts +2 -0
  14. package/dist/src/components/class/property.test.d.ts.map +1 -0
  15. package/dist/src/components/class/property.test.js +201 -0
  16. package/dist/src/components/doc/comment.d.ts +70 -0
  17. package/dist/src/components/doc/comment.d.ts.map +1 -0
  18. package/dist/src/components/doc/comment.js +88 -0
  19. package/dist/src/components/doc/comment.test.d.ts +2 -0
  20. package/dist/src/components/doc/comment.test.d.ts.map +1 -0
  21. package/dist/src/components/doc/comment.test.js +348 -0
  22. package/dist/src/components/doc/from-markdown.d.ts +6 -0
  23. package/dist/src/components/doc/from-markdown.d.ts.map +1 -0
  24. package/dist/src/components/doc/from-markdown.js +58 -0
  25. package/dist/src/components/doc/from-markdown.test.d.ts +2 -0
  26. package/dist/src/components/doc/from-markdown.test.d.ts.map +1 -0
  27. package/dist/src/components/doc/from-markdown.test.js +83 -0
  28. package/dist/src/components/index.d.ts +9 -2
  29. package/dist/src/components/index.d.ts.map +1 -1
  30. package/dist/src/components/index.js +9 -2
  31. package/dist/src/components/interface/declaration.d.ts +34 -0
  32. package/dist/src/components/interface/declaration.d.ts.map +1 -0
  33. package/dist/src/components/interface/declaration.js +90 -0
  34. package/dist/src/components/interface/declaration.test.d.ts +2 -0
  35. package/dist/src/components/interface/declaration.test.d.ts.map +1 -0
  36. package/dist/src/components/interface/declaration.test.js +69 -0
  37. package/dist/src/components/interface/method.d.ts +18 -0
  38. package/dist/src/components/interface/method.d.ts.map +1 -0
  39. package/dist/src/components/interface/method.js +59 -0
  40. package/dist/src/components/interface/method.test.d.ts +2 -0
  41. package/dist/src/components/interface/method.test.d.ts.map +1 -0
  42. package/dist/src/components/interface/method.test.js +131 -0
  43. package/dist/src/components/interface/property.d.ts +38 -0
  44. package/dist/src/components/interface/property.d.ts.map +1 -0
  45. package/dist/src/components/interface/property.js +67 -0
  46. package/dist/src/components/interface/property.test.d.ts +2 -0
  47. package/dist/src/components/interface/property.test.d.ts.map +1 -0
  48. package/dist/src/components/interface/property.test.js +165 -0
  49. package/dist/src/components/stc/index.d.ts +2 -2
  50. package/dist/src/components/stc/index.d.ts.map +1 -1
  51. package/dist/src/components/stc/index.js +2 -2
  52. package/dist/src/modifiers.d.ts +13 -4
  53. package/dist/src/modifiers.d.ts.map +1 -1
  54. package/dist/src/modifiers.js +13 -27
  55. package/dist/src/name-policy.d.ts +1 -1
  56. package/dist/src/name-policy.d.ts.map +1 -1
  57. package/dist/src/name-policy.js +1 -0
  58. package/dist/test/class-declaration.test.d.ts +2 -0
  59. package/dist/test/class-declaration.test.d.ts.map +1 -0
  60. package/dist/test/{class.test.js → class-declaration.test.js} +123 -73
  61. package/dist/test/class-method.test.d.ts +2 -0
  62. package/dist/test/class-method.test.d.ts.map +1 -0
  63. package/dist/test/class-method.test.js +161 -0
  64. package/dist/test/enum.test.js +12 -12
  65. package/dist/test/namespace.test.js +8 -8
  66. package/dist/test/project-directory.test.d.ts +2 -0
  67. package/dist/test/project-directory.test.d.ts.map +1 -0
  68. package/dist/test/{projectdirectory.test.js → project-directory.test.js} +8 -8
  69. package/dist/test/sourcefile.test.js +4 -4
  70. package/dist/test/using.test.js +9 -9
  71. package/dist/test/utils.d.ts +3 -0
  72. package/dist/test/utils.d.ts.map +1 -1
  73. package/dist/test/utils.js +15 -0
  74. package/dist/test/vitest.setup.d.ts +2 -0
  75. package/dist/test/vitest.setup.d.ts.map +1 -0
  76. package/dist/test/vitest.setup.js +1 -0
  77. package/dist/tsconfig.tsbuildinfo +1 -1
  78. package/package.json +7 -6
  79. package/src/components/{Class.tsx → ClassDeclaration.tsx} +68 -66
  80. package/src/components/ClassMethod.tsx +94 -0
  81. package/src/components/{Enum.tsx → EnumDeclaration.tsx} +30 -6
  82. package/src/components/class/property.test.tsx +180 -0
  83. package/src/components/class/property.tsx +135 -0
  84. package/src/components/doc/comment.test.tsx +337 -0
  85. package/src/components/doc/comment.tsx +152 -0
  86. package/src/components/doc/from-markdown.test.tsx +103 -0
  87. package/src/components/doc/from-markdown.tsx +58 -0
  88. package/src/components/index.ts +9 -2
  89. package/src/components/interface/declaration.test.tsx +56 -0
  90. package/src/components/interface/declaration.tsx +109 -0
  91. package/src/components/interface/method.test.tsx +120 -0
  92. package/src/components/interface/method.tsx +82 -0
  93. package/src/components/interface/property.test.tsx +144 -0
  94. package/src/components/interface/property.tsx +107 -0
  95. package/src/components/stc/index.ts +2 -2
  96. package/src/modifiers.ts +32 -37
  97. package/src/name-policy.ts +2 -0
  98. package/temp/api.json +4419 -567
  99. package/test/{class.test.tsx → class-declaration.test.tsx} +103 -99
  100. package/test/class-method.test.tsx +147 -0
  101. package/test/enum.test.tsx +11 -11
  102. package/test/namespace.test.tsx +4 -4
  103. package/test/{projectdirectory.test.tsx → project-directory.test.tsx} +4 -4
  104. package/test/sourcefile.test.tsx +2 -2
  105. package/test/using.test.tsx +9 -9
  106. package/test/utils.tsx +9 -0
  107. package/test/vitest.setup.ts +1 -0
  108. package/tsconfig.json +2 -1
  109. package/vitest.config.ts +3 -0
  110. package/dist/src/components/Class.d.ts +0 -36
  111. package/dist/src/components/Class.d.ts.map +0 -1
  112. package/dist/src/components/Enum.d.ts +0 -15
  113. package/dist/src/components/Enum.d.ts.map +0 -1
  114. package/dist/test/class.test.d.ts +0 -2
  115. package/dist/test/class.test.d.ts.map +0 -1
  116. package/dist/test/projectdirectory.test.d.ts +0 -2
  117. package/dist/test/projectdirectory.test.d.ts.map +0 -1
package/src/modifiers.ts CHANGED
@@ -1,45 +1,40 @@
1
1
  // the possible C# access modifiers
2
2
  // https://learn.microsoft.com/dotnet/csharp/programming-guide/classes-and-structs/access-modifiers
3
- export type AccessModifier =
4
- | "public"
5
- | "protected"
6
- | "private"
7
- | "internal"
8
- | "protected-internal"
9
- | "private-protected"
10
- | "file";
11
3
 
12
- // maps the above access modifier value to its C# syntax.
13
- // note that the C# keyword includes a trailing space
14
- const accessModifierLookup: Record<AccessModifier, string> = {
15
- public: "public ",
16
- protected: "protected ",
17
- private: "private ",
18
- internal: "internal ",
19
- "protected-internal": "protected internal ",
20
- "private-protected": "private protected ",
21
- file: "file ",
22
- };
23
-
24
- // returns the C# syntax for the specified access modifier.
25
- // if no access modifier is specified, the empty string is returned.
26
- export function getAccessModifier(accessModifier?: AccessModifier): string {
27
- return accessModifier ? accessModifierLookup[accessModifier] : "";
4
+ /** Access modifiers. */
5
+ export interface AccessModifiers {
6
+ readonly public?: boolean;
7
+ readonly protected?: boolean;
8
+ readonly private?: boolean;
9
+ readonly internal?: boolean;
10
+ readonly file?: boolean;
28
11
  }
29
12
 
30
- export type MethodModifier = "abstract" | "sealed" | "static" | "virtual";
13
+ export const getAccessModifier = makeModifiers<AccessModifiers>([
14
+ "public",
15
+ "protected",
16
+ "private",
17
+ "internal",
18
+ "file",
19
+ ]);
20
+
21
+ export function getAsyncModifier(async?: boolean): string {
22
+ return async ? "async" : "";
23
+ }
31
24
 
32
- // maps the above method modifier value to its C# syntax.
33
- // note that the C# keyword includes a trailing space
34
- const methodModifierLookup: Record<MethodModifier, string> = {
35
- abstract: "abstract ",
36
- sealed: "sealed ",
37
- static: "static ",
38
- virtual: "virtual ",
39
- };
25
+ /** Resolve the modifier prefix */
26
+ export function computeModifiersPrefix(
27
+ modifiers: Array<string | undefined>,
28
+ ): string {
29
+ const resolved = modifiers.filter((x) => x);
30
+ return resolved.length > 0 ? resolved.join(" ") + " " : "";
31
+ }
40
32
 
41
- // returns the C# syntax for the specified method modifier.
42
- // if no method modifier is specified, the empty string is returned.
43
- export function getMethodModifier(methodModifier?: MethodModifier): string {
44
- return methodModifier ? methodModifierLookup[methodModifier] : "";
33
+ export function makeModifiers<T>(obj: Array<keyof T>) {
34
+ return (data: T) => {
35
+ return obj
36
+ .map((key) => (data[key] ? key : undefined))
37
+ .filter((x) => x)
38
+ .join(" ");
39
+ };
45
40
  }
@@ -12,6 +12,7 @@ export type CSharpElements =
12
12
  | "class-member-private"
13
13
  | "class-member-public"
14
14
  | "class-method"
15
+ | "class-property"
15
16
  | "parameter"
16
17
  | "type-parameter";
17
18
 
@@ -26,6 +27,7 @@ export function createCSharpNamePolicy(): core.NamePolicy<CSharpElements> {
26
27
  case "class-member-public":
27
28
  case "class-method":
28
29
  case "type-parameter":
30
+ case "class-property":
29
31
  return changecase.pascalCase(name);
30
32
  case "constant":
31
33
  return changecase.constantCase(name);