@alloy-js/csharp 0.23.0-dev.8 → 0.24.0-dev.0

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 (89) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/dev/src/components/method/method.test.js +64 -0
  3. package/dist/dev/src/components/method/method.test.js.map +1 -1
  4. package/dist/dev/src/components/namespace/namespace.js +2 -1
  5. package/dist/dev/src/components/namespace/namespace.js.map +1 -1
  6. package/dist/dev/src/components/namespace/namespace.test.js +13 -10
  7. package/dist/dev/src/components/namespace/namespace.test.js.map +1 -1
  8. package/dist/dev/src/components/namespace.ref.test.js +54 -42
  9. package/dist/dev/src/components/namespace.ref.test.js.map +1 -1
  10. package/dist/dev/src/components/property/property.js +101 -24
  11. package/dist/dev/src/components/property/property.js.map +1 -1
  12. package/dist/dev/src/components/property/property.test.js +140 -0
  13. package/dist/dev/src/components/property/property.test.js.map +1 -1
  14. package/dist/dev/src/components/source-file/source-file.js +12 -11
  15. package/dist/dev/src/components/source-file/source-file.js.map +1 -1
  16. package/dist/dev/src/identifier-utils.js +45 -0
  17. package/dist/dev/src/identifier-utils.js.map +1 -0
  18. package/dist/dev/src/index.js +2 -0
  19. package/dist/dev/src/index.js.map +1 -1
  20. package/dist/dev/src/keywords.js +39 -0
  21. package/dist/dev/src/keywords.js.map +1 -0
  22. package/dist/dev/src/name-policy.js +29 -6
  23. package/dist/dev/src/name-policy.js.map +1 -1
  24. package/dist/dev/src/name-policy.test.js +167 -0
  25. package/dist/dev/src/name-policy.test.js.map +1 -0
  26. package/dist/src/components/method/method.test.js +48 -0
  27. package/dist/src/components/method/method.test.js.map +1 -1
  28. package/dist/src/components/namespace/namespace.js +2 -1
  29. package/dist/src/components/namespace/namespace.js.map +1 -1
  30. package/dist/src/components/namespace/namespace.test.js +6 -3
  31. package/dist/src/components/namespace/namespace.test.js.map +1 -1
  32. package/dist/src/components/namespace.ref.test.js +24 -12
  33. package/dist/src/components/namespace.ref.test.js.map +1 -1
  34. package/dist/src/components/property/property.d.ts +42 -4
  35. package/dist/src/components/property/property.d.ts.map +1 -1
  36. package/dist/src/components/property/property.js +64 -11
  37. package/dist/src/components/property/property.js.map +1 -1
  38. package/dist/src/components/property/property.test.js +104 -0
  39. package/dist/src/components/property/property.test.js.map +1 -1
  40. package/dist/src/components/source-file/source-file.d.ts.map +1 -1
  41. package/dist/src/components/source-file/source-file.js +3 -2
  42. package/dist/src/components/source-file/source-file.js.map +1 -1
  43. package/dist/src/identifier-utils.d.ts +22 -0
  44. package/dist/src/identifier-utils.d.ts.map +1 -0
  45. package/dist/src/identifier-utils.js +45 -0
  46. package/dist/src/identifier-utils.js.map +1 -0
  47. package/dist/src/index.d.ts +2 -0
  48. package/dist/src/index.d.ts.map +1 -1
  49. package/dist/src/index.js +2 -0
  50. package/dist/src/index.js.map +1 -1
  51. package/dist/src/keywords.d.ts +32 -0
  52. package/dist/src/keywords.d.ts.map +1 -0
  53. package/dist/src/keywords.js +39 -0
  54. package/dist/src/keywords.js.map +1 -0
  55. package/dist/src/name-policy.d.ts +7 -0
  56. package/dist/src/name-policy.d.ts.map +1 -1
  57. package/dist/src/name-policy.js +29 -6
  58. package/dist/src/name-policy.js.map +1 -1
  59. package/dist/src/name-policy.test.d.ts +2 -0
  60. package/dist/src/name-policy.test.d.ts.map +1 -0
  61. package/dist/src/name-policy.test.js +167 -0
  62. package/dist/src/name-policy.test.js.map +1 -0
  63. package/dist/tsconfig.tsbuildinfo +1 -1
  64. package/docs/api/components/Property.md +30 -30
  65. package/docs/api/contexts/csharp-context.md +21 -0
  66. package/docs/api/contexts/index.md +3 -0
  67. package/docs/api/functions/createCSharpNamePolicy.md +4 -0
  68. package/docs/api/functions/index.md +5 -1
  69. package/docs/api/functions/isCSharpContextualKeyword.md +20 -0
  70. package/docs/api/functions/isCSharpKeyword.md +22 -0
  71. package/docs/api/functions/isValidCSharpIdentifier.md +20 -0
  72. package/docs/api/functions/sanitizeCSharpIdentifier.md +24 -0
  73. package/docs/api/index.md +3 -2
  74. package/docs/api/variables/csharpKeywords.md +11 -0
  75. package/docs/api/variables/index.md +1 -0
  76. package/package.json +6 -6
  77. package/src/components/method/method.test.tsx +36 -0
  78. package/src/components/namespace/namespace.test.tsx +6 -3
  79. package/src/components/namespace/namespace.tsx +2 -2
  80. package/src/components/namespace.ref.test.tsx +24 -12
  81. package/src/components/property/property.test.tsx +89 -0
  82. package/src/components/property/property.tsx +111 -16
  83. package/src/components/source-file/source-file.tsx +1 -4
  84. package/src/identifier-utils.ts +45 -0
  85. package/src/index.ts +2 -0
  86. package/src/keywords.ts +162 -0
  87. package/src/name-policy.test.ts +210 -0
  88. package/src/name-policy.ts +30 -6
  89. package/temp/api.json +253 -7
@@ -0,0 +1,167 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { isValidCSharpIdentifier, sanitizeCSharpIdentifier } from "./identifier-utils.js";
3
+ import { csharpContextualKeywords, csharpKeywords, isCSharpContextualKeyword, isCSharpKeyword } from "./keywords.js";
4
+ import { createCSharpNamePolicy } from "./name-policy.js";
5
+ describe("isCSharpKeyword", () => {
6
+ it("recognizes reserved keywords", () => {
7
+ expect(isCSharpKeyword("class")).toBe(true);
8
+ expect(isCSharpKeyword("interface")).toBe(true);
9
+ expect(isCSharpKeyword("string")).toBe(true);
10
+ expect(isCSharpKeyword("int")).toBe(true);
11
+ expect(isCSharpKeyword("void")).toBe(true);
12
+ expect(isCSharpKeyword("return")).toBe(true);
13
+ });
14
+ it("does not match contextual keywords", () => {
15
+ expect(isCSharpKeyword("async")).toBe(false);
16
+ expect(isCSharpKeyword("value")).toBe(false);
17
+ expect(isCSharpKeyword("var")).toBe(false);
18
+ expect(isCSharpKeyword("record")).toBe(false);
19
+ });
20
+ it("is case-sensitive — PascalCase versions are not keywords", () => {
21
+ expect(isCSharpKeyword("Class")).toBe(false);
22
+ expect(isCSharpKeyword("String")).toBe(false);
23
+ expect(isCSharpKeyword("Int")).toBe(false);
24
+ expect(isCSharpKeyword("Void")).toBe(false);
25
+ });
26
+ it("rejects non-keywords", () => {
27
+ expect(isCSharpKeyword("MyClass")).toBe(false);
28
+ expect(isCSharpKeyword("foo")).toBe(false);
29
+ });
30
+ it("keyword sets are non-empty", () => {
31
+ expect(csharpKeywords.size).toBeGreaterThan(70);
32
+ expect(csharpContextualKeywords.size).toBeGreaterThan(30);
33
+ });
34
+ });
35
+ describe("isCSharpContextualKeyword", () => {
36
+ it("recognizes contextual keywords", () => {
37
+ expect(isCSharpContextualKeyword("async")).toBe(true);
38
+ expect(isCSharpContextualKeyword("await")).toBe(true);
39
+ expect(isCSharpContextualKeyword("value")).toBe(true);
40
+ expect(isCSharpContextualKeyword("var")).toBe(true);
41
+ expect(isCSharpContextualKeyword("record")).toBe(true);
42
+ expect(isCSharpContextualKeyword("required")).toBe(true);
43
+ });
44
+ it("does not match reserved keywords", () => {
45
+ expect(isCSharpContextualKeyword("class")).toBe(false);
46
+ expect(isCSharpContextualKeyword("int")).toBe(false);
47
+ });
48
+ });
49
+ describe("isValidCSharpIdentifier", () => {
50
+ it("accepts valid identifiers", () => {
51
+ expect(isValidCSharpIdentifier("MyClass")).toBe(true);
52
+ expect(isValidCSharpIdentifier("_private")).toBe(true);
53
+ expect(isValidCSharpIdentifier("name123")).toBe(true);
54
+ expect(isValidCSharpIdentifier("a")).toBe(true);
55
+ expect(isValidCSharpIdentifier("_")).toBe(true);
56
+ });
57
+ it("rejects invalid identifiers", () => {
58
+ expect(isValidCSharpIdentifier("123start")).toBe(false);
59
+ expect(isValidCSharpIdentifier("has-dash")).toBe(false);
60
+ expect(isValidCSharpIdentifier("has space")).toBe(false);
61
+ expect(isValidCSharpIdentifier("")).toBe(false);
62
+ expect(isValidCSharpIdentifier("foo.bar")).toBe(false);
63
+ });
64
+ it("does not check for keywords (only character rules)", () => {
65
+ // "class" has valid characters, even though it's a keyword
66
+ expect(isValidCSharpIdentifier("class")).toBe(true);
67
+ });
68
+ });
69
+ describe("sanitizeCSharpIdentifier", () => {
70
+ it("passes through valid identifiers unchanged", () => {
71
+ expect(sanitizeCSharpIdentifier("ValidName")).toBe("ValidName");
72
+ expect(sanitizeCSharpIdentifier("_private")).toBe("_private");
73
+ expect(sanitizeCSharpIdentifier("name123")).toBe("name123");
74
+ });
75
+ it("prefixes underscore when first char is a digit", () => {
76
+ expect(sanitizeCSharpIdentifier("1foo")).toBe("_1foo");
77
+ });
78
+ it("replaces non-word characters with underscore", () => {
79
+ expect(sanitizeCSharpIdentifier("foo-bar")).toBe("foo_bar");
80
+ expect(sanitizeCSharpIdentifier("has space")).toBe("has_space");
81
+ expect(sanitizeCSharpIdentifier("a.b.c")).toBe("a_b_c");
82
+ });
83
+ it("handles leading special characters", () => {
84
+ expect(sanitizeCSharpIdentifier("$foo")).toBe("_foo");
85
+ expect(sanitizeCSharpIdentifier("-bar")).toBe("_bar");
86
+ });
87
+ it("handles empty string", () => {
88
+ expect(sanitizeCSharpIdentifier("")).toBe("_");
89
+ });
90
+ });
91
+ describe("createCSharpNamePolicy keyword escaping", () => {
92
+ const policy = createCSharpNamePolicy();
93
+ describe("PascalCase elements avoid most keyword conflicts naturally", () => {
94
+ it("class element: 'string' becomes 'String' (not a keyword, no escape)", () => {
95
+ expect(policy.getName("string", "class")).toBe("String");
96
+ });
97
+ it("class element: 'class' becomes 'Class' (not a keyword, no escape)", () => {
98
+ expect(policy.getName("class", "class")).toBe("Class");
99
+ });
100
+ it("class-property element: 'value' becomes 'Value' (not a keyword, no escape)", () => {
101
+ expect(policy.getName("value", "class-property")).toBe("Value");
102
+ });
103
+ });
104
+ describe("camelCase elements may hit keywords and get @-escaped", () => {
105
+ it("parameter: 'string' stays 'string' → gets @-escaped", () => {
106
+ expect(policy.getName("string", "parameter")).toBe("@string");
107
+ });
108
+ it("variable: 'int' stays 'int' → gets @-escaped", () => {
109
+ expect(policy.getName("int", "variable")).toBe("@int");
110
+ });
111
+ it("parameter: 'return' stays 'return' → gets @-escaped", () => {
112
+ expect(policy.getName("return", "parameter")).toBe("@return");
113
+ });
114
+ it("variable: 'value' stays 'value' — contextual keyword, not escaped", () => {
115
+ expect(policy.getName("value", "variable")).toBe("value");
116
+ });
117
+ it("parameter: 'async' stays 'async' — contextual keyword, not escaped", () => {
118
+ expect(policy.getName("async", "parameter")).toBe("async");
119
+ });
120
+ });
121
+ describe("non-keyword names pass through normally", () => {
122
+ it("parameter: 'myParam' stays 'myParam'", () => {
123
+ expect(policy.getName("myParam", "parameter")).toBe("myParam");
124
+ });
125
+ it("class: 'my-model' becomes 'MyModel'", () => {
126
+ expect(policy.getName("my-model", "class")).toBe("MyModel");
127
+ });
128
+ it("parameter: 'some-param' becomes 'someParam'", () => {
129
+ expect(policy.getName("some-param", "parameter")).toBe("someParam");
130
+ });
131
+ });
132
+ describe("namespace handling", () => {
133
+ it("applies PascalCase", () => {
134
+ expect(policy.getName("my-service", "namespace")).toBe("MyService");
135
+ });
136
+ it("single segment works", () => {
137
+ expect(policy.getName("system", "namespace")).toBe("System");
138
+ });
139
+ it("escapes keyword segments", () => {
140
+ // "namespace" as a namespace segment → PascalCase → "Namespace" → not a keyword
141
+ expect(policy.getName("namespace", "namespace")).toBe("Namespace");
142
+ });
143
+ });
144
+ describe("constant and private member escaping", () => {
145
+ it("constant: 'class' becomes 'CLASS' (not a keyword)", () => {
146
+ expect(policy.getName("class", "constant")).toBe("CLASS");
147
+ });
148
+ it("class-member-private: 'value' becomes '_value' (not a keyword)", () => {
149
+ expect(policy.getName("value", "class-member-private")).toBe("_value");
150
+ });
151
+ });
152
+ describe("identifier sanitization", () => {
153
+ it("sanitizes names starting with digits", () => {
154
+ expect(policy.getName("123foo", "class")).toBe("_123foo");
155
+ });
156
+ it("sanitizes names starting with digits for camelCase elements", () => {
157
+ expect(policy.getName("123param", "parameter")).toBe("_123param");
158
+ });
159
+ it("sanitizes empty string", () => {
160
+ expect(policy.getName("", "class")).toBe("_");
161
+ });
162
+ it("sanitizes namespace starting with digits", () => {
163
+ expect(policy.getName("123service", "namespace")).toBe("_123service");
164
+ });
165
+ });
166
+ });
167
+ //# sourceMappingURL=name-policy.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["describe","expect","it","isValidCSharpIdentifier","sanitizeCSharpIdentifier","csharpContextualKeywords","csharpKeywords","isCSharpContextualKeyword","isCSharpKeyword","createCSharpNamePolicy","toBe","size","toBeGreaterThan","policy","getName"],"sources":["../../src/name-policy.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}