@alloy-js/csharp 0.16.0 → 0.18.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 (130) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/src/components/ClassDeclaration.d.ts +57 -0
  3. package/dist/src/components/ClassDeclaration.d.ts.map +1 -0
  4. package/dist/src/components/{Class.js → ClassDeclaration.js} +58 -69
  5. package/dist/src/components/ClassMethod.d.ts +25 -0
  6. package/dist/src/components/ClassMethod.d.ts.map +1 -0
  7. package/dist/src/components/ClassMethod.js +60 -0
  8. package/dist/src/components/Declaration.d.ts.map +1 -1
  9. package/dist/src/components/Declaration.js +4 -2
  10. package/dist/src/components/EnumDeclaration.d.ts +34 -0
  11. package/dist/src/components/EnumDeclaration.d.ts.map +1 -0
  12. package/dist/src/components/{Enum.js → EnumDeclaration.js} +36 -14
  13. package/dist/src/components/Namespace.d.ts.map +1 -1
  14. package/dist/src/components/Namespace.js +2 -2
  15. package/dist/src/components/Parameters.d.ts.map +1 -1
  16. package/dist/src/components/Parameters.js +3 -3
  17. package/dist/src/components/doc/comment.d.ts +70 -0
  18. package/dist/src/components/doc/comment.d.ts.map +1 -0
  19. package/dist/src/components/doc/comment.js +88 -0
  20. package/dist/src/components/doc/comment.test.d.ts +2 -0
  21. package/dist/src/components/doc/comment.test.d.ts.map +1 -0
  22. package/dist/src/components/doc/comment.test.js +348 -0
  23. package/dist/src/components/doc/from-markdown.d.ts +6 -0
  24. package/dist/src/components/doc/from-markdown.d.ts.map +1 -0
  25. package/dist/src/components/doc/from-markdown.js +58 -0
  26. package/dist/src/components/doc/from-markdown.test.d.ts +2 -0
  27. package/dist/src/components/doc/from-markdown.test.d.ts.map +1 -0
  28. package/dist/src/components/doc/from-markdown.test.js +83 -0
  29. package/dist/src/components/index.d.ts +7 -2
  30. package/dist/src/components/index.d.ts.map +1 -1
  31. package/dist/src/components/index.js +7 -2
  32. package/dist/src/components/interface/declaration.d.ts +34 -0
  33. package/dist/src/components/interface/declaration.d.ts.map +1 -0
  34. package/dist/src/components/interface/declaration.js +90 -0
  35. package/dist/src/components/interface/declaration.test.d.ts +2 -0
  36. package/dist/src/components/interface/declaration.test.d.ts.map +1 -0
  37. package/dist/src/components/interface/declaration.test.js +69 -0
  38. package/dist/src/components/interface/method.d.ts +18 -0
  39. package/dist/src/components/interface/method.d.ts.map +1 -0
  40. package/dist/src/components/interface/method.js +59 -0
  41. package/dist/src/components/interface/method.test.d.ts +2 -0
  42. package/dist/src/components/interface/method.test.d.ts.map +1 -0
  43. package/dist/src/components/interface/method.test.js +131 -0
  44. package/dist/src/components/interface/property.d.ts +21 -0
  45. package/dist/src/components/interface/property.d.ts.map +1 -0
  46. package/dist/src/components/interface/property.js +59 -0
  47. package/dist/src/components/interface/property.test.d.ts +2 -0
  48. package/dist/src/components/interface/property.test.d.ts.map +1 -0
  49. package/dist/src/components/interface/property.test.js +165 -0
  50. package/dist/src/components/stc/index.d.ts +2 -2
  51. package/dist/src/components/stc/index.d.ts.map +1 -1
  52. package/dist/src/components/stc/index.js +2 -2
  53. package/dist/src/modifiers.d.ts +13 -4
  54. package/dist/src/modifiers.d.ts.map +1 -1
  55. package/dist/src/modifiers.js +13 -27
  56. package/dist/src/name-policy.d.ts +1 -1
  57. package/dist/src/name-policy.d.ts.map +1 -1
  58. package/dist/src/name-policy.js +1 -0
  59. package/dist/src/symbols/csharp-output-symbol.d.ts +4 -4
  60. package/dist/src/symbols/csharp-output-symbol.d.ts.map +1 -1
  61. package/dist/src/symbols/csharp-output-symbol.js +13 -13
  62. package/dist/src/symbols/scopes.d.ts +6 -8
  63. package/dist/src/symbols/scopes.d.ts.map +1 -1
  64. package/dist/src/symbols/scopes.js +14 -19
  65. package/dist/test/class-declaration.test.d.ts +2 -0
  66. package/dist/test/class-declaration.test.d.ts.map +1 -0
  67. package/dist/test/{class.test.js → class-declaration.test.js} +123 -73
  68. package/dist/test/class-method.test.d.ts +2 -0
  69. package/dist/test/class-method.test.d.ts.map +1 -0
  70. package/dist/test/class-method.test.js +161 -0
  71. package/dist/test/enum.test.js +12 -12
  72. package/dist/test/namespace.test.js +8 -8
  73. package/dist/test/project-directory.test.d.ts +2 -0
  74. package/dist/test/project-directory.test.d.ts.map +1 -0
  75. package/dist/test/{projectdirectory.test.js → project-directory.test.js} +8 -8
  76. package/dist/test/sourcefile.test.js +4 -4
  77. package/dist/test/using.test.js +9 -9
  78. package/dist/test/utils.d.ts +3 -0
  79. package/dist/test/utils.d.ts.map +1 -1
  80. package/dist/test/utils.js +15 -0
  81. package/dist/test/vitest.setup.d.ts +2 -0
  82. package/dist/test/vitest.setup.d.ts.map +1 -0
  83. package/dist/test/vitest.setup.js +1 -0
  84. package/dist/tsconfig.tsbuildinfo +1 -1
  85. package/package.json +8 -7
  86. package/src/components/{Class.tsx → ClassDeclaration.tsx} +84 -98
  87. package/src/components/ClassMethod.tsx +94 -0
  88. package/src/components/Declaration.tsx +5 -2
  89. package/src/components/EnumDeclaration.tsx +99 -0
  90. package/src/components/Namespace.tsx +2 -6
  91. package/src/components/Parameters.tsx +2 -3
  92. package/src/components/doc/comment.test.tsx +337 -0
  93. package/src/components/doc/comment.tsx +152 -0
  94. package/src/components/doc/from-markdown.test.tsx +103 -0
  95. package/src/components/doc/from-markdown.tsx +58 -0
  96. package/src/components/index.ts +7 -2
  97. package/src/components/interface/declaration.test.tsx +56 -0
  98. package/src/components/interface/declaration.tsx +109 -0
  99. package/src/components/interface/method.test.tsx +120 -0
  100. package/src/components/interface/method.tsx +82 -0
  101. package/src/components/interface/property.test.tsx +144 -0
  102. package/src/components/interface/property.tsx +90 -0
  103. package/src/components/stc/index.ts +2 -2
  104. package/src/modifiers.ts +32 -37
  105. package/src/name-policy.ts +2 -0
  106. package/src/symbols/csharp-output-symbol.ts +13 -18
  107. package/src/symbols/reference.ts +1 -1
  108. package/src/symbols/scopes.ts +15 -34
  109. package/temp/api.json +3470 -649
  110. package/test/{class.test.tsx → class-declaration.test.tsx} +103 -99
  111. package/test/class-method.test.tsx +147 -0
  112. package/test/enum.test.tsx +11 -11
  113. package/test/namespace.test.tsx +4 -4
  114. package/test/{projectdirectory.test.tsx → project-directory.test.tsx} +4 -4
  115. package/test/sourcefile.test.tsx +2 -2
  116. package/test/using.test.tsx +9 -9
  117. package/test/utils.tsx +9 -0
  118. package/test/vitest.setup.ts +1 -0
  119. package/tsconfig.json +2 -1
  120. package/tsdoc-metadata.json +1 -1
  121. package/vitest.config.ts +3 -0
  122. package/dist/src/components/Class.d.ts +0 -36
  123. package/dist/src/components/Class.d.ts.map +0 -1
  124. package/dist/src/components/Enum.d.ts +0 -15
  125. package/dist/src/components/Enum.d.ts.map +0 -1
  126. package/dist/test/class.test.d.ts +0 -2
  127. package/dist/test/class.test.d.ts.map +0 -1
  128. package/dist/test/projectdirectory.test.d.ts +0 -2
  129. package/dist/test/projectdirectory.test.d.ts.map +0 -1
  130. package/src/components/Enum.tsx +0 -78
@@ -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);
@@ -1,27 +1,22 @@
1
1
  import * as core from "@alloy-js/core";
2
- import { DeclarationProps } from "../components/Declaration.jsx";
3
2
  import { useNamespace } from "../components/Namespace.jsx";
4
3
  import { CSharpOutputScope } from "./scopes.js";
5
4
 
6
5
  // represents a symbol from a .cs file. Class, enum, interface etc.
7
- export interface CSharpOutputSymbol extends core.OutputSymbol {
8
- scope: CSharpOutputScope;
9
- }
10
-
11
- // creates a new C# symbol
12
- export function createCSharpSymbol(props: DeclarationProps) {
13
- const scope = core.useScope() as CSharpOutputScope;
14
6
 
15
- const namespaceCtx = useNamespace();
16
- if (!namespaceCtx) {
17
- throw new Error("symbol must be declared inside a namespace");
7
+ export class CSharpOutputSymbol extends core.OutputSymbol {
8
+ get scope() {
9
+ return super.scope as CSharpOutputScope;
10
+ }
11
+ set scope(value: CSharpOutputScope) {
12
+ super.scope = value;
18
13
  }
19
14
 
20
- const sym = scope.binder.createSymbol<CSharpOutputSymbol>({
21
- name: props.name!,
22
- scope,
23
- refkey: props.refkey ?? core.refkey(props.name),
24
- });
25
-
26
- return sym;
15
+ constructor(name: string, options?: core.OutputSymbolOptions) {
16
+ const namespaceCtx = useNamespace();
17
+ if (!namespaceCtx) {
18
+ throw new Error("symbol must be declared inside a namespace");
19
+ }
20
+ super(name, options);
21
+ }
27
22
  }
@@ -57,7 +57,7 @@ export function ref(refkey: core.Refkey): () => string {
57
57
  .filter((v) => {
58
58
  return v.kind === "member";
59
59
  })
60
- .map((s) => s.owner);
60
+ .map((s) => s.owner!);
61
61
  syms.push(targetDeclaration);
62
62
 
63
63
  return syms.map((sym) => sym.name).join(".");
@@ -2,21 +2,10 @@ import * as core from "@alloy-js/core";
2
2
  import { CSharpOutputSymbol } from "./csharp-output-symbol.js";
3
3
 
4
4
  // indicates that the scope for a symbols is at the namespace level
5
- export interface CSharpNamespaceScope extends core.OutputScope {
6
- kind: "namespace";
7
- }
8
-
9
- // creates a new namespace scope
10
- export function createCSharpNamespaceScope(
11
- binder: core.Binder,
12
- parent: core.OutputScope | undefined,
13
- name: string,
14
- ): CSharpNamespaceScope {
15
- return binder.createScope<CSharpNamespaceScope>({
16
- kind: "namespace",
17
- name,
18
- parent,
19
- });
5
+ export class CSharpNamespaceScope extends core.OutputScope {
6
+ get kind() {
7
+ return "namespace";
8
+ }
20
9
  }
21
10
 
22
11
  // the kind of member scope. i.e. are we in an enum, class, etc
@@ -29,26 +18,18 @@ export type CSharpMemberScopeName =
29
18
  // indicates that the scope for a symbol resides within a type
30
19
  // e.g. for an enum value, class field etc, these would have
31
20
  // member scope where the owner is the containing type.
32
- export interface CSharpMemberScope extends core.OutputScope {
33
- kind: "member";
34
- name: CSharpMemberScopeName;
35
- owner: CSharpOutputSymbol;
36
- }
21
+ export class CSharpMemberScope extends core.OutputScope {
22
+ get kind() {
23
+ return "member";
24
+ }
25
+
26
+ get name() {
27
+ return super.name as CSharpMemberScopeName;
28
+ }
37
29
 
38
- // creates a new member scope.
39
- // parent is the owning symbol.
40
- export function createCSharpMemberScope(
41
- binder: core.Binder,
42
- parent: core.OutputScope,
43
- owner: CSharpOutputSymbol,
44
- name: CSharpMemberScopeName,
45
- ): CSharpMemberScope {
46
- return binder.createScope<CSharpMemberScope>({
47
- kind: "member",
48
- name: name,
49
- owner,
50
- parent,
51
- });
30
+ get owner() {
31
+ return super.owner as CSharpOutputSymbol;
32
+ }
52
33
  }
53
34
 
54
35
  // contains the possible scopes where a declaration can reside