@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.
- package/CHANGELOG.md +19 -0
- package/dist/dev/src/components/method/method.test.js +64 -0
- package/dist/dev/src/components/method/method.test.js.map +1 -1
- package/dist/dev/src/components/namespace/namespace.js +2 -1
- package/dist/dev/src/components/namespace/namespace.js.map +1 -1
- package/dist/dev/src/components/namespace/namespace.test.js +13 -10
- package/dist/dev/src/components/namespace/namespace.test.js.map +1 -1
- package/dist/dev/src/components/namespace.ref.test.js +54 -42
- package/dist/dev/src/components/namespace.ref.test.js.map +1 -1
- package/dist/dev/src/components/property/property.js +101 -24
- package/dist/dev/src/components/property/property.js.map +1 -1
- package/dist/dev/src/components/property/property.test.js +140 -0
- package/dist/dev/src/components/property/property.test.js.map +1 -1
- package/dist/dev/src/components/source-file/source-file.js +12 -11
- package/dist/dev/src/components/source-file/source-file.js.map +1 -1
- package/dist/dev/src/identifier-utils.js +45 -0
- package/dist/dev/src/identifier-utils.js.map +1 -0
- package/dist/dev/src/index.js +2 -0
- package/dist/dev/src/index.js.map +1 -1
- package/dist/dev/src/keywords.js +39 -0
- package/dist/dev/src/keywords.js.map +1 -0
- package/dist/dev/src/name-policy.js +29 -6
- package/dist/dev/src/name-policy.js.map +1 -1
- package/dist/dev/src/name-policy.test.js +167 -0
- package/dist/dev/src/name-policy.test.js.map +1 -0
- package/dist/src/components/method/method.test.js +48 -0
- package/dist/src/components/method/method.test.js.map +1 -1
- package/dist/src/components/namespace/namespace.js +2 -1
- package/dist/src/components/namespace/namespace.js.map +1 -1
- package/dist/src/components/namespace/namespace.test.js +6 -3
- package/dist/src/components/namespace/namespace.test.js.map +1 -1
- package/dist/src/components/namespace.ref.test.js +24 -12
- package/dist/src/components/namespace.ref.test.js.map +1 -1
- package/dist/src/components/property/property.d.ts +42 -4
- package/dist/src/components/property/property.d.ts.map +1 -1
- package/dist/src/components/property/property.js +64 -11
- package/dist/src/components/property/property.js.map +1 -1
- package/dist/src/components/property/property.test.js +104 -0
- package/dist/src/components/property/property.test.js.map +1 -1
- package/dist/src/components/source-file/source-file.d.ts.map +1 -1
- package/dist/src/components/source-file/source-file.js +3 -2
- package/dist/src/components/source-file/source-file.js.map +1 -1
- package/dist/src/identifier-utils.d.ts +22 -0
- package/dist/src/identifier-utils.d.ts.map +1 -0
- package/dist/src/identifier-utils.js +45 -0
- package/dist/src/identifier-utils.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/keywords.d.ts +32 -0
- package/dist/src/keywords.d.ts.map +1 -0
- package/dist/src/keywords.js +39 -0
- package/dist/src/keywords.js.map +1 -0
- package/dist/src/name-policy.d.ts +7 -0
- package/dist/src/name-policy.d.ts.map +1 -1
- package/dist/src/name-policy.js +29 -6
- package/dist/src/name-policy.js.map +1 -1
- package/dist/src/name-policy.test.d.ts +2 -0
- package/dist/src/name-policy.test.d.ts.map +1 -0
- package/dist/src/name-policy.test.js +167 -0
- package/dist/src/name-policy.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/docs/api/components/Property.md +30 -30
- package/docs/api/contexts/csharp-context.md +21 -0
- package/docs/api/contexts/index.md +3 -0
- package/docs/api/functions/createCSharpNamePolicy.md +4 -0
- package/docs/api/functions/index.md +5 -1
- package/docs/api/functions/isCSharpContextualKeyword.md +20 -0
- package/docs/api/functions/isCSharpKeyword.md +22 -0
- package/docs/api/functions/isValidCSharpIdentifier.md +20 -0
- package/docs/api/functions/sanitizeCSharpIdentifier.md +24 -0
- package/docs/api/index.md +3 -2
- package/docs/api/variables/csharpKeywords.md +11 -0
- package/docs/api/variables/index.md +1 -0
- package/package.json +6 -6
- package/src/components/method/method.test.tsx +36 -0
- package/src/components/namespace/namespace.test.tsx +6 -3
- package/src/components/namespace/namespace.tsx +2 -2
- package/src/components/namespace.ref.test.tsx +24 -12
- package/src/components/property/property.test.tsx +89 -0
- package/src/components/property/property.tsx +111 -16
- package/src/components/source-file/source-file.tsx +1 -4
- package/src/identifier-utils.ts +45 -0
- package/src/index.ts +2 -0
- package/src/keywords.ts +162 -0
- package/src/name-policy.test.ts +210 -0
- package/src/name-policy.ts +30 -6
- 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":[]}
|