@alloy-js/csharp 0.23.0-dev.7 → 0.23.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 (102) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/dev/src/components/constructor/constructor.js +69 -9
  3. package/dist/dev/src/components/constructor/constructor.js.map +1 -1
  4. package/dist/dev/src/components/constructor/constructor.test.js +117 -0
  5. package/dist/dev/src/components/constructor/constructor.test.js.map +1 -1
  6. package/dist/dev/src/components/method/method.test.js +64 -0
  7. package/dist/dev/src/components/method/method.test.js.map +1 -1
  8. package/dist/dev/src/components/namespace/namespace.js +2 -1
  9. package/dist/dev/src/components/namespace/namespace.js.map +1 -1
  10. package/dist/dev/src/components/namespace/namespace.test.js +13 -10
  11. package/dist/dev/src/components/namespace/namespace.test.js.map +1 -1
  12. package/dist/dev/src/components/namespace.ref.test.js +54 -42
  13. package/dist/dev/src/components/namespace.ref.test.js.map +1 -1
  14. package/dist/dev/src/components/property/property.js +101 -24
  15. package/dist/dev/src/components/property/property.js.map +1 -1
  16. package/dist/dev/src/components/property/property.test.js +140 -0
  17. package/dist/dev/src/components/property/property.test.js.map +1 -1
  18. package/dist/dev/src/components/source-file/source-file.js +12 -11
  19. package/dist/dev/src/components/source-file/source-file.js.map +1 -1
  20. package/dist/dev/src/identifier-utils.js +45 -0
  21. package/dist/dev/src/identifier-utils.js.map +1 -0
  22. package/dist/dev/src/index.js +2 -0
  23. package/dist/dev/src/index.js.map +1 -1
  24. package/dist/dev/src/keywords.js +39 -0
  25. package/dist/dev/src/keywords.js.map +1 -0
  26. package/dist/dev/src/name-policy.js +29 -6
  27. package/dist/dev/src/name-policy.js.map +1 -1
  28. package/dist/dev/src/name-policy.test.js +167 -0
  29. package/dist/dev/src/name-policy.test.js.map +1 -0
  30. package/dist/src/components/constructor/constructor.d.ts +32 -0
  31. package/dist/src/components/constructor/constructor.d.ts.map +1 -1
  32. package/dist/src/components/constructor/constructor.js +35 -3
  33. package/dist/src/components/constructor/constructor.js.map +1 -1
  34. package/dist/src/components/constructor/constructor.test.js +81 -0
  35. package/dist/src/components/constructor/constructor.test.js.map +1 -1
  36. package/dist/src/components/method/method.test.js +48 -0
  37. package/dist/src/components/method/method.test.js.map +1 -1
  38. package/dist/src/components/namespace/namespace.js +2 -1
  39. package/dist/src/components/namespace/namespace.js.map +1 -1
  40. package/dist/src/components/namespace/namespace.test.js +6 -3
  41. package/dist/src/components/namespace/namespace.test.js.map +1 -1
  42. package/dist/src/components/namespace.ref.test.js +24 -12
  43. package/dist/src/components/namespace.ref.test.js.map +1 -1
  44. package/dist/src/components/property/property.d.ts +42 -4
  45. package/dist/src/components/property/property.d.ts.map +1 -1
  46. package/dist/src/components/property/property.js +64 -11
  47. package/dist/src/components/property/property.js.map +1 -1
  48. package/dist/src/components/property/property.test.js +104 -0
  49. package/dist/src/components/property/property.test.js.map +1 -1
  50. package/dist/src/components/source-file/source-file.d.ts.map +1 -1
  51. package/dist/src/components/source-file/source-file.js +3 -2
  52. package/dist/src/components/source-file/source-file.js.map +1 -1
  53. package/dist/src/identifier-utils.d.ts +22 -0
  54. package/dist/src/identifier-utils.d.ts.map +1 -0
  55. package/dist/src/identifier-utils.js +45 -0
  56. package/dist/src/identifier-utils.js.map +1 -0
  57. package/dist/src/index.d.ts +2 -0
  58. package/dist/src/index.d.ts.map +1 -1
  59. package/dist/src/index.js +2 -0
  60. package/dist/src/index.js.map +1 -1
  61. package/dist/src/keywords.d.ts +32 -0
  62. package/dist/src/keywords.d.ts.map +1 -0
  63. package/dist/src/keywords.js +39 -0
  64. package/dist/src/keywords.js.map +1 -0
  65. package/dist/src/name-policy.d.ts +7 -0
  66. package/dist/src/name-policy.d.ts.map +1 -1
  67. package/dist/src/name-policy.js +29 -6
  68. package/dist/src/name-policy.js.map +1 -1
  69. package/dist/src/name-policy.test.d.ts +2 -0
  70. package/dist/src/name-policy.test.d.ts.map +1 -0
  71. package/dist/src/name-policy.test.js +167 -0
  72. package/dist/src/name-policy.test.js.map +1 -0
  73. package/dist/tsconfig.tsbuildinfo +1 -1
  74. package/docs/api/components/Constructor.md +17 -11
  75. package/docs/api/components/Property.md +30 -30
  76. package/docs/api/contexts/csharp-context.md +21 -0
  77. package/docs/api/contexts/index.md +3 -0
  78. package/docs/api/functions/createCSharpNamePolicy.md +4 -0
  79. package/docs/api/functions/index.md +5 -1
  80. package/docs/api/functions/isCSharpContextualKeyword.md +20 -0
  81. package/docs/api/functions/isCSharpKeyword.md +22 -0
  82. package/docs/api/functions/isValidCSharpIdentifier.md +20 -0
  83. package/docs/api/functions/sanitizeCSharpIdentifier.md +24 -0
  84. package/docs/api/index.md +3 -2
  85. package/docs/api/variables/csharpKeywords.md +11 -0
  86. package/docs/api/variables/index.md +1 -0
  87. package/package.json +8 -8
  88. package/src/components/constructor/constructor.test.tsx +64 -0
  89. package/src/components/constructor/constructor.tsx +81 -1
  90. package/src/components/method/method.test.tsx +36 -0
  91. package/src/components/namespace/namespace.test.tsx +6 -3
  92. package/src/components/namespace/namespace.tsx +2 -2
  93. package/src/components/namespace.ref.test.tsx +24 -12
  94. package/src/components/property/property.test.tsx +89 -0
  95. package/src/components/property/property.tsx +111 -16
  96. package/src/components/source-file/source-file.tsx +1 -4
  97. package/src/identifier-utils.ts +45 -0
  98. package/src/index.ts +2 -0
  99. package/src/keywords.ts +162 -0
  100. package/src/name-policy.test.ts +210 -0
  101. package/src/name-policy.ts +30 -6
  102. package/temp/api.json +317 -7
@@ -1,5 +1,5 @@
1
1
  import { createComponent as _$createComponent, memo as _$memo, createIntrinsic as _$createIntrinsic } from "@alloy-js/core/jsx-runtime";
2
- import { createSymbolSlot, List, MemberDeclaration, MemberName } from "@alloy-js/core";
2
+ import { Block, createSymbolSlot, List, MemberDeclaration, MemberName } from "@alloy-js/core";
3
3
  import { computeModifiersPrefix, getAccessModifier, makeModifiers } from "../../modifiers.js";
4
4
  import { createPropertySymbol } from "../../symbols/factories.js";
5
5
  import { AttributeList } from "../attributes/attributes.js";
@@ -31,7 +31,7 @@ export function Property(props) {
31
31
  if (props.init && props.set) {
32
32
  throw new Error(`Cannot use 'init' and 'set' together on property '${name}'`);
33
33
  }
34
- // note that scope wraps the method decl so that the params get the correct scope
34
+ const hasAccessorBody = props.get && props.get !== true || props.set && props.set !== true;
35
35
  return _$createComponent(MemberDeclaration, {
36
36
  symbol: propertySymbol,
37
37
  get children() {
@@ -48,28 +48,81 @@ export function Property(props) {
48
48
  get children() {
49
49
  return props.type;
50
50
  }
51
- }), _$memo(() => props.nullable && "?"), " ", _$createComponent(MemberName, {}), " ", "{ ", _$createComponent(List, {
51
+ }), _$memo(() => props.nullable && "?"), " ", _$createComponent(MemberName, {}), _$memo(() => hasAccessorBody ? _$createComponent(AccessorBlock, {
52
+ get get() {
53
+ return props.get;
54
+ },
55
+ get set() {
56
+ return props.set;
57
+ },
58
+ get init() {
59
+ return props.init;
60
+ }
61
+ }) : _$createComponent(AutoAccessors, {
62
+ get get() {
63
+ return props.get;
64
+ },
65
+ get set() {
66
+ return props.set;
67
+ },
68
+ get init() {
69
+ return props.init;
70
+ },
71
+ get initializer() {
72
+ return props.initializer;
73
+ }
74
+ }))];
75
+ }
76
+ });
77
+ }
78
+ function AutoAccessors(props) {
79
+ return _$createIntrinsic("group", {
80
+ get children() {
81
+ return [" ", "{ ", _$createComponent(List, {
52
82
  joiner: " ",
53
83
  get children() {
54
84
  return [_$memo(() => props.get && "get;"), _$memo(() => props.set && "set;"), _$memo(() => props.init && "init;")];
55
85
  }
56
- }), " }", _$memo(() => _$memo(() => !!props.initializer)() && _$createComponent(PropertyInitializer, {
86
+ }), " }", _$memo(() => _$memo(() => !!props.initializer)() && [" =", _$createIntrinsic("indent", {
57
87
  get children() {
58
- return props.initializer;
88
+ return [_$createIntrinsic("line", {}), _$memo(() => props.initializer), ";"];
59
89
  }
60
- }))];
90
+ })])];
61
91
  }
62
92
  });
63
93
  }
64
- function PropertyInitializer(props) {
65
- return _$createIntrinsic("group", {
94
+ function AccessorBlock(props) {
95
+ return _$createComponent(Block, {
96
+ newline: true,
66
97
  get children() {
67
- return [" =", _$createIntrinsic("indent", {
98
+ return _$createComponent(List, {
99
+ hardline: true,
68
100
  get children() {
69
- return [_$createIntrinsic("line", {}), _$memo(() => props.children), ";"];
101
+ return [_$memo(() => _$memo(() => !!props.get)() && _$createComponent(Accessor, {
102
+ keyword: "get",
103
+ get body() {
104
+ return props.get;
105
+ }
106
+ })), _$memo(() => _$memo(() => !!props.set)() && _$createComponent(Accessor, {
107
+ keyword: "set",
108
+ get body() {
109
+ return props.set;
110
+ }
111
+ })), _$memo(() => props.init && "init;")];
70
112
  }
71
- })];
113
+ });
72
114
  }
73
115
  });
74
116
  }
117
+ function Accessor(props) {
118
+ if (props.body === true) {
119
+ return [_$memo(() => props.keyword), ";"];
120
+ }
121
+ return [_$memo(() => props.keyword), " ", _$createComponent(Block, {
122
+ inline: true,
123
+ get children() {
124
+ return props.body;
125
+ }
126
+ })];
127
+ }
75
128
  //# sourceMappingURL=property.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createSymbolSlot","List","MemberDeclaration","MemberName","computeModifiersPrefix","getAccessModifier","makeModifiers","createPropertySymbol","AttributeList","DocWhen","getModifiers","Property","props","TypeSlot","propertySymbol","name","refkeys","refkey","isNullable","nullable","type","firstSymbol","modifiers","init","set","Error","_$createComponent","symbol","children","doc","attributes","endline","_$memo","joiner","get","initializer","PropertyInitializer","_$createIntrinsic"],"sources":["../../../../src/components/property/property.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAEEA,gBAAgB,EAChBC,IAAI,EACJC,iBAAiB,EACjBC,UAAU,QAGL,gBAAgB;AACvB,SAEEC,sBAAsB,EACtBC,iBAAiB,EACjBC,aAAa,QACR,oBAAoB;AAC3B,SAASC,oBAAoB,QAAQ,4BAA4B;AACjE,SAASC,aAAa;AACtB,SAASC,OAAO;;AAEhB;;AAiBA,MAAMC,YAAY,GAAGJ,aAAa,CAAoB,CACpD,KAAK,EACL,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,UAAU,CACX,CAAC;;AAEF;;AA2DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASK,QAAQA,CAACC,KAAoB,EAAE;EAC7C,MAAMC,QAAQ,GAAGb,gBAAgB,CAAC,CAAC;EAEnC,MAAMc,cAAc,GAAGP,oBAAoB,CAACK,KAAK,CAACG,IAAI,EAAE;IACtDC,OAAO,EAAEJ,KAAK,CAACK,MAAM;IACrBC,UAAU,EAAEN,KAAK,CAACO,QAAQ;IAC1BC,IAAI,EAAEP,QAAQ,CAACQ;EACjB,CAAC,CAAC;EAEF,MAAMC,SAAS,GAAGlB,sBAAsB,CAAC,CACvCC,iBAAiB,CAACO,KAAK,CAAC,EACxBF,YAAY,CAACE,KAAK,CAAC,CACpB,CAAC;EAEF,IAAIA,KAAK,CAACW,IAAI,IAAIX,KAAK,CAACY,GAAG,EAAE;IAC3B,MAAM,IAAIC,KAAK,CACb,qDAAqDV,IAAI,GAC3D,CAAC;EACH;EACA;EACA,OAAAW,iBAAA,CACGxB,iBAAiB;IAACyB,MAAM,EAAEb,cAAc;IAAA,IAAAc,SAAA;MAAA,QAAAF,iBAAA,CACtCjB,OAAO;QAAA,IAACoB,GAAGA,CAAA;UAAA,OAAEjB,KAAK,CAACiB,GAAG;QAAA;MAAA,IAAAH,iBAAA,CACtBlB,aAAa;QAAA,IAACsB,UAAUA,CAAA;UAAA,OAAElB,KAAK,CAACkB,UAAU;QAAA;QAAEC,OAAO;MAAA,IACnDT,SAAS,EAAAI,iBAAA,CACTb,QAAQ;QAAA,IAAAe,SAAA;UAAA,OAAEhB,KAAK,CAACQ,IAAI;QAAA;MAAA,IAAAY,MAAA,OACpBpB,KAAK,CAACO,QAAQ,IAAI,GAAG,QAAAO,iBAAA,CAAGvB,UAAU,YAAK,IAAI,EAAAuB,iBAAA,CAC3CzB,IAAI;QAACgC,MAAM;QAAA,IAAAL,SAAA;UAAA,QAAAI,MAAA,OACTpB,KAAK,CAACsB,GAAG,IAAI,MAAM,GAAAF,MAAA,OACnBpB,KAAK,CAACY,GAAG,IAAI,MAAM,GAAAQ,MAAA,OACnBpB,KAAK,CAACW,IAAI,IAAI,OAAO;QAAA;MAAA,IAEvB,IAAI,EAAAS,MAAA,OACJA,MAAA,SAAApB,KAAK,CAACuB,WAAW,OAAAT,iBAAA,CACfU,mBAAmB;QAAA,IAAAR,SAAA;UAAA,OAAEhB,KAAK,CAACuB,WAAW;QAAA;MAAA,EACxC;IAAA;EAAA;AAGP;AAEA,SAASC,mBAAmBA,CAACxB,KAA6B,EAAE;EAC1D,OAAAyB,iBAAA;IAAA,IAAAT,SAAA;MAAA,QAEK,IAAI,EAAAS,iBAAA;QAAA,IAAAT,SAAA;UAAA,QAAAS,iBAAA,cAAAL,MAAA,OAGFpB,KAAK,CAACgB,QAAQ;QAAA;MAAA;IAAA;EAAA;AAIvB","ignoreList":[]}
1
+ {"version":3,"names":["Block","createSymbolSlot","List","MemberDeclaration","MemberName","computeModifiersPrefix","getAccessModifier","makeModifiers","createPropertySymbol","AttributeList","DocWhen","getModifiers","Property","props","TypeSlot","propertySymbol","name","refkeys","refkey","isNullable","nullable","type","firstSymbol","modifiers","init","set","Error","hasAccessorBody","get","_$createComponent","symbol","children","doc","attributes","endline","_$memo","AccessorBlock","AutoAccessors","initializer","_$createIntrinsic","joiner","newline","hardline","Accessor","keyword","body","inline"],"sources":["../../../../src/components/property/property.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -268,4 +268,108 @@ describe("format", () => {
268
268
  `);
269
269
  });
270
270
  });
271
+ describe("accessor bodies", () => {
272
+ it("renders get with body", () => {
273
+ expect(_$createComponent(Wrapper, {
274
+ get children() {
275
+ return _$createComponent(Property, {
276
+ "public": true,
277
+ name: "Name",
278
+ type: "string",
279
+ get get() {
280
+ return ["return _name;"];
281
+ }
282
+ });
283
+ }
284
+ })).toRenderTo(`
285
+ public class TestClass
286
+ {
287
+ public string Name
288
+ {
289
+ get { return _name; }
290
+ }
291
+ }
292
+ `);
293
+ });
294
+ it("renders set with body", () => {
295
+ expect(_$createComponent(Wrapper, {
296
+ get children() {
297
+ return _$createComponent(Property, {
298
+ "public": true,
299
+ name: "Value",
300
+ type: "int",
301
+ get: true,
302
+ get set() {
303
+ return ["_value = value;"];
304
+ }
305
+ });
306
+ }
307
+ })).toRenderTo(`
308
+ public class TestClass
309
+ {
310
+ public int Value
311
+ {
312
+ get;
313
+ set { _value = value; }
314
+ }
315
+ }
316
+ `);
317
+ });
318
+ it("renders both get and set with bodies", () => {
319
+ expect(_$createComponent(Wrapper, {
320
+ get children() {
321
+ return _$createComponent(Property, {
322
+ "public": true,
323
+ name: "MinValue",
324
+ type: "T",
325
+ get get() {
326
+ return ["return _minValue.HasValue ? _minValue.Value : default(T);"];
327
+ },
328
+ get set() {
329
+ return ["_minValue = value;"];
330
+ }
331
+ });
332
+ }
333
+ })).toRenderTo(`
334
+ public class TestClass
335
+ {
336
+ public T MinValue
337
+ {
338
+ get { return _minValue.HasValue ? _minValue.Value : default(T); }
339
+ set { _minValue = value; }
340
+ }
341
+ }
342
+ `);
343
+ });
344
+ it("breaks long accessor body across lines", () => {
345
+ expect(_$createComponent(TestNamespace, {
346
+ printWidth: 40,
347
+ get children() {
348
+ return _$createComponent(ClassDeclaration, {
349
+ name: "Test",
350
+ get children() {
351
+ return _$createComponent(Property, {
352
+ "public": true,
353
+ name: "Value",
354
+ type: "int",
355
+ get get() {
356
+ return ["return _someVeryLongFieldName;"];
357
+ }
358
+ });
359
+ }
360
+ });
361
+ }
362
+ })).toRenderTo(`
363
+ class Test
364
+ {
365
+ public int Value
366
+ {
367
+ get {
368
+ return _someVeryLongFieldName;
369
+ }
370
+ }
371
+ }
372
+ `);
373
+ });
374
+ });
271
375
  //# sourceMappingURL=property.test.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["describe","expect","it","TestNamespace","Attribute","ClassDeclaration","Property","Wrapper","props","_$createComponent","children","name","each","accessModifier","_$mergeProps","type","get","toRenderTo","methodModifier","set","init","doc","nullable","initializer","attributes","printWidth"],"sources":["../../../../src/components/property/property.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["describe","expect","it","TestNamespace","Attribute","ClassDeclaration","Property","Wrapper","props","_$createComponent","children","name","each","accessModifier","_$mergeProps","type","get","toRenderTo","methodModifier","set","init","doc","nullable","initializer","attributes","printWidth"],"sources":["../../../../src/components/property/property.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"source-file.d.ts","sourceRoot":"","sources":["../../../../src/components/source-file/source-file.tsx"],"names":[],"mappings":"AAKA,OAAO,EAEL,QAAQ,EAQT,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,mBAAmB,EAEpB,MAAM,kCAAkC,CAAC;AAM1C;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IAEb,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAElB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,2GAA2G;AAC3G,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,YA2EhD"}
1
+ {"version":3,"file":"source-file.d.ts","sourceRoot":"","sources":["../../../../src/components/source-file/source-file.tsx"],"names":[],"mappings":"AAKA,OAAO,EAEL,QAAQ,EAQT,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,mBAAmB,EAEpB,MAAM,kCAAkC,CAAC;AAM1C;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IAEb,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAElB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,2GAA2G;AAC3G,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,YAwEhD"}
@@ -63,9 +63,10 @@ export function SourceFile(props) {
63
63
  }
64
64
  }), _$createIntrinsic("hbr", {}), _$createIntrinsic("hbr", {})]), _$memo(() => nsSymbol === globalNs ? content : ["namespace ", _$createComponent(NamespaceName, {
65
65
  symbol: nsSymbol
66
- }), _$memo(() => _$memo(() => !!sourceFileScope.hasBlockNamespace)() ? [" ", _$createComponent(Block, {
66
+ }), _$memo(() => _$memo(() => !!sourceFileScope.hasBlockNamespace)() ? _$createComponent(Block, {
67
+ newline: true,
67
68
  children: content
68
- })] : [";", _$createIntrinsic("hbr", {}), _$createIntrinsic("hbr", {}), content])])];
69
+ }) : [";", _$createIntrinsic("hbr", {}), _$createIntrinsic("hbr", {}), content])])];
69
70
  }
70
71
  });
71
72
  }
@@ -1 +1 @@
1
- {"version":3,"names":["DocComment","NamespaceScopes","NamespaceName","Reference","Usings","Block","computed","SourceFile","CoreSourceFile","createScope","List","Scope","Show","useBinder","useCsharpFormatOptions","getGlobalNamespace","useNamespaceContext","CSharpSourceFileScope","props","binder","sourceFileScope","path","undefined","nsContext","globalNs","nsSymbol","symbol","usings","Array","from","concat","using","content","_$createComponent","children","opts","printWidth","tabWidth","useTabs","header","headerComment","SourceFileHeader","_$mergeProps","filetype","reference","value","_$memo","size","length","namespaces","_$createIntrinsic","hasBlockNamespace","when"],"sources":["../../../../src/components/source-file/source-file.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["DocComment","NamespaceScopes","NamespaceName","Reference","Usings","Block","computed","SourceFile","CoreSourceFile","createScope","List","Scope","Show","useBinder","useCsharpFormatOptions","getGlobalNamespace","useNamespaceContext","CSharpSourceFileScope","props","binder","sourceFileScope","path","undefined","nsContext","globalNs","nsSymbol","symbol","usings","Array","from","concat","using","content","_$createComponent","children","opts","printWidth","tabWidth","useTabs","header","headerComment","SourceFileHeader","_$mergeProps","filetype","reference","value","_$memo","size","length","namespaces","_$createIntrinsic","hasBlockNamespace","newline","when"],"sources":["../../../../src/components/source-file/source-file.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,UAAU;AACnB,SAASC,eAAe;AACxB,SAASC,aAAa;AACtB,SAASC,SAAS;AAClB,SAASC,MAAM;AACf,SACEC,KAAK,EAELC,QAAQ,EACRC,UAAU,IAAIC,cAAc,EAC5BC,WAAW,EACXC,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,SAAS,QACJ,gBAAgB;AACvB,SAEEC,sBAAsB,QACjB,kCAAkC;AACzC,SAASC,kBAAkB,QAAQ,oCAAoC;AACvE,SAASC,mBAAmB,QAAQ,6BAA6B;AACjE,SAASC,qBAAqB,QAAQ,6BAA6B;;AAGnE;AACA;AACA;;AAmBA;AACA,OAAO,SAASV,UAAUA,CAACW,KAAsB,EAAE;EACjD,MAAMC,MAAM,GAAGN,SAAS,CAAC,CAAC;EAC1B,MAAMO,eAAe,GAAGX,WAAW,CACjCQ,qBAAqB,EACrBC,KAAK,CAACG,IAAI,EACVC,SAAS,EACT;IACEH;EACF,CACF,CAAC;EAED,MAAMI,SAAS,GAAGP,mBAAmB,CAAC,CAAC;EACvC,MAAMQ,QAAQ,GAAGT,kBAAkB,CAACI,MAAM,CAAC;EAC3C,MAAMM,QAAQ,GAAGF,SAAS,GAAGA,SAAS,CAACG,MAAM,GAAGF,QAAQ;EACxD,MAAMG,MAAM,GAAGrB,QAAQ,CAAC,MAAM;IAC5B,OACEsB,KAAK,CAACC,IAAI,CAACT,eAAe,CAACO,MAAM,CAAC,CAClCG,MAAM,CAACZ,KAAK,CAACa,KAAK,IAAI,EAAE,CAAC;EAC7B,CAAC,CAAC;EAEF,MAAMC,OAAO,GAAG1B,QAAQ,CAAC,MAAA2B,iBAAA,CACtBhC,eAAe;IAACyB,MAAM,EAAED,QAAQ;IAAA,IAAAS,SAAA;MAAA,OAAGhB,KAAK,CAACgB,QAAQ;IAAA;EAAA,EACnD,CAAC;EAEF,MAAMC,IAAI,GAAGrB,sBAAsB,CAAC;IAClCsB,UAAU,EAAElB,KAAK,CAACkB,UAAU;IAC5BC,QAAQ,EAAEnB,KAAK,CAACmB,QAAQ;IACxBC,OAAO,EAAEpB,KAAK,CAACoB;EACjB,CAAC,CAAC;EAEF,MAAMC,MAAM,GACVrB,KAAK,CAACqB,MAAM,IAAIrB,KAAK,CAACsB,aAAa,GAAAP,iBAAA,CAChCQ,gBAAgB;IAAA,IACfF,MAAMA,CAAA;MAAA,OAAErB,KAAK,CAACqB,MAAM;IAAA;IAAA,IACpBC,aAAaA,CAAA;MAAA,OAAEtB,KAAK,CAACsB,aAAa;IAAA;EAAA,KAEpClB,SAAS;EAEb,OAAAW,iBAAA,CACGzB,cAAc,EAAAkC,YAAA;IAAA,IACbrB,IAAIA,CAAA;MAAA,OAAEH,KAAK,CAACG,IAAI;IAAA;IAChBsB,QAAQ;IACRC,SAAS,EAAEzC;EAAS,GAChBgC,IAAI;IACRI,MAAM,EAAEA,MAAM;IAAA,IAAAL,SAAA;MAAA,OAAAD,iBAAA,CAEbtB,KAAK;QAACkC,KAAK,EAAEzB,eAAe;QAAA,IAAAc,SAAA;UAAA,QAAAY,MAAA,OAC1BA,MAAA,UAAC1B,eAAe,CAACO,MAAM,CAACoB,IAAI,GAAG,CAAC,IAC9B7B,KAAK,CAACa,KAAK,IAAIb,KAAK,CAACa,KAAK,CAACiB,MAAM,GAAG,CAAE,SAAAf,iBAAA,CAEpC7B,MAAM;YAAA,IAAC6C,UAAUA,CAAA;cAAA,OAAEtB,MAAM,CAACkB,KAAK;YAAA;UAAA,IAAAK,iBAAA,aAAAA,iBAAA,YAInC,GAAAJ,MAAA,OACArB,QAAQ,KAAKD,QAAQ,GACpBQ,OAAO,kBAAAC,iBAAA,CAEM/B,aAAa;YAACwB,MAAM,EAAED;UAAQ,IAAAqB,MAAA,OACxCA,MAAA,SAAA1B,eAAe,CAAC+B,iBAAiB,MAAAlB,iBAAA,CAC/B5B,KAAK;YAAC+C,OAAO;YAAAlB,QAAA,EAAEF;UAAO,WAAAkB,iBAAA,aAAAA,iBAAA,aAIpBlB,OAAO,CACP,EAEJ;QAAA;MAAA;IAAA;EAAA;AAKb;AAOA,SAASS,gBAAgBA,CAACvB,KAA4B,EAAE;EACtD,OAAAe,iBAAA,CACGvB,IAAI;IAAA,IAAAwB,SAAA;MAAA,QAAAD,iBAAA,CACFrB,IAAI;QAAA,IAACyC,IAAIA,CAAA;UAAA,OAAEnC,KAAK,CAACsB,aAAa,KAAKlB,SAAS;QAAA;QAAA,IAAAY,SAAA;UAAA,OAAAD,iBAAA,CAC1CjC,UAAU;YAAA,IAAAkC,SAAA;cAAA,OAAEhB,KAAK,CAACsB,aAAa;YAAA;UAAA;QAAA;MAAA,IAAAP,iBAAA,CAEjCrB,IAAI;QAAA,IAACyC,IAAIA,CAAA;UAAA,OAAEnC,KAAK,CAACqB,MAAM,KAAKjB,SAAS;QAAA;QAAA,IAAAY,SAAA;UAAA,OAAGhB,KAAK,CAACqB,MAAM;QAAA;MAAA,IAAAW,iBAAA;IAAA;EAAA;AAI3D","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Checks whether the provided name is a valid C# identifier (without `@` prefix).
3
+ * Does not account for keyword conflicts — use {@link isCSharpKeyword} for that.
4
+ *
5
+ * @param name - The name to validate.
6
+ * @returns true if the name matches C# identifier rules (letter or underscore start, word chars after).
7
+ */
8
+ export declare function isValidCSharpIdentifier(name: string): boolean;
9
+ /**
10
+ * Transforms an arbitrary string into a valid C# identifier by replacing
11
+ * invalid characters. The result may still be a C# keyword — callers
12
+ * should combine with keyword escaping if needed.
13
+ *
14
+ * - If the first character is not a letter or underscore, a `_` prefix is added.
15
+ * - Subsequent non-word characters are replaced with `_`.
16
+ * - Empty strings become `_`.
17
+ *
18
+ * @param name - The string to sanitize.
19
+ * @returns A string that satisfies C# identifier character rules.
20
+ */
21
+ export declare function sanitizeCSharpIdentifier(name: string): string;
22
+ //# sourceMappingURL=identifier-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identifier-utils.d.ts","sourceRoot":"","sources":["../../src/identifier-utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqB7D"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Checks whether the provided name is a valid C# identifier (without `@` prefix).
3
+ * Does not account for keyword conflicts — use {@link isCSharpKeyword} for that.
4
+ *
5
+ * @param name - The name to validate.
6
+ * @returns true if the name matches C# identifier rules (letter or underscore start, word chars after).
7
+ */
8
+ export function isValidCSharpIdentifier(name) {
9
+ return /^[A-Za-z_]\w*$/.test(name);
10
+ }
11
+
12
+ /**
13
+ * Transforms an arbitrary string into a valid C# identifier by replacing
14
+ * invalid characters. The result may still be a C# keyword — callers
15
+ * should combine with keyword escaping if needed.
16
+ *
17
+ * - If the first character is not a letter or underscore, a `_` prefix is added.
18
+ * - Subsequent non-word characters are replaced with `_`.
19
+ * - Empty strings become `_`.
20
+ *
21
+ * @param name - The string to sanitize.
22
+ * @returns A string that satisfies C# identifier character rules.
23
+ */
24
+ export function sanitizeCSharpIdentifier(name) {
25
+ if (name.length === 0) return "_";
26
+ const chars = [];
27
+ for (let i = 0; i < name.length; i++) {
28
+ const ch = name[i];
29
+ if (i === 0) {
30
+ if (/[A-Za-z_]/.test(ch)) {
31
+ chars.push(ch);
32
+ } else {
33
+ chars.push("_");
34
+ // Keep the original char if it's a word char (e.g., digit)
35
+ if (/\w/.test(ch)) {
36
+ chars.push(ch);
37
+ }
38
+ }
39
+ } else {
40
+ chars.push(/\w/.test(ch) ? ch : "_");
41
+ }
42
+ }
43
+ return chars.join("");
44
+ }
45
+ //# sourceMappingURL=identifier-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isValidCSharpIdentifier","name","test","sanitizeCSharpIdentifier","length","chars","i","ch","push","join"],"sources":["../../src/identifier-utils.ts"],"sourcesContent":[null],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,uBAAuBA,CAACC,IAAY,EAAW;EAC7D,OAAO,gBAAgB,CAACC,IAAI,CAACD,IAAI,CAAC;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,wBAAwBA,CAACF,IAAY,EAAU;EAC7D,IAAIA,IAAI,CAACG,MAAM,KAAK,CAAC,EAAE,OAAO,GAAG;EAEjC,MAAMC,KAAe,GAAG,EAAE;EAC1B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,IAAI,CAACG,MAAM,EAAEE,CAAC,EAAE,EAAE;IACpC,MAAMC,EAAE,GAAGN,IAAI,CAACK,CAAC,CAAC;IAClB,IAAIA,CAAC,KAAK,CAAC,EAAE;MACX,IAAI,WAAW,CAACJ,IAAI,CAACK,EAAE,CAAC,EAAE;QACxBF,KAAK,CAACG,IAAI,CAACD,EAAE,CAAC;MAChB,CAAC,MAAM;QACLF,KAAK,CAACG,IAAI,CAAC,GAAG,CAAC;QACf;QACA,IAAI,IAAI,CAACN,IAAI,CAACK,EAAE,CAAC,EAAE;UACjBF,KAAK,CAACG,IAAI,CAACD,EAAE,CAAC;QAChB;MACF;IACF,CAAC,MAAM;MACLF,KAAK,CAACG,IAAI,CAAC,IAAI,CAACN,IAAI,CAACK,EAAE,CAAC,GAAGA,EAAE,GAAG,GAAG,CAAC;IACtC;EACF;EACA,OAAOF,KAAK,CAACI,IAAI,CAAC,EAAE,CAAC;AACvB","ignoreList":[]}
@@ -2,6 +2,8 @@ export * from "./access.jsx";
2
2
  export * from "./components/index.js";
3
3
  export * from "./contexts/format-options.js";
4
4
  export * from "./create-library.js";
5
+ export * from "./identifier-utils.js";
6
+ export * from "./keywords.js";
5
7
  export * from "./modifiers.js";
6
8
  export * from "./name-policy.js";
7
9
  export * from "./scopes/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
package/dist/src/index.js CHANGED
@@ -2,6 +2,8 @@ export * from "./access.js";
2
2
  export * from "./components/index.js";
3
3
  export * from "./contexts/format-options.js";
4
4
  export * from "./create-library.js";
5
+ export * from "./identifier-utils.js";
6
+ export * from "./keywords.js";
5
7
  export * from "./modifiers.js";
6
8
  export * from "./name-policy.js";
7
9
  export * from "./scopes/index.js";
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;AACA,cAAc,uBAAuB;AACrC,cAAc,8BAA8B;AAC5C,cAAc,qBAAqB;AACnC,cAAc,gBAAgB;AAC9B,cAAc,kBAAkB;AAChC,cAAc,mBAAmB;AACjC,cAAc,oBAAoB","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;AACA,cAAc,uBAAuB;AACrC,cAAc,8BAA8B;AAC5C,cAAc,qBAAqB;AACnC,cAAc,uBAAuB;AACrC,cAAc,eAAe;AAC7B,cAAc,gBAAgB;AAC9B,cAAc,kBAAkB;AAChC,cAAc,mBAAmB;AACjC,cAAc,oBAAoB","ignoreList":[]}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * C# reserved keywords that cannot be used as identifiers without `@` prefix.
3
+ * These are case-sensitive in C#.
4
+ *
5
+ * @see https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/
6
+ */
7
+ export declare const csharpKeywords: ReadonlySet<string>;
8
+ /**
9
+ * C# contextual keywords that are reserved in certain contexts.
10
+ * While not always reserved, treating them as keywords in generated code
11
+ * avoids subtle context-dependent issues.
12
+ *
13
+ * @see https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/#contextual-keywords
14
+ */
15
+ export declare const csharpContextualKeywords: ReadonlySet<string>;
16
+ /**
17
+ * Returns true if the given name is a C# reserved keyword.
18
+ * The check is case-sensitive, matching C# language semantics.
19
+ *
20
+ * Note: this only checks reserved keywords, not contextual keywords.
21
+ * Contextual keywords are only reserved in specific language contexts
22
+ * and are valid identifiers elsewhere (e.g., `value` is valid as a parameter name).
23
+ * Use {@link isCSharpContextualKeyword} to check contextual keywords separately.
24
+ */
25
+ export declare function isCSharpKeyword(name: string): boolean;
26
+ /**
27
+ * Returns true if the given name is a C# contextual keyword.
28
+ * Contextual keywords are only reserved in specific language contexts
29
+ * and are generally valid as identifiers.
30
+ */
31
+ export declare function isCSharpContextualKeyword(name: string): boolean;
32
+ //# sourceMappingURL=keywords.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keywords.d.ts","sourceRoot":"","sources":["../../src/keywords.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CA8E7C,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,MAAM,CA8CvD,CAAC;AAEH;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/D"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * C# reserved keywords that cannot be used as identifiers without `@` prefix.
3
+ * These are case-sensitive in C#.
4
+ *
5
+ * @see https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/
6
+ */
7
+ export const csharpKeywords = new Set(["abstract", "as", "base", "bool", "break", "byte", "case", "catch", "char", "checked", "class", "const", "continue", "decimal", "default", "delegate", "do", "double", "else", "enum", "event", "explicit", "extern", "false", "finally", "fixed", "float", "for", "foreach", "goto", "if", "implicit", "in", "int", "interface", "internal", "is", "lock", "long", "namespace", "new", "null", "object", "operator", "out", "override", "params", "private", "protected", "public", "readonly", "ref", "return", "sbyte", "sealed", "short", "sizeof", "stackalloc", "static", "string", "struct", "switch", "this", "throw", "true", "try", "typeof", "uint", "ulong", "unchecked", "unsafe", "ushort", "using", "virtual", "void", "volatile", "while"]);
8
+
9
+ /**
10
+ * C# contextual keywords that are reserved in certain contexts.
11
+ * While not always reserved, treating them as keywords in generated code
12
+ * avoids subtle context-dependent issues.
13
+ *
14
+ * @see https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/#contextual-keywords
15
+ */
16
+ export const csharpContextualKeywords = new Set(["add", "allows", "alias", "and", "ascending", "args", "async", "await", "by", "descending", "dynamic", "equals", "field", "file", "from", "get", "global", "group", "init", "into", "join", "let", "managed", "nameof", "nint", "not", "notnull", "nuint", "on", "or", "orderby", "partial", "record", "remove", "required", "scoped", "select", "set", "unmanaged", "value", "var", "when", "where", "with", "yield"]);
17
+
18
+ /**
19
+ * Returns true if the given name is a C# reserved keyword.
20
+ * The check is case-sensitive, matching C# language semantics.
21
+ *
22
+ * Note: this only checks reserved keywords, not contextual keywords.
23
+ * Contextual keywords are only reserved in specific language contexts
24
+ * and are valid identifiers elsewhere (e.g., `value` is valid as a parameter name).
25
+ * Use {@link isCSharpContextualKeyword} to check contextual keywords separately.
26
+ */
27
+ export function isCSharpKeyword(name) {
28
+ return csharpKeywords.has(name);
29
+ }
30
+
31
+ /**
32
+ * Returns true if the given name is a C# contextual keyword.
33
+ * Contextual keywords are only reserved in specific language contexts
34
+ * and are generally valid as identifiers.
35
+ */
36
+ export function isCSharpContextualKeyword(name) {
37
+ return csharpContextualKeywords.has(name);
38
+ }
39
+ //# sourceMappingURL=keywords.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["csharpKeywords","Set","csharpContextualKeywords","isCSharpKeyword","name","has","isCSharpContextualKeyword"],"sources":["../../src/keywords.ts"],"sourcesContent":[null],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,cAAmC,GAAG,IAAIC,GAAG,CAAC,CACzD,UAAU,EACV,IAAI,EACJ,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,SAAS,EACT,OAAO,EACP,OAAO,EACP,UAAU,EACV,SAAS,EACT,SAAS,EACT,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,MAAM,EACN,OAAO,EACP,UAAU,EACV,QAAQ,EACR,OAAO,EACP,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,SAAS,EACT,MAAM,EACN,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,KAAK,EACL,WAAW,EACX,UAAU,EACV,IAAI,EACJ,MAAM,EACN,MAAM,EACN,WAAW,EACX,KAAK,EACL,MAAM,EACN,QAAQ,EACR,UAAU,EACV,KAAK,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,WAAW,EACX,QAAQ,EACR,UAAU,EACV,KAAK,EACL,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,EACP,MAAM,EACN,KAAK,EACL,QAAQ,EACR,MAAM,EACN,OAAO,EACP,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,SAAS,EACT,MAAM,EACN,UAAU,EACV,OAAO,CACR,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,wBAA6C,GAAG,IAAID,GAAG,CAAC,CACnE,KAAK,EACL,QAAQ,EACR,OAAO,EACP,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,OAAO,EACP,MAAM,EACN,MAAM,EACN,KAAK,EACL,QAAQ,EACR,OAAO,EACP,MAAM,EACN,MAAM,EACN,MAAM,EACN,KAAK,EACL,SAAS,EACT,QAAQ,EACR,MAAM,EACN,KAAK,EACL,SAAS,EACT,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,WAAW,EACX,OAAO,EACP,KAAK,EACL,MAAM,EACN,OAAO,EACP,MAAM,EACN,OAAO,CACR,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,eAAeA,CAACC,IAAY,EAAW;EACrD,OAAOJ,cAAc,CAACK,GAAG,CAACD,IAAI,CAAC;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,yBAAyBA,CAACF,IAAY,EAAW;EAC/D,OAAOF,wBAAwB,CAACG,GAAG,CAACD,IAAI,CAAC;AAC3C","ignoreList":[]}
@@ -1,5 +1,12 @@
1
1
  import * as core from "@alloy-js/core";
2
2
  export type CSharpElements = "class" | "constant" | "variable" | "struct" | "enum" | "enum-member" | "function" | "interface" | "record" | "class-member-private" | "class-member-public" | "class-method" | "class-property" | "parameter" | "type-parameter" | "namespace";
3
+ /**
4
+ * Creates the C# naming policy with case conversion and keyword escaping.
5
+ *
6
+ * After applying the appropriate case conversion for each element kind,
7
+ * the resulting name is checked against C# reserved and contextual keywords.
8
+ * If it matches (case-sensitively), the name is prefixed with `@`.
9
+ */
3
10
  export declare function createCSharpNamePolicy(): core.NamePolicy<CSharpElements>;
4
11
  export declare function useCSharpNamePolicy(): core.NamePolicy<CSharpElements>;
5
12
  //# sourceMappingURL=name-policy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"name-policy.d.ts","sourceRoot":"","sources":["../../src/name-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AAIvC,MAAM,MAAM,cAAc,GACtB,OAAO,GACP,UAAU,GACV,UAAU,GACV,QAAQ,GACR,MAAM,GACN,aAAa,GACb,UAAU,GACV,WAAW,GACX,QAAQ,GACR,sBAAsB,GACtB,qBAAqB,GACrB,cAAc,GACd,gBAAgB,GAChB,WAAW,GACX,gBAAgB,GAChB,WAAW,CAAC;AAGhB,wBAAgB,sBAAsB,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAuBxE;AAGD,wBAAgB,mBAAmB,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAErE"}
1
+ {"version":3,"file":"name-policy.d.ts","sourceRoot":"","sources":["../../src/name-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AAMvC,MAAM,MAAM,cAAc,GACtB,OAAO,GACP,UAAU,GACV,UAAU,GACV,QAAQ,GACR,MAAM,GACN,aAAa,GACb,UAAU,GACV,WAAW,GACX,QAAQ,GACR,sBAAsB,GACtB,qBAAqB,GACrB,cAAc,GACd,gBAAgB,GAChB,WAAW,GACX,gBAAgB,GAChB,WAAW,CAAC;AAWhB;;;;;;GAMG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CA8BxE;AAGD,wBAAgB,mBAAmB,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAErE"}
@@ -1,12 +1,31 @@
1
1
  import * as core from "@alloy-js/core";
2
2
  import * as changecase from "change-case";
3
+ import { sanitizeCSharpIdentifier } from "./identifier-utils.js";
4
+ import { isCSharpKeyword } from "./keywords.js";
3
5
 
4
6
  // the context in which the name policy should be applied
5
7
 
6
- // creates the C# naming policy
8
+ /**
9
+ * Prefixes the name with `@` if it is a C# keyword.
10
+ * This is the idiomatic C# way to use reserved words as identifiers.
11
+ * The check is case-sensitive, matching C# language semantics.
12
+ */
13
+ function escapeIfKeyword(name) {
14
+ return isCSharpKeyword(name) ? `@${name}` : name;
15
+ }
16
+
17
+ /**
18
+ * Creates the C# naming policy with case conversion and keyword escaping.
19
+ *
20
+ * After applying the appropriate case conversion for each element kind,
21
+ * the resulting name is checked against C# reserved and contextual keywords.
22
+ * If it matches (case-sensitively), the name is prefixed with `@`.
23
+ */
7
24
  export function createCSharpNamePolicy() {
8
25
  return core.createNamePolicy((name, element) => {
26
+ let result;
9
27
  switch (element) {
28
+ case "namespace":
10
29
  case "class":
11
30
  case "struct":
12
31
  case "enum":
@@ -17,15 +36,19 @@ export function createCSharpNamePolicy() {
17
36
  case "class-method":
18
37
  case "type-parameter":
19
38
  case "class-property":
20
- case "namespace":
21
- return changecase.pascalCase(name);
39
+ result = changecase.pascalCase(name);
40
+ break;
22
41
  case "constant":
23
- return changecase.constantCase(name);
42
+ result = changecase.constantCase(name);
43
+ break;
24
44
  case "class-member-private":
25
- return `_${changecase.camelCase(name)}`;
45
+ result = `_${changecase.camelCase(name)}`;
46
+ break;
26
47
  default:
27
- return changecase.camelCase(name);
48
+ result = changecase.camelCase(name);
49
+ break;
28
50
  }
51
+ return escapeIfKeyword(sanitizeCSharpIdentifier(result));
29
52
  });
30
53
  }
31
54
 
@@ -1 +1 @@
1
- {"version":3,"names":["core","changecase","createCSharpNamePolicy","createNamePolicy","name","element","pascalCase","constantCase","camelCase","useCSharpNamePolicy","useNamePolicy"],"sources":["../../src/name-policy.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,IAAI,MAAM,gBAAgB;AACtC,OAAO,KAAKC,UAAU,MAAM,aAAa;;AAEzC;;AAmBA;AACA,OAAO,SAASC,sBAAsBA,CAAA,EAAoC;EACxE,OAAOF,IAAI,CAACG,gBAAgB,CAAC,CAACC,IAAI,EAAEC,OAAO,KAAK;IAC9C,QAAQA,OAAO;MACb,KAAK,OAAO;MACZ,KAAK,QAAQ;MACb,KAAK,MAAM;MACX,KAAK,aAAa;MAClB,KAAK,WAAW;MAChB,KAAK,QAAQ;MACb,KAAK,qBAAqB;MAC1B,KAAK,cAAc;MACnB,KAAK,gBAAgB;MACrB,KAAK,gBAAgB;MACrB,KAAK,WAAW;QACd,OAAOJ,UAAU,CAACK,UAAU,CAACF,IAAI,CAAC;MACpC,KAAK,UAAU;QACb,OAAOH,UAAU,CAACM,YAAY,CAACH,IAAI,CAAC;MACtC,KAAK,sBAAsB;QACzB,OAAO,IAAIH,UAAU,CAACO,SAAS,CAACJ,IAAI,CAAC,EAAE;MACzC;QACE,OAAOH,UAAU,CAACO,SAAS,CAACJ,IAAI,CAAC;IACrC;EACF,CAAC,CAAC;AACJ;;AAEA;AACA,OAAO,SAASK,mBAAmBA,CAAA,EAAoC;EACrE,OAAOT,IAAI,CAACU,aAAa,CAAC,CAAC;AAC7B","ignoreList":[]}
1
+ {"version":3,"names":["core","changecase","sanitizeCSharpIdentifier","isCSharpKeyword","escapeIfKeyword","name","createCSharpNamePolicy","createNamePolicy","element","result","pascalCase","constantCase","camelCase","useCSharpNamePolicy","useNamePolicy"],"sources":["../../src/name-policy.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,IAAI,MAAM,gBAAgB;AACtC,OAAO,KAAKC,UAAU,MAAM,aAAa;AACzC,SAASC,wBAAwB,QAAQ,uBAAuB;AAChE,SAASC,eAAe,QAAQ,eAAe;;AAE/C;;AAmBA;AACA;AACA;AACA;AACA;AACA,SAASC,eAAeA,CAACC,IAAY,EAAU;EAC7C,OAAOF,eAAe,CAACE,IAAI,CAAC,GAAG,IAAIA,IAAI,EAAE,GAAGA,IAAI;AAClD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,sBAAsBA,CAAA,EAAoC;EACxE,OAAON,IAAI,CAACO,gBAAgB,CAAC,CAACF,IAAI,EAAEG,OAAO,KAAK;IAC9C,IAAIC,MAAc;IAClB,QAAQD,OAAO;MACb,KAAK,WAAW;MAChB,KAAK,OAAO;MACZ,KAAK,QAAQ;MACb,KAAK,MAAM;MACX,KAAK,aAAa;MAClB,KAAK,WAAW;MAChB,KAAK,QAAQ;MACb,KAAK,qBAAqB;MAC1B,KAAK,cAAc;MACnB,KAAK,gBAAgB;MACrB,KAAK,gBAAgB;QACnBC,MAAM,GAAGR,UAAU,CAACS,UAAU,CAACL,IAAI,CAAC;QACpC;MACF,KAAK,UAAU;QACbI,MAAM,GAAGR,UAAU,CAACU,YAAY,CAACN,IAAI,CAAC;QACtC;MACF,KAAK,sBAAsB;QACzBI,MAAM,GAAG,IAAIR,UAAU,CAACW,SAAS,CAACP,IAAI,CAAC,EAAE;QACzC;MACF;QACEI,MAAM,GAAGR,UAAU,CAACW,SAAS,CAACP,IAAI,CAAC;QACnC;IACJ;IAEA,OAAOD,eAAe,CAACF,wBAAwB,CAACO,MAAM,CAAC,CAAC;EAC1D,CAAC,CAAC;AACJ;;AAEA;AACA,OAAO,SAASI,mBAAmBA,CAAA,EAAoC;EACrE,OAAOb,IAAI,CAACc,aAAa,CAAC,CAAC;AAC7B","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=name-policy.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"name-policy.test.d.ts","sourceRoot":"","sources":["../../src/name-policy.test.ts"],"names":[],"mappings":""}