@typespec/http-server-csharp 0.58.0-alpha.28 → 0.58.0-alpha.29-dev.3

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 (279) hide show
  1. package/dist/src/cli/cli.js +118 -154
  2. package/dist/src/cli/cli.js.map +1 -1
  3. package/dist/src/components/controller-action/controller-action.d.ts +16 -0
  4. package/dist/src/components/controller-action/controller-action.d.ts.map +1 -0
  5. package/dist/src/components/controller-action/controller-action.js +251 -0
  6. package/dist/src/components/controller-action/controller-action.js.map +1 -0
  7. package/dist/src/components/controller-action/controller-action.test.d.ts +2 -0
  8. package/dist/src/components/controller-action/controller-action.test.d.ts.map +1 -0
  9. package/dist/src/components/controller-action/controller-action.test.js +106 -0
  10. package/dist/src/components/controller-action/controller-action.test.js.map +1 -0
  11. package/dist/src/components/controller-action/parameter-binding.d.ts +17 -0
  12. package/dist/src/components/controller-action/parameter-binding.d.ts.map +1 -0
  13. package/dist/src/components/controller-action/parameter-binding.js +77 -0
  14. package/dist/src/components/controller-action/parameter-binding.js.map +1 -0
  15. package/dist/src/components/controller-action/response-analysis.d.ts +10 -0
  16. package/dist/src/components/controller-action/response-analysis.d.ts.map +1 -0
  17. package/dist/src/components/controller-action/response-analysis.js +61 -0
  18. package/dist/src/components/controller-action/response-analysis.js.map +1 -0
  19. package/dist/src/components/controllers/controllers.d.ts +18 -0
  20. package/dist/src/components/controllers/controllers.d.ts.map +1 -0
  21. package/dist/src/components/controllers/controllers.js +64 -0
  22. package/dist/src/components/controllers/controllers.js.map +1 -0
  23. package/dist/src/components/controllers/controllers.test.d.ts +2 -0
  24. package/dist/src/components/controllers/controllers.test.d.ts.map +1 -0
  25. package/dist/src/components/controllers/controllers.test.js +84 -0
  26. package/dist/src/components/controllers/controllers.test.js.map +1 -0
  27. package/dist/src/components/csharp-file.d.ts +15 -0
  28. package/dist/src/components/csharp-file.d.ts.map +1 -0
  29. package/dist/src/components/csharp-file.js +28 -0
  30. package/dist/src/components/csharp-file.js.map +1 -0
  31. package/dist/src/components/enums/enums.d.ts +28 -0
  32. package/dist/src/components/enums/enums.d.ts.map +1 -0
  33. package/dist/src/components/enums/enums.js +158 -0
  34. package/dist/src/components/enums/enums.js.map +1 -0
  35. package/dist/src/components/enums/enums.test.d.ts +2 -0
  36. package/dist/src/components/enums/enums.test.d.ts.map +1 -0
  37. package/dist/src/components/enums/enums.test.js +112 -0
  38. package/dist/src/components/enums/enums.test.js.map +1 -0
  39. package/dist/src/components/interfaces/interfaces.d.ts +17 -0
  40. package/dist/src/components/interfaces/interfaces.d.ts.map +1 -0
  41. package/dist/src/components/interfaces/interfaces.js +153 -0
  42. package/dist/src/components/interfaces/interfaces.js.map +1 -0
  43. package/dist/src/components/interfaces/interfaces.test.d.ts +2 -0
  44. package/dist/src/components/interfaces/interfaces.test.d.ts.map +1 -0
  45. package/dist/src/components/interfaces/interfaces.test.js +76 -0
  46. package/dist/src/components/interfaces/interfaces.test.js.map +1 -0
  47. package/dist/src/components/models/anonymous-models.d.ts +9 -0
  48. package/dist/src/components/models/anonymous-models.d.ts.map +1 -0
  49. package/dist/src/components/models/anonymous-models.js +37 -0
  50. package/dist/src/components/models/anonymous-models.js.map +1 -0
  51. package/dist/src/components/models/error-models.d.ts +5 -0
  52. package/dist/src/components/models/error-models.d.ts.map +1 -0
  53. package/dist/src/components/models/error-models.js +84 -0
  54. package/dist/src/components/models/error-models.js.map +1 -0
  55. package/dist/src/components/models/model-helpers.d.ts +40 -0
  56. package/dist/src/components/models/model-helpers.d.ts.map +1 -0
  57. package/dist/src/components/models/model-helpers.js +239 -0
  58. package/dist/src/components/models/model-helpers.js.map +1 -0
  59. package/dist/src/components/models/models.d.ts +15 -0
  60. package/dist/src/components/models/models.d.ts.map +1 -0
  61. package/dist/src/components/models/models.js +234 -0
  62. package/dist/src/components/models/models.js.map +1 -0
  63. package/dist/src/components/models/models.test.d.ts +2 -0
  64. package/dist/src/components/models/models.test.d.ts.map +1 -0
  65. package/dist/src/components/models/models.test.js +151 -0
  66. package/dist/src/components/models/models.test.js.map +1 -0
  67. package/dist/src/components/project/csproj.d.ts +12 -0
  68. package/dist/src/components/project/csproj.d.ts.map +1 -0
  69. package/dist/src/components/project/csproj.js +35 -0
  70. package/dist/src/components/project/csproj.js.map +1 -0
  71. package/dist/src/components/project/csproj.test.d.ts +2 -0
  72. package/dist/src/components/project/csproj.test.d.ts.map +1 -0
  73. package/dist/src/components/project/csproj.test.js +42 -0
  74. package/dist/src/components/project/csproj.test.js.map +1 -0
  75. package/dist/src/components/project/launch-settings.d.ts +16 -0
  76. package/dist/src/components/project/launch-settings.d.ts.map +1 -0
  77. package/dist/src/components/project/launch-settings.js +73 -0
  78. package/dist/src/components/project/launch-settings.js.map +1 -0
  79. package/dist/src/components/project/launch-settings.test.d.ts +2 -0
  80. package/dist/src/components/project/launch-settings.test.d.ts.map +1 -0
  81. package/dist/src/components/project/launch-settings.test.js +48 -0
  82. package/dist/src/components/project/launch-settings.test.js.map +1 -0
  83. package/dist/src/components/project/program.d.ts +14 -0
  84. package/dist/src/components/project/program.d.ts.map +1 -0
  85. package/dist/src/components/project/program.js +75 -0
  86. package/dist/src/components/project/program.js.map +1 -0
  87. package/dist/src/components/project/program.test.d.ts +2 -0
  88. package/dist/src/components/project/program.test.d.ts.map +1 -0
  89. package/dist/src/components/project/program.test.js +50 -0
  90. package/dist/src/components/project/program.test.js.map +1 -0
  91. package/dist/src/components/render-root.d.ts +14 -0
  92. package/dist/src/components/render-root.d.ts.map +1 -0
  93. package/dist/src/components/render-root.js +122 -0
  94. package/dist/src/components/render-root.js.map +1 -0
  95. package/dist/src/components/request-models.d.ts +15 -0
  96. package/dist/src/components/request-models.d.ts.map +1 -0
  97. package/dist/src/components/request-models.js +97 -0
  98. package/dist/src/components/request-models.js.map +1 -0
  99. package/dist/src/components/scaffolding/documentation.d.ts +12 -0
  100. package/dist/src/components/scaffolding/documentation.d.ts.map +1 -0
  101. package/dist/src/{lib/doc.js → components/scaffolding/documentation.js} +56 -46
  102. package/dist/src/components/scaffolding/documentation.js.map +1 -0
  103. package/dist/src/components/scaffolding/mock-helpers.d.ts +10 -0
  104. package/dist/src/components/scaffolding/mock-helpers.d.ts.map +1 -0
  105. package/dist/src/components/scaffolding/mock-helpers.js +268 -0
  106. package/dist/src/components/scaffolding/mock-helpers.js.map +1 -0
  107. package/dist/src/components/scaffolding/mock-implementations.d.ts +14 -0
  108. package/dist/src/components/scaffolding/mock-implementations.d.ts.map +1 -0
  109. package/dist/src/components/scaffolding/mock-implementations.js +152 -0
  110. package/dist/src/components/scaffolding/mock-implementations.js.map +1 -0
  111. package/dist/src/components/scaffolding/mock-return-utils.d.ts +11 -0
  112. package/dist/src/components/scaffolding/mock-return-utils.d.ts.map +1 -0
  113. package/dist/src/components/scaffolding/mock-return-utils.js +62 -0
  114. package/dist/src/components/scaffolding/mock-return-utils.js.map +1 -0
  115. package/dist/src/components/scaffolding/mock-scaffolding.d.ts +6 -0
  116. package/dist/src/components/scaffolding/mock-scaffolding.d.ts.map +1 -0
  117. package/dist/src/components/scaffolding/mock-scaffolding.js +5 -0
  118. package/dist/src/components/scaffolding/mock-scaffolding.js.map +1 -0
  119. package/dist/src/components/scaffolding/mock-scaffolding.test.d.ts +2 -0
  120. package/dist/src/components/scaffolding/mock-scaffolding.test.d.ts.map +1 -0
  121. package/dist/src/components/scaffolding/mock-scaffolding.test.js +59 -0
  122. package/dist/src/components/scaffolding/mock-scaffolding.test.js.map +1 -0
  123. package/dist/src/components/serialization/base64-url-json-converter.d.ts +7 -0
  124. package/dist/src/components/serialization/base64-url-json-converter.d.ts.map +1 -0
  125. package/dist/src/components/serialization/base64-url-json-converter.js +58 -0
  126. package/dist/src/components/serialization/base64-url-json-converter.js.map +1 -0
  127. package/dist/src/components/serialization/constraint-attributes.d.ts +7 -0
  128. package/dist/src/components/serialization/constraint-attributes.d.ts.map +1 -0
  129. package/dist/src/components/serialization/constraint-attributes.js +556 -0
  130. package/dist/src/components/serialization/constraint-attributes.js.map +1 -0
  131. package/dist/src/components/serialization/http-service-exception-filter.d.ts +8 -0
  132. package/dist/src/components/serialization/http-service-exception-filter.d.ts.map +1 -0
  133. package/dist/src/components/serialization/http-service-exception-filter.js +71 -0
  134. package/dist/src/components/serialization/http-service-exception-filter.js.map +1 -0
  135. package/dist/src/components/serialization/json-converters.d.ts +7 -0
  136. package/dist/src/components/serialization/json-converters.d.ts.map +1 -0
  137. package/dist/src/components/serialization/json-converters.js +22 -0
  138. package/dist/src/components/serialization/json-converters.js.map +1 -0
  139. package/dist/src/components/serialization/json-converters.test.d.ts +2 -0
  140. package/dist/src/components/serialization/json-converters.test.d.ts.map +1 -0
  141. package/dist/src/components/serialization/json-converters.test.js +136 -0
  142. package/dist/src/components/serialization/json-converters.test.js.map +1 -0
  143. package/dist/src/components/serialization/json-serialization-provider.d.ts +7 -0
  144. package/dist/src/components/serialization/json-serialization-provider.d.ts.map +1 -0
  145. package/dist/src/components/serialization/json-serialization-provider.js +90 -0
  146. package/dist/src/components/serialization/json-serialization-provider.js.map +1 -0
  147. package/dist/src/components/serialization/time-span-duration-converter.d.ts +7 -0
  148. package/dist/src/components/serialization/time-span-duration-converter.d.ts.map +1 -0
  149. package/dist/src/components/serialization/time-span-duration-converter.js +44 -0
  150. package/dist/src/components/serialization/time-span-duration-converter.js.map +1 -0
  151. package/dist/src/components/serialization/unix-epoch-date-time-converter.d.ts +7 -0
  152. package/dist/src/components/serialization/unix-epoch-date-time-converter.d.ts.map +1 -0
  153. package/dist/src/components/serialization/unix-epoch-date-time-converter.js +71 -0
  154. package/dist/src/components/serialization/unix-epoch-date-time-converter.js.map +1 -0
  155. package/dist/src/components/type-expression/type-expression.d.ts +24 -0
  156. package/dist/src/components/type-expression/type-expression.d.ts.map +1 -0
  157. package/dist/src/components/type-expression/type-expression.js +223 -0
  158. package/dist/src/components/type-expression/type-expression.js.map +1 -0
  159. package/dist/src/components/type-expression/type-expression.test.d.ts +2 -0
  160. package/dist/src/components/type-expression/type-expression.test.d.ts.map +1 -0
  161. package/dist/src/components/type-expression/type-expression.test.js +207 -0
  162. package/dist/src/components/type-expression/type-expression.test.js.map +1 -0
  163. package/dist/src/context/emitter-options-context.d.ts +13 -0
  164. package/dist/src/context/emitter-options-context.d.ts.map +1 -0
  165. package/dist/src/context/emitter-options-context.js +15 -0
  166. package/dist/src/context/emitter-options-context.js.map +1 -0
  167. package/dist/src/diagnostics.d.ts +8 -0
  168. package/dist/src/diagnostics.d.ts.map +1 -0
  169. package/dist/src/diagnostics.js +164 -0
  170. package/dist/src/diagnostics.js.map +1 -0
  171. package/dist/src/emitter.d.ts +8 -0
  172. package/dist/src/emitter.d.ts.map +1 -0
  173. package/dist/src/emitter.js +180 -0
  174. package/dist/src/emitter.js.map +1 -0
  175. package/dist/src/{lib/index.d.ts → index.d.ts} +1 -1
  176. package/dist/src/index.d.ts.map +1 -0
  177. package/dist/src/{lib/index.js → index.js} +1 -1
  178. package/dist/src/index.js.map +1 -0
  179. package/dist/src/{lib/lib.d.ts → lib.d.ts} +4 -14
  180. package/dist/src/lib.d.ts.map +1 -0
  181. package/dist/src/lib.js +133 -0
  182. package/dist/src/lib.js.map +1 -0
  183. package/dist/src/output-writer.d.ts +11 -0
  184. package/dist/src/output-writer.d.ts.map +1 -0
  185. package/dist/src/output-writer.js +72 -0
  186. package/dist/src/output-writer.js.map +1 -0
  187. package/dist/src/service-discovery.d.ts +13 -0
  188. package/dist/src/service-discovery.d.ts.map +1 -0
  189. package/dist/src/service-discovery.js +93 -0
  190. package/dist/src/service-discovery.js.map +1 -0
  191. package/dist/src/service-resolution.d.ts +34 -0
  192. package/dist/src/service-resolution.d.ts.map +1 -0
  193. package/dist/src/service-resolution.js +244 -0
  194. package/dist/src/service-resolution.js.map +1 -0
  195. package/dist/src/testing/index.d.ts +2 -0
  196. package/dist/src/testing/index.d.ts.map +1 -0
  197. package/dist/src/testing/index.js +2 -0
  198. package/dist/src/testing/index.js.map +1 -0
  199. package/dist/src/utils/attributes.d.ts +8 -0
  200. package/dist/src/utils/attributes.d.ts.map +1 -0
  201. package/dist/src/utils/attributes.js +224 -0
  202. package/dist/src/utils/attributes.js.map +1 -0
  203. package/dist/src/utils/csharp-libs.d.ts +87 -0
  204. package/dist/src/utils/csharp-libs.d.ts.map +1 -0
  205. package/dist/src/utils/csharp-libs.js +90 -0
  206. package/dist/src/utils/csharp-libs.js.map +1 -0
  207. package/dist/src/utils/doc-comments.d.ts +2 -0
  208. package/dist/src/utils/doc-comments.d.ts.map +1 -0
  209. package/dist/src/utils/doc-comments.js +4 -0
  210. package/dist/src/utils/doc-comments.js.map +1 -0
  211. package/dist/src/utils/http-helpers.d.ts +19 -0
  212. package/dist/src/utils/http-helpers.d.ts.map +1 -0
  213. package/dist/src/utils/http-helpers.js +70 -0
  214. package/dist/src/utils/http-helpers.js.map +1 -0
  215. package/dist/src/utils/http-helpers.test.d.ts +2 -0
  216. package/dist/src/utils/http-helpers.test.d.ts.map +1 -0
  217. package/dist/src/utils/http-helpers.test.js +68 -0
  218. package/dist/src/utils/http-helpers.test.js.map +1 -0
  219. package/dist/src/utils/namespace-utils.d.ts +13 -0
  220. package/dist/src/utils/namespace-utils.d.ts.map +1 -0
  221. package/dist/src/utils/namespace-utils.js +55 -0
  222. package/dist/src/utils/namespace-utils.js.map +1 -0
  223. package/dist/src/utils/naming.d.ts +31 -0
  224. package/dist/src/utils/naming.d.ts.map +1 -0
  225. package/dist/src/utils/naming.js +87 -0
  226. package/dist/src/utils/naming.js.map +1 -0
  227. package/dist/src/utils/naming.test.d.ts +2 -0
  228. package/dist/src/utils/naming.test.d.ts.map +1 -0
  229. package/dist/src/utils/naming.test.js +86 -0
  230. package/dist/src/utils/naming.test.js.map +1 -0
  231. package/dist/src/utils/port.d.ts +5 -0
  232. package/dist/src/utils/port.d.ts.map +1 -0
  233. package/dist/src/utils/port.js +33 -0
  234. package/dist/src/utils/port.js.map +1 -0
  235. package/dist/src/utils/return-type-helpers.d.ts +8 -0
  236. package/dist/src/utils/return-type-helpers.d.ts.map +1 -0
  237. package/dist/src/utils/return-type-helpers.js +59 -0
  238. package/dist/src/utils/return-type-helpers.js.map +1 -0
  239. package/package.json +36 -28
  240. package/dist/src/lib/attributes.d.ts +0 -43
  241. package/dist/src/lib/attributes.d.ts.map +0 -1
  242. package/dist/src/lib/attributes.js +0 -422
  243. package/dist/src/lib/attributes.js.map +0 -1
  244. package/dist/src/lib/boilerplate.d.ts +0 -6
  245. package/dist/src/lib/boilerplate.d.ts.map +0 -1
  246. package/dist/src/lib/boilerplate.js +0 -792
  247. package/dist/src/lib/boilerplate.js.map +0 -1
  248. package/dist/src/lib/doc.d.ts +0 -5
  249. package/dist/src/lib/doc.d.ts.map +0 -1
  250. package/dist/src/lib/doc.js.map +0 -1
  251. package/dist/src/lib/index.d.ts.map +0 -1
  252. package/dist/src/lib/index.js.map +0 -1
  253. package/dist/src/lib/interfaces.d.ts +0 -183
  254. package/dist/src/lib/interfaces.d.ts.map +0 -1
  255. package/dist/src/lib/interfaces.js +0 -287
  256. package/dist/src/lib/interfaces.js.map +0 -1
  257. package/dist/src/lib/lib.d.ts.map +0 -1
  258. package/dist/src/lib/lib.js +0 -146
  259. package/dist/src/lib/lib.js.map +0 -1
  260. package/dist/src/lib/project.d.ts +0 -5
  261. package/dist/src/lib/project.d.ts.map +0 -1
  262. package/dist/src/lib/project.js +0 -101
  263. package/dist/src/lib/project.js.map +0 -1
  264. package/dist/src/lib/scaffolding.d.ts +0 -22
  265. package/dist/src/lib/scaffolding.d.ts.map +0 -1
  266. package/dist/src/lib/scaffolding.js +0 -461
  267. package/dist/src/lib/scaffolding.js.map +0 -1
  268. package/dist/src/lib/service.d.ts +0 -4
  269. package/dist/src/lib/service.d.ts.map +0 -1
  270. package/dist/src/lib/service.js +0 -1208
  271. package/dist/src/lib/service.js.map +0 -1
  272. package/dist/src/lib/type-helpers.d.ts +0 -44
  273. package/dist/src/lib/type-helpers.d.ts.map +0 -1
  274. package/dist/src/lib/type-helpers.js +0 -106
  275. package/dist/src/lib/type-helpers.js.map +0 -1
  276. package/dist/src/lib/utils.d.ts +0 -120
  277. package/dist/src/lib/utils.d.ts.map +0 -1
  278. package/dist/src/lib/utils.js +0 -1580
  279. package/dist/src/lib/utils.js.map +0 -1
@@ -0,0 +1,224 @@
1
+ import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
+ import { Attribute } from "@alloy-js/csharp";
3
+ import { getEncode, getMaxItems, getMaxLength, getMaxValue, getMaxValueExclusive, getMinItems, getMinLength, getMinValue, getMinValueExclusive, getPattern, isArrayModelType, resolveEncodedName } from "@typespec/compiler";
4
+ import { isUnionEnum } from "../components/enums/enums.js";
5
+ import { JsonSerialization } from "./csharp-libs.js";
6
+
7
+ /**
8
+ * Maps a TypeSpec scalar name to the C# type name used in attributes.
9
+ * This follows the old emitter's mapping.
10
+ */
11
+ function scalarToCSharpTypeName(program, scalar) {
12
+ const stdBase = getStdBase(program, scalar);
13
+ if (!stdBase) return undefined;
14
+ const map = {
15
+ int8: "SByte",
16
+ uint8: "Byte",
17
+ int16: "Int16",
18
+ int32: "int",
19
+ int64: "long",
20
+ uint16: "UInt16",
21
+ uint32: "UInt32",
22
+ uint64: "UInt64",
23
+ safeint: "long",
24
+ float32: "float",
25
+ float64: "double",
26
+ decimal: "decimal",
27
+ decimal128: "decimal",
28
+ numeric: "double",
29
+ integer: "int",
30
+ float: "double",
31
+ boolean: "bool",
32
+ string: "string",
33
+ bytes: "byte[]",
34
+ plainDate: "DateTime",
35
+ plainTime: "DateTime",
36
+ utcDateTime: "DateTimeOffset",
37
+ offsetDateTime: "DateTimeOffset",
38
+ duration: "TimeSpan",
39
+ url: "string"
40
+ };
41
+ return map[stdBase.name];
42
+ }
43
+ function getStdBase(program, scalar) {
44
+ if (program.checker.isStdType(scalar)) return scalar;
45
+ if (scalar.baseScalar) return getStdBase(program, scalar.baseScalar);
46
+ return undefined;
47
+ }
48
+ function getScalarEncoding(program, type) {
49
+ const encode = getEncode(program, type);
50
+ if (encode) return {
51
+ encoding: encode.encoding ?? "string",
52
+ type: encode.type
53
+ };
54
+ if (type.kind === "ModelProperty" && type.type.kind === "Scalar") {
55
+ return getScalarEncoding(program, type.type);
56
+ }
57
+ if (type.kind === "Scalar" && type.baseScalar) {
58
+ return getScalarEncoding(program, type.baseScalar);
59
+ }
60
+ return undefined;
61
+ }
62
+
63
+ /**
64
+ * Get all C# attributes for a model property.
65
+ * Returns an array of attribute strings like `[JsonConverter(typeof(TimeSpanDurationConverter))]`
66
+ */
67
+ export function getPropertyAttributes(program, property) {
68
+ const attrs = [];
69
+
70
+ // Encoding attributes (JsonConverter)
71
+ const encodingAttrs = getEncodingAttributes(program, property);
72
+ attrs.push(...encodingAttrs);
73
+
74
+ // JsonStringEnumConverter for enum and union-as-enum properties
75
+ if (property.type.kind === "Enum" || property.type.kind === "Union" && isUnionEnum(property.type)) {
76
+ attrs.push(_$createComponent(Attribute, {
77
+ get name() {
78
+ return JsonSerialization.JsonConverterAttribute;
79
+ },
80
+ args: ["typeof(JsonStringEnumConverter)"]
81
+ }));
82
+ }
83
+
84
+ // Constraint attributes
85
+ const numericAttr = getNumericConstraintAttribute(program, property);
86
+ if (numericAttr) attrs.push(numericAttr);
87
+ const stringAttr = getStringConstraintAttribute(program, property);
88
+ if (stringAttr) attrs.push(stringAttr);
89
+ const arrayAttr = getArrayConstraintAttribute(program, property);
90
+ if (arrayAttr) attrs.push(arrayAttr);
91
+
92
+ // JsonPropertyName (only when encoded name differs)
93
+ const nameAttr = getEncodedNameAttribute(program, property);
94
+ if (nameAttr) attrs.push(nameAttr);
95
+
96
+ // SafeInt constraint
97
+ if (property.type.kind === "Scalar") {
98
+ const safeIntAttr = getSafeIntAttribute(program, property.type);
99
+ if (safeIntAttr) attrs.push(safeIntAttr);
100
+ }
101
+ return attrs;
102
+ }
103
+ function getEncodingAttributes(program, property) {
104
+ const result = [];
105
+ if (property.type.kind !== "Scalar") return result;
106
+ const stdBase = getStdBase(program, property.type);
107
+ if (!stdBase) return result;
108
+ const encoding = getScalarEncoding(program, property);
109
+ switch (stdBase.name) {
110
+ case "duration":
111
+ result.push(_$createComponent(Attribute, {
112
+ get name() {
113
+ return JsonSerialization.JsonConverterAttribute;
114
+ },
115
+ args: ["typeof(TimeSpanDurationConverter)"]
116
+ }));
117
+ break;
118
+ case "unixTimestamp32":
119
+ result.push(_$createComponent(Attribute, {
120
+ get name() {
121
+ return JsonSerialization.JsonConverterAttribute;
122
+ },
123
+ args: ["typeof(UnixEpochDateTimeOffsetConverter)"]
124
+ }));
125
+ break;
126
+ case "bytes":
127
+ if (encoding && encoding.encoding.toLowerCase() === "base64url") {
128
+ result.push(_$createComponent(Attribute, {
129
+ get name() {
130
+ return JsonSerialization.JsonConverterAttribute;
131
+ },
132
+ args: ["typeof(Base64UrlJsonConverter)"]
133
+ }));
134
+ }
135
+ break;
136
+ case "utcDateTime":
137
+ case "offsetDateTime":
138
+ if (encoding && encoding.encoding.toLowerCase() === "unixtimestamp") {
139
+ result.push(_$createComponent(Attribute, {
140
+ get name() {
141
+ return JsonSerialization.JsonConverterAttribute;
142
+ },
143
+ args: ["typeof(UnixEpochDateTimeOffsetConverter)"]
144
+ }));
145
+ }
146
+ break;
147
+ }
148
+ return result;
149
+ }
150
+ function getNumericConstraintAttribute(program, property) {
151
+ if (property.type.kind !== "Scalar") return undefined;
152
+ const minVal = getMinValue(program, property);
153
+ const maxVal = getMaxValue(program, property);
154
+ const minExcl = getMinValueExclusive(program, property);
155
+ const maxExcl = getMaxValueExclusive(program, property);
156
+ if (minVal === undefined && maxVal === undefined && minExcl === undefined && maxExcl === undefined) {
157
+ return undefined;
158
+ }
159
+ const csharpType = scalarToCSharpTypeName(program, property.type);
160
+ if (!csharpType) return undefined;
161
+ const params = [];
162
+ const actualMin = minVal ?? minExcl;
163
+ const actualMax = maxVal ?? maxExcl;
164
+ if (actualMin !== undefined) params.push(`MinValue = ${actualMin}`);
165
+ if (actualMax !== undefined) params.push(`MaxValue = ${actualMax}`);
166
+ if (minExcl !== undefined) params.push(`MinValueExclusive = true`);
167
+ if (maxExcl !== undefined) params.push(`MaxValueExclusive = true`);
168
+ return _$createComponent(Attribute, {
169
+ name: `NumericConstraint<${csharpType}>`,
170
+ args: params
171
+ });
172
+ }
173
+ function getStringConstraintAttribute(program, property) {
174
+ const minLen = getMinLength(program, property);
175
+ const maxLen = getMaxLength(program, property);
176
+ const pattern = getPattern(program, property);
177
+ if (minLen === undefined && maxLen === undefined && pattern === undefined) return undefined;
178
+ const params = [];
179
+ if (minLen !== undefined) params.push(`MinLength = ${minLen}`);
180
+ if (maxLen !== undefined) params.push(`MaxLength = ${maxLen}`);
181
+ if (pattern !== undefined) params.push(`Pattern = "${pattern}"`);
182
+ return _$createComponent(Attribute, {
183
+ name: "StringConstraint",
184
+ args: params
185
+ });
186
+ }
187
+ function getArrayConstraintAttribute(program, property) {
188
+ const minItems = getMinItems(program, property);
189
+ const maxItems = getMaxItems(program, property);
190
+ if (minItems === undefined && maxItems === undefined) return undefined;
191
+ if (property.type.kind !== "Model" || !isArrayModelType(property.type)) return undefined;
192
+ const elementType = property.type.indexer.value;
193
+ if (elementType.kind !== "Scalar") return undefined;
194
+ const csharpType = scalarToCSharpTypeName(program, elementType);
195
+ if (!csharpType) return undefined;
196
+ const params = [];
197
+ if (minItems !== undefined) params.push(`MinItems = ${minItems}`);
198
+ if (maxItems !== undefined) params.push(`MaxItems = ${maxItems}`);
199
+ return _$createComponent(Attribute, {
200
+ name: `ArrayConstraint<${csharpType}>`,
201
+ args: params
202
+ });
203
+ }
204
+ function getEncodedNameAttribute(program, property) {
205
+ const encodedName = resolveEncodedName(program, property, "application/json");
206
+ if (encodedName !== property.name) {
207
+ return _$createComponent(Attribute, {
208
+ get name() {
209
+ return JsonSerialization.JsonPropertyNameAttribute;
210
+ },
211
+ args: [`"${encodedName}"`]
212
+ });
213
+ }
214
+ return undefined;
215
+ }
216
+ function getSafeIntAttribute(program, scalar) {
217
+ const stdBase = getStdBase(program, scalar);
218
+ if (!stdBase || stdBase.name !== "safeint") return undefined;
219
+ return _$createComponent(Attribute, {
220
+ name: "NumericConstraint<long>",
221
+ args: ["MinValue = -9007199254740991", "MaxValue = 9007199254740991"]
222
+ });
223
+ }
224
+ //# sourceMappingURL=attributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Attribute","getEncode","getMaxItems","getMaxLength","getMaxValue","getMaxValueExclusive","getMinItems","getMinLength","getMinValue","getMinValueExclusive","getPattern","isArrayModelType","resolveEncodedName","isUnionEnum","JsonSerialization","scalarToCSharpTypeName","program","scalar","stdBase","getStdBase","undefined","map","int8","uint8","int16","int32","int64","uint16","uint32","uint64","safeint","float32","float64","decimal","decimal128","numeric","integer","float","boolean","string","bytes","plainDate","plainTime","utcDateTime","offsetDateTime","duration","url","name","checker","isStdType","baseScalar","getScalarEncoding","type","encode","encoding","kind","getPropertyAttributes","property","attrs","encodingAttrs","getEncodingAttributes","push","_$createComponent","JsonConverterAttribute","args","numericAttr","getNumericConstraintAttribute","stringAttr","getStringConstraintAttribute","arrayAttr","getArrayConstraintAttribute","nameAttr","getEncodedNameAttribute","safeIntAttr","getSafeIntAttribute","result","toLowerCase","minVal","maxVal","minExcl","maxExcl","csharpType","params","actualMin","actualMax","minLen","maxLen","pattern","minItems","maxItems","elementType","indexer","value","encodedName","JsonPropertyNameAttribute"],"sources":["../../../src/utils/attributes.tsx"],"sourcesContent":[null],"mappings":";AACA,SAASA,SAAS,QAAQ,kBAAkB;AAC5C,SACEC,SAAS,EACTC,WAAW,EACXC,YAAY,EACZC,WAAW,EACXC,oBAAoB,EACpBC,WAAW,EACXC,YAAY,EACZC,WAAW,EACXC,oBAAoB,EACpBC,UAAU,EACVC,gBAAgB,EAChBC,kBAAkB,QAKb,oBAAoB;AAC3B,SAASC,WAAW;AACpB,SAASC,iBAAiB;;AAE1B;AACA;AACA;AACA;AACA,SAASC,sBAAsBA,CAACC,OAAgB,EAAEC,MAAc,EAAsB;EACpF,MAAMC,OAAO,GAAGC,UAAU,CAACH,OAAO,EAAEC,MAAM,CAAC;EAC3C,IAAI,CAACC,OAAO,EAAE,OAAOE,SAAS;EAC9B,MAAMC,GAA2B,GAAG;IAClCC,IAAI,EAAE,OAAO;IACbC,KAAK,EAAE,MAAM;IACbC,KAAK,EAAE,OAAO;IACdC,KAAK,EAAE,KAAK;IACZC,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE,QAAQ;IAChBC,MAAM,EAAE,QAAQ;IAChBC,MAAM,EAAE,QAAQ;IAChBC,OAAO,EAAE,MAAM;IACfC,OAAO,EAAE,OAAO;IAChBC,OAAO,EAAE,QAAQ;IACjBC,OAAO,EAAE,SAAS;IAClBC,UAAU,EAAE,SAAS;IACrBC,OAAO,EAAE,QAAQ;IACjBC,OAAO,EAAE,KAAK;IACdC,KAAK,EAAE,QAAQ;IACfC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,QAAQ;IAChBC,KAAK,EAAE,QAAQ;IACfC,SAAS,EAAE,UAAU;IACrBC,SAAS,EAAE,UAAU;IACrBC,WAAW,EAAE,gBAAgB;IAC7BC,cAAc,EAAE,gBAAgB;IAChCC,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE;EACP,CAAC;EACD,OAAOzB,GAAG,CAACH,OAAO,CAAC6B,IAAI,CAAC;AAC1B;AAEA,SAAS5B,UAAUA,CAACH,OAAgB,EAAEC,MAAc,EAAsB;EACxE,IAAID,OAAO,CAACgC,OAAO,CAACC,SAAS,CAAChC,MAAM,CAAC,EAAE,OAAOA,MAAM;EACpD,IAAIA,MAAM,CAACiC,UAAU,EAAE,OAAO/B,UAAU,CAACH,OAAO,EAAEC,MAAM,CAACiC,UAAU,CAAC;EACpE,OAAO9B,SAAS;AAClB;AAIA,SAAS+B,iBAAiBA,CACxBnC,OAAgB,EAChBoC,IAA4B,EACF;EAC1B,MAAMC,MAAM,GAAGpD,SAAS,CAACe,OAAO,EAAEoC,IAAI,CAAC;EACvC,IAAIC,MAAM,EAAE,OAAO;IAAEC,QAAQ,EAAED,MAAM,CAACC,QAAQ,IAAI,QAAQ;IAAEF,IAAI,EAAEC,MAAM,CAACD;EAAK,CAAC;EAC/E,IAAIA,IAAI,CAACG,IAAI,KAAK,eAAe,IAAIH,IAAI,CAACA,IAAI,CAACG,IAAI,KAAK,QAAQ,EAAE;IAChE,OAAOJ,iBAAiB,CAACnC,OAAO,EAAEoC,IAAI,CAACA,IAAI,CAAC;EAC9C;EACA,IAAIA,IAAI,CAACG,IAAI,KAAK,QAAQ,IAAIH,IAAI,CAACF,UAAU,EAAE;IAC7C,OAAOC,iBAAiB,CAACnC,OAAO,EAAEoC,IAAI,CAACF,UAAU,CAAC;EACpD;EACA,OAAO9B,SAAS;AAClB;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASoC,qBAAqBA,CAACxC,OAAgB,EAAEyC,QAAuB,EAAc;EAC3F,MAAMC,KAAiB,GAAG,EAAE;;EAE5B;EACA,MAAMC,aAAa,GAAGC,qBAAqB,CAAC5C,OAAO,EAAEyC,QAAQ,CAAC;EAC9DC,KAAK,CAACG,IAAI,CAAC,GAAGF,aAAa,CAAC;;EAE5B;EACA,IACEF,QAAQ,CAACL,IAAI,CAACG,IAAI,KAAK,MAAM,IAC5BE,QAAQ,CAACL,IAAI,CAACG,IAAI,KAAK,OAAO,IAAI1C,WAAW,CAAC4C,QAAQ,CAACL,IAAI,CAAE,EAC9D;IACAM,KAAK,CAACG,IAAI,CAAAC,iBAAA,CACP9D,SAAS;MAAA,IACR+C,IAAIA,CAAA;QAAA,OAAEjC,iBAAiB,CAACiD,sBAAsB;MAAA;MAC9CC,IAAI,EAAE,CAAC,iCAAiC;IAAC,EAE7C,CAAC;EACH;;EAEA;EACA,MAAMC,WAAW,GAAGC,6BAA6B,CAAClD,OAAO,EAAEyC,QAAQ,CAAC;EACpE,IAAIQ,WAAW,EAAEP,KAAK,CAACG,IAAI,CAACI,WAAW,CAAC;EAExC,MAAME,UAAU,GAAGC,4BAA4B,CAACpD,OAAO,EAAEyC,QAAQ,CAAC;EAClE,IAAIU,UAAU,EAAET,KAAK,CAACG,IAAI,CAACM,UAAU,CAAC;EAEtC,MAAME,SAAS,GAAGC,2BAA2B,CAACtD,OAAO,EAAEyC,QAAQ,CAAC;EAChE,IAAIY,SAAS,EAAEX,KAAK,CAACG,IAAI,CAACQ,SAAS,CAAC;;EAEpC;EACA,MAAME,QAAQ,GAAGC,uBAAuB,CAACxD,OAAO,EAAEyC,QAAQ,CAAC;EAC3D,IAAIc,QAAQ,EAAEb,KAAK,CAACG,IAAI,CAACU,QAAQ,CAAC;;EAElC;EACA,IAAId,QAAQ,CAACL,IAAI,CAACG,IAAI,KAAK,QAAQ,EAAE;IACnC,MAAMkB,WAAW,GAAGC,mBAAmB,CAAC1D,OAAO,EAAEyC,QAAQ,CAACL,IAAI,CAAC;IAC/D,IAAIqB,WAAW,EAAEf,KAAK,CAACG,IAAI,CAACY,WAAW,CAAC;EAC1C;EAEA,OAAOf,KAAK;AACd;AAEA,SAASE,qBAAqBA,CAAC5C,OAAgB,EAAEyC,QAAuB,EAAc;EACpF,MAAMkB,MAAkB,GAAG,EAAE;EAC7B,IAAIlB,QAAQ,CAACL,IAAI,CAACG,IAAI,KAAK,QAAQ,EAAE,OAAOoB,MAAM;EAElD,MAAMzD,OAAO,GAAGC,UAAU,CAACH,OAAO,EAAEyC,QAAQ,CAACL,IAAI,CAAC;EAClD,IAAI,CAAClC,OAAO,EAAE,OAAOyD,MAAM;EAE3B,MAAMrB,QAAQ,GAAGH,iBAAiB,CAACnC,OAAO,EAAEyC,QAAQ,CAAC;EAErD,QAAQvC,OAAO,CAAC6B,IAAI;IAClB,KAAK,UAAU;MACb4B,MAAM,CAACd,IAAI,CAAAC,iBAAA,CACR9D,SAAS;QAAA,IACR+C,IAAIA,CAAA;UAAA,OAAEjC,iBAAiB,CAACiD,sBAAsB;QAAA;QAC9CC,IAAI,EAAE,CAAC,mCAAmC;MAAC,EAE/C,CAAC;MACD;IACF,KAAK,iBAAiB;MACpBW,MAAM,CAACd,IAAI,CAAAC,iBAAA,CACR9D,SAAS;QAAA,IACR+C,IAAIA,CAAA;UAAA,OAAEjC,iBAAiB,CAACiD,sBAAsB;QAAA;QAC9CC,IAAI,EAAE,CAAC,0CAA0C;MAAC,EAEtD,CAAC;MACD;IACF,KAAK,OAAO;MACV,IAAIV,QAAQ,IAAIA,QAAQ,CAACA,QAAQ,CAACsB,WAAW,CAAC,CAAC,KAAK,WAAW,EAAE;QAC/DD,MAAM,CAACd,IAAI,CAAAC,iBAAA,CACR9D,SAAS;UAAA,IACR+C,IAAIA,CAAA;YAAA,OAAEjC,iBAAiB,CAACiD,sBAAsB;UAAA;UAC9CC,IAAI,EAAE,CAAC,gCAAgC;QAAC,EAE5C,CAAC;MACH;MACA;IACF,KAAK,aAAa;IAClB,KAAK,gBAAgB;MACnB,IAAIV,QAAQ,IAAIA,QAAQ,CAACA,QAAQ,CAACsB,WAAW,CAAC,CAAC,KAAK,eAAe,EAAE;QACnED,MAAM,CAACd,IAAI,CAAAC,iBAAA,CACR9D,SAAS;UAAA,IACR+C,IAAIA,CAAA;YAAA,OAAEjC,iBAAiB,CAACiD,sBAAsB;UAAA;UAC9CC,IAAI,EAAE,CAAC,0CAA0C;QAAC,EAEtD,CAAC;MACH;MACA;EACJ;EAEA,OAAOW,MAAM;AACf;AAEA,SAAST,6BAA6BA,CACpClD,OAAgB,EAChByC,QAAuB,EACD;EACtB,IAAIA,QAAQ,CAACL,IAAI,CAACG,IAAI,KAAK,QAAQ,EAAE,OAAOnC,SAAS;EAErD,MAAMyD,MAAM,GAAGrE,WAAW,CAACQ,OAAO,EAAEyC,QAAQ,CAAC;EAC7C,MAAMqB,MAAM,GAAG1E,WAAW,CAACY,OAAO,EAAEyC,QAAQ,CAAC;EAC7C,MAAMsB,OAAO,GAAGtE,oBAAoB,CAACO,OAAO,EAAEyC,QAAQ,CAAC;EACvD,MAAMuB,OAAO,GAAG3E,oBAAoB,CAACW,OAAO,EAAEyC,QAAQ,CAAC;EAEvD,IACEoB,MAAM,KAAKzD,SAAS,IACpB0D,MAAM,KAAK1D,SAAS,IACpB2D,OAAO,KAAK3D,SAAS,IACrB4D,OAAO,KAAK5D,SAAS,EACrB;IACA,OAAOA,SAAS;EAClB;EAEA,MAAM6D,UAAU,GAAGlE,sBAAsB,CAACC,OAAO,EAAEyC,QAAQ,CAACL,IAAI,CAAC;EACjE,IAAI,CAAC6B,UAAU,EAAE,OAAO7D,SAAS;EAEjC,MAAM8D,MAAgB,GAAG,EAAE;EAC3B,MAAMC,SAAS,GAAGN,MAAM,IAAIE,OAAO;EACnC,MAAMK,SAAS,GAAGN,MAAM,IAAIE,OAAO;EAEnC,IAAIG,SAAS,KAAK/D,SAAS,EAAE8D,MAAM,CAACrB,IAAI,CAAC,cAAcsB,SAAS,EAAE,CAAC;EACnE,IAAIC,SAAS,KAAKhE,SAAS,EAAE8D,MAAM,CAACrB,IAAI,CAAC,cAAcuB,SAAS,EAAE,CAAC;EACnE,IAAIL,OAAO,KAAK3D,SAAS,EAAE8D,MAAM,CAACrB,IAAI,CAAC,0BAA0B,CAAC;EAClE,IAAImB,OAAO,KAAK5D,SAAS,EAAE8D,MAAM,CAACrB,IAAI,CAAC,0BAA0B,CAAC;EAElE,OAAAC,iBAAA,CAAQ9D,SAAS;IAAC+C,IAAI,EAAE,qBAAqBkC,UAAU,GAAG;IAAEjB,IAAI,EAAEkB;EAAM;AAC1E;AAEA,SAASd,4BAA4BA,CACnCpD,OAAgB,EAChByC,QAAuB,EACD;EACtB,MAAM4B,MAAM,GAAG9E,YAAY,CAACS,OAAO,EAAEyC,QAAQ,CAAC;EAC9C,MAAM6B,MAAM,GAAGnF,YAAY,CAACa,OAAO,EAAEyC,QAAQ,CAAC;EAC9C,MAAM8B,OAAO,GAAG7E,UAAU,CAACM,OAAO,EAAEyC,QAAQ,CAAC;EAE7C,IAAI4B,MAAM,KAAKjE,SAAS,IAAIkE,MAAM,KAAKlE,SAAS,IAAImE,OAAO,KAAKnE,SAAS,EAAE,OAAOA,SAAS;EAE3F,MAAM8D,MAAgB,GAAG,EAAE;EAC3B,IAAIG,MAAM,KAAKjE,SAAS,EAAE8D,MAAM,CAACrB,IAAI,CAAC,eAAewB,MAAM,EAAE,CAAC;EAC9D,IAAIC,MAAM,KAAKlE,SAAS,EAAE8D,MAAM,CAACrB,IAAI,CAAC,eAAeyB,MAAM,EAAE,CAAC;EAC9D,IAAIC,OAAO,KAAKnE,SAAS,EAAE8D,MAAM,CAACrB,IAAI,CAAC,cAAc0B,OAAO,GAAG,CAAC;EAEhE,OAAAzB,iBAAA,CAAQ9D,SAAS;IAAC+C,IAAI;IAAoBiB,IAAI,EAAEkB;EAAM;AACxD;AAEA,SAASZ,2BAA2BA,CAClCtD,OAAgB,EAChByC,QAAuB,EACD;EACtB,MAAM+B,QAAQ,GAAGlF,WAAW,CAACU,OAAO,EAAEyC,QAAQ,CAAC;EAC/C,MAAMgC,QAAQ,GAAGvF,WAAW,CAACc,OAAO,EAAEyC,QAAQ,CAAC;EAE/C,IAAI+B,QAAQ,KAAKpE,SAAS,IAAIqE,QAAQ,KAAKrE,SAAS,EAAE,OAAOA,SAAS;EACtE,IAAIqC,QAAQ,CAACL,IAAI,CAACG,IAAI,KAAK,OAAO,IAAI,CAAC5C,gBAAgB,CAAC8C,QAAQ,CAACL,IAAI,CAAC,EAAE,OAAOhC,SAAS;EAExF,MAAMsE,WAAW,GAAGjC,QAAQ,CAACL,IAAI,CAACuC,OAAO,CAACC,KAAK;EAC/C,IAAIF,WAAW,CAACnC,IAAI,KAAK,QAAQ,EAAE,OAAOnC,SAAS;EAEnD,MAAM6D,UAAU,GAAGlE,sBAAsB,CAACC,OAAO,EAAE0E,WAAW,CAAC;EAC/D,IAAI,CAACT,UAAU,EAAE,OAAO7D,SAAS;EAEjC,MAAM8D,MAAgB,GAAG,EAAE;EAC3B,IAAIM,QAAQ,KAAKpE,SAAS,EAAE8D,MAAM,CAACrB,IAAI,CAAC,cAAc2B,QAAQ,EAAE,CAAC;EACjE,IAAIC,QAAQ,KAAKrE,SAAS,EAAE8D,MAAM,CAACrB,IAAI,CAAC,cAAc4B,QAAQ,EAAE,CAAC;EAEjE,OAAA3B,iBAAA,CAAQ9D,SAAS;IAAC+C,IAAI,EAAE,mBAAmBkC,UAAU,GAAG;IAAEjB,IAAI,EAAEkB;EAAM;AACxE;AAEA,SAASV,uBAAuBA,CAACxD,OAAgB,EAAEyC,QAAuB,EAAwB;EAChG,MAAMoC,WAAW,GAAGjF,kBAAkB,CAACI,OAAO,EAAEyC,QAAQ,EAAE,kBAAkB,CAAC;EAC7E,IAAIoC,WAAW,KAAKpC,QAAQ,CAACV,IAAI,EAAE;IACjC,OAAAe,iBAAA,CACG9D,SAAS;MAAA,IAAC+C,IAAIA,CAAA;QAAA,OAAEjC,iBAAiB,CAACgF,yBAAyB;MAAA;MAAE9B,IAAI,EAAE,CAAC,IAAI6B,WAAW,GAAG;IAAC;EAE5F;EACA,OAAOzE,SAAS;AAClB;AAEA,SAASsD,mBAAmBA,CAAC1D,OAAgB,EAAEC,MAAc,EAAwB;EACnF,MAAMC,OAAO,GAAGC,UAAU,CAACH,OAAO,EAAEC,MAAM,CAAC;EAC3C,IAAI,CAACC,OAAO,IAAIA,OAAO,CAAC6B,IAAI,KAAK,SAAS,EAAE,OAAO3B,SAAS;EAC5D,OAAA0C,iBAAA,CACG9D,SAAS;IACR+C,IAAI;IACJiB,IAAI,EAAE,CAAC,8BAA8B,EAAE,6BAA6B;EAAC;AAG3E","ignoreList":[]}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Library references for System.Text.Json.Serialization attributes.
3
+ * Using createLibrary ensures proper `using` directive generation and
4
+ * attribute name resolution (e.g., stripping "Attribute" suffix).
5
+ */
6
+ export declare const JsonSerialization: import("@alloy-js/csharp").LibraryFrom<{
7
+ JsonConverterAttribute: {
8
+ kind: "class";
9
+ members: {};
10
+ };
11
+ JsonPropertyNameAttribute: {
12
+ kind: "class";
13
+ members: {};
14
+ };
15
+ JsonStringEnumMemberNameAttribute: {
16
+ kind: "class";
17
+ members: {};
18
+ };
19
+ JsonStringEnumConverter: {
20
+ kind: "class";
21
+ members: {};
22
+ };
23
+ }>;
24
+ /**
25
+ * Library references for Microsoft.AspNetCore.Mvc attributes.
26
+ * Using createLibrary ensures proper `using` directive generation and
27
+ * attribute name resolution (e.g., stripping "Attribute" suffix).
28
+ */
29
+ export declare const AspNetMvc: import("@alloy-js/csharp").LibraryFrom<{
30
+ ApiControllerAttribute: {
31
+ kind: "class";
32
+ members: {};
33
+ };
34
+ RouteAttribute: {
35
+ kind: "class";
36
+ members: {};
37
+ };
38
+ HttpGetAttribute: {
39
+ kind: "class";
40
+ members: {};
41
+ };
42
+ HttpPostAttribute: {
43
+ kind: "class";
44
+ members: {};
45
+ };
46
+ HttpPutAttribute: {
47
+ kind: "class";
48
+ members: {};
49
+ };
50
+ HttpDeleteAttribute: {
51
+ kind: "class";
52
+ members: {};
53
+ };
54
+ HttpPatchAttribute: {
55
+ kind: "class";
56
+ members: {};
57
+ };
58
+ HttpHeadAttribute: {
59
+ kind: "class";
60
+ members: {};
61
+ };
62
+ FromRouteAttribute: {
63
+ kind: "class";
64
+ members: {};
65
+ };
66
+ FromQueryAttribute: {
67
+ kind: "class";
68
+ members: {};
69
+ };
70
+ FromHeaderAttribute: {
71
+ kind: "class";
72
+ members: {};
73
+ };
74
+ FromBodyAttribute: {
75
+ kind: "class";
76
+ members: {};
77
+ };
78
+ ConsumesAttribute: {
79
+ kind: "class";
80
+ members: {};
81
+ };
82
+ ProducesResponseTypeAttribute: {
83
+ kind: "class";
84
+ members: {};
85
+ };
86
+ }>;
87
+ //# sourceMappingURL=csharp-libs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csharp-libs.d.ts","sourceRoot":"","sources":["../../../src/utils/csharp-libs.tsx"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;EAK5B,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAepB,CAAC"}
@@ -0,0 +1,90 @@
1
+ import { createLibrary } from "@alloy-js/csharp";
2
+
3
+ /**
4
+ * Library references for System.Text.Json.Serialization attributes.
5
+ * Using createLibrary ensures proper `using` directive generation and
6
+ * attribute name resolution (e.g., stripping "Attribute" suffix).
7
+ */
8
+ export const JsonSerialization = createLibrary("System.Text.Json.Serialization", {
9
+ JsonConverterAttribute: {
10
+ kind: "class",
11
+ members: {}
12
+ },
13
+ JsonPropertyNameAttribute: {
14
+ kind: "class",
15
+ members: {}
16
+ },
17
+ JsonStringEnumMemberNameAttribute: {
18
+ kind: "class",
19
+ members: {}
20
+ },
21
+ JsonStringEnumConverter: {
22
+ kind: "class",
23
+ members: {}
24
+ }
25
+ });
26
+
27
+ /**
28
+ * Library references for Microsoft.AspNetCore.Mvc attributes.
29
+ * Using createLibrary ensures proper `using` directive generation and
30
+ * attribute name resolution (e.g., stripping "Attribute" suffix).
31
+ */
32
+ export const AspNetMvc = createLibrary("Microsoft.AspNetCore.Mvc", {
33
+ ApiControllerAttribute: {
34
+ kind: "class",
35
+ members: {}
36
+ },
37
+ RouteAttribute: {
38
+ kind: "class",
39
+ members: {}
40
+ },
41
+ HttpGetAttribute: {
42
+ kind: "class",
43
+ members: {}
44
+ },
45
+ HttpPostAttribute: {
46
+ kind: "class",
47
+ members: {}
48
+ },
49
+ HttpPutAttribute: {
50
+ kind: "class",
51
+ members: {}
52
+ },
53
+ HttpDeleteAttribute: {
54
+ kind: "class",
55
+ members: {}
56
+ },
57
+ HttpPatchAttribute: {
58
+ kind: "class",
59
+ members: {}
60
+ },
61
+ HttpHeadAttribute: {
62
+ kind: "class",
63
+ members: {}
64
+ },
65
+ FromRouteAttribute: {
66
+ kind: "class",
67
+ members: {}
68
+ },
69
+ FromQueryAttribute: {
70
+ kind: "class",
71
+ members: {}
72
+ },
73
+ FromHeaderAttribute: {
74
+ kind: "class",
75
+ members: {}
76
+ },
77
+ FromBodyAttribute: {
78
+ kind: "class",
79
+ members: {}
80
+ },
81
+ ConsumesAttribute: {
82
+ kind: "class",
83
+ members: {}
84
+ },
85
+ ProducesResponseTypeAttribute: {
86
+ kind: "class",
87
+ members: {}
88
+ }
89
+ });
90
+ //# sourceMappingURL=csharp-libs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createLibrary","JsonSerialization","JsonConverterAttribute","kind","members","JsonPropertyNameAttribute","JsonStringEnumMemberNameAttribute","JsonStringEnumConverter","AspNetMvc","ApiControllerAttribute","RouteAttribute","HttpGetAttribute","HttpPostAttribute","HttpPutAttribute","HttpDeleteAttribute","HttpPatchAttribute","HttpHeadAttribute","FromRouteAttribute","FromQueryAttribute","FromHeaderAttribute","FromBodyAttribute","ConsumesAttribute","ProducesResponseTypeAttribute"],"sources":["../../../src/utils/csharp-libs.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,aAAa,QAAQ,kBAAkB;;AAEhD;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,iBAAiB,GAAGD,aAAa,CAAC,gCAAgC,EAAE;EAC/EE,sBAAsB,EAAE;IAAEC,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EACtDC,yBAAyB,EAAE;IAAEF,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EACzDE,iCAAiC,EAAE;IAAEH,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EACjEG,uBAAuB,EAAE;IAAEJ,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE;AACxD,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMI,SAAS,GAAGR,aAAa,CAAC,0BAA0B,EAAE;EACjES,sBAAsB,EAAE;IAAEN,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EACtDM,cAAc,EAAE;IAAEP,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EAC9CO,gBAAgB,EAAE;IAAER,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EAChDQ,iBAAiB,EAAE;IAAET,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EACjDS,gBAAgB,EAAE;IAAEV,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EAChDU,mBAAmB,EAAE;IAAEX,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EACnDW,kBAAkB,EAAE;IAAEZ,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EAClDY,iBAAiB,EAAE;IAAEb,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EACjDa,kBAAkB,EAAE;IAAEd,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EAClDc,kBAAkB,EAAE;IAAEf,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EAClDe,mBAAmB,EAAE;IAAEhB,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EACnDgB,iBAAiB,EAAE;IAAEjB,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EACjDiB,iBAAiB,EAAE;IAAElB,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EACjDkB,6BAA6B,EAAE;IAAEnB,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE;AAC9D,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export { getDocComments } from "@typespec/emitter-framework/csharp";
2
+ //# sourceMappingURL=doc-comments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-comments.d.ts","sourceRoot":"","sources":["../../../src/utils/doc-comments.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC"}
@@ -0,0 +1,4 @@
1
+ // Re-export from emitter-framework — the framework version includes
2
+ // operation-level documentation (params, returns) in addition to summary.
3
+ export { getDocComments } from "@typespec/emitter-framework/csharp";
4
+ //# sourceMappingURL=doc-comments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getDocComments"],"sources":["../../../src/utils/doc-comments.tsx"],"sourcesContent":[null],"mappings":"AAAA;AACA;AACA,SAASA,cAAc,QAAQ,oCAAoC","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ import type { Refkeyable } from "@alloy-js/core";
2
+ import type { HttpStatusCodesEntry, HttpVerb } from "@typespec/http";
3
+ /**
4
+ * Maps an HTTP verb to its ASP.NET Core attribute library reference.
5
+ */
6
+ export declare function getHttpVerbAttribute(verb: HttpVerb): Refkeyable;
7
+ /**
8
+ * Maps an HTTP status code to its ASP.NET Core `HttpStatusCode` enum member.
9
+ */
10
+ export declare function getCSharpStatusCode(entry: HttpStatusCodesEntry): string | undefined;
11
+ /**
12
+ * Returns the ASP.NET Core controller return statement for a given HTTP status code.
13
+ */
14
+ export declare function getControllerReturnStatement(status: HttpStatusCodesEntry, hasValue: boolean): string;
15
+ /**
16
+ * Extracts the route template from an HTTP operation path.
17
+ */
18
+ export declare function getRouteTemplate(path: string): string;
19
+ //# sourceMappingURL=http-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-helpers.d.ts","sourceRoot":"","sources":["../../../src/utils/http-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAGrE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAiB/D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAanF;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,EAAE,OAAO,GAChB,MAAM,CAgBR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD"}
@@ -0,0 +1,70 @@
1
+ import { AspNetMvc } from "./csharp-libs.js";
2
+
3
+ /**
4
+ * Maps an HTTP verb to its ASP.NET Core attribute library reference.
5
+ */
6
+ export function getHttpVerbAttribute(verb) {
7
+ switch (verb) {
8
+ case "delete":
9
+ return AspNetMvc.HttpDeleteAttribute;
10
+ case "get":
11
+ return AspNetMvc.HttpGetAttribute;
12
+ case "patch":
13
+ return AspNetMvc.HttpPatchAttribute;
14
+ case "post":
15
+ return AspNetMvc.HttpPostAttribute;
16
+ case "put":
17
+ return AspNetMvc.HttpPutAttribute;
18
+ case "head":
19
+ return AspNetMvc.HttpHeadAttribute;
20
+ default:
21
+ return AspNetMvc.HttpGetAttribute;
22
+ }
23
+ }
24
+
25
+ /**
26
+ * Maps an HTTP status code to its ASP.NET Core `HttpStatusCode` enum member.
27
+ */
28
+ export function getCSharpStatusCode(entry) {
29
+ switch (entry) {
30
+ case 200:
31
+ return "HttpStatusCode.OK";
32
+ case 201:
33
+ return "HttpStatusCode.Created";
34
+ case 202:
35
+ return "HttpStatusCode.Accepted";
36
+ case 204:
37
+ return "HttpStatusCode.NoContent";
38
+ default:
39
+ return undefined;
40
+ }
41
+ }
42
+
43
+ /**
44
+ * Returns the ASP.NET Core controller return statement for a given HTTP status code.
45
+ */
46
+ export function getControllerReturnStatement(status, hasValue) {
47
+ if (typeof status === "number") {
48
+ switch (status) {
49
+ case 200:
50
+ return hasValue ? "return Ok(result);" : "return Ok();";
51
+ case 201:
52
+ return hasValue ? `return Created("", result);` : `return Created("", null);`;
53
+ case 202:
54
+ return hasValue ? "return Accepted(result);" : "return Accepted();";
55
+ case 204:
56
+ return "return NoContent();";
57
+ default:
58
+ return hasValue ? `return StatusCode(${status}, result);` : `return StatusCode(${status});`;
59
+ }
60
+ }
61
+ return hasValue ? "return Ok(result);" : "return Ok();";
62
+ }
63
+
64
+ /**
65
+ * Extracts the route template from an HTTP operation path.
66
+ */
67
+ export function getRouteTemplate(path) {
68
+ return path;
69
+ }
70
+ //# sourceMappingURL=http-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AspNetMvc","getHttpVerbAttribute","verb","HttpDeleteAttribute","HttpGetAttribute","HttpPatchAttribute","HttpPostAttribute","HttpPutAttribute","HttpHeadAttribute","getCSharpStatusCode","entry","undefined","getControllerReturnStatement","status","hasValue","getRouteTemplate","path"],"sources":["../../../src/utils/http-helpers.ts"],"sourcesContent":[null],"mappings":"AAEA,SAASA,SAAS;;AAElB;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAACC,IAAc,EAAc;EAC/D,QAAQA,IAAI;IACV,KAAK,QAAQ;MACX,OAAOF,SAAS,CAACG,mBAAmB;IACtC,KAAK,KAAK;MACR,OAAOH,SAAS,CAACI,gBAAgB;IACnC,KAAK,OAAO;MACV,OAAOJ,SAAS,CAACK,kBAAkB;IACrC,KAAK,MAAM;MACT,OAAOL,SAAS,CAACM,iBAAiB;IACpC,KAAK,KAAK;MACR,OAAON,SAAS,CAACO,gBAAgB;IACnC,KAAK,MAAM;MACT,OAAOP,SAAS,CAACQ,iBAAiB;IACpC;MACE,OAAOR,SAAS,CAACI,gBAAgB;EACrC;AACF;;AAEA;AACA;AACA;AACA,OAAO,SAASK,mBAAmBA,CAACC,KAA2B,EAAsB;EACnF,QAAQA,KAAK;IACX,KAAK,GAAG;MACN,OAAO,mBAAmB;IAC5B,KAAK,GAAG;MACN,OAAO,wBAAwB;IACjC,KAAK,GAAG;MACN,OAAO,yBAAyB;IAClC,KAAK,GAAG;MACN,OAAO,0BAA0B;IACnC;MACE,OAAOC,SAAS;EACpB;AACF;;AAEA;AACA;AACA;AACA,OAAO,SAASC,4BAA4BA,CAC1CC,MAA4B,EAC5BC,QAAiB,EACT;EACR,IAAI,OAAOD,MAAM,KAAK,QAAQ,EAAE;IAC9B,QAAQA,MAAM;MACZ,KAAK,GAAG;QACN,OAAOC,QAAQ,GAAG,oBAAoB,GAAG,cAAc;MACzD,KAAK,GAAG;QACN,OAAOA,QAAQ,GAAG,6BAA6B,GAAG,2BAA2B;MAC/E,KAAK,GAAG;QACN,OAAOA,QAAQ,GAAG,0BAA0B,GAAG,oBAAoB;MACrE,KAAK,GAAG;QACN,OAAO,qBAAqB;MAC9B;QACE,OAAOA,QAAQ,GAAG,qBAAqBD,MAAM,YAAY,GAAG,qBAAqBA,MAAM,IAAI;IAC/F;EACF;EACA,OAAOC,QAAQ,GAAG,oBAAoB,GAAG,cAAc;AACzD;;AAEA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAACC,IAAY,EAAU;EACrD,OAAOA,IAAI;AACb","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=http-helpers.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-helpers.test.d.ts","sourceRoot":"","sources":["../../../src/utils/http-helpers.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,68 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { AspNetMvc } from "./csharp-libs.js";
3
+ import { getControllerReturnStatement, getCSharpStatusCode, getHttpVerbAttribute, getRouteTemplate } from "./http-helpers.js";
4
+ describe("getHttpVerbAttribute", () => {
5
+ it.each([["delete", AspNetMvc.HttpDeleteAttribute], ["get", AspNetMvc.HttpGetAttribute], ["patch", AspNetMvc.HttpPatchAttribute], ["post", AspNetMvc.HttpPostAttribute], ["put", AspNetMvc.HttpPutAttribute]])("maps %s to the correct library ref", (verb, expected) => {
6
+ expect(getHttpVerbAttribute(verb)).toBe(expected);
7
+ });
8
+ it("maps head to HttpHead", () => {
9
+ expect(getHttpVerbAttribute("head")).toBe(AspNetMvc.HttpHeadAttribute);
10
+ });
11
+ it("defaults to HttpGet for unknown verbs", () => {
12
+ expect(getHttpVerbAttribute("trace")).toBe(AspNetMvc.HttpGetAttribute);
13
+ });
14
+ });
15
+ describe("getCSharpStatusCode", () => {
16
+ it("maps 200 to HttpStatusCode.OK", () => {
17
+ expect(getCSharpStatusCode(200)).toBe("HttpStatusCode.OK");
18
+ });
19
+ it("maps 201 to HttpStatusCode.Created", () => {
20
+ expect(getCSharpStatusCode(201)).toBe("HttpStatusCode.Created");
21
+ });
22
+ it("maps 202 to HttpStatusCode.Accepted", () => {
23
+ expect(getCSharpStatusCode(202)).toBe("HttpStatusCode.Accepted");
24
+ });
25
+ it("maps 204 to HttpStatusCode.NoContent", () => {
26
+ expect(getCSharpStatusCode(204)).toBe("HttpStatusCode.NoContent");
27
+ });
28
+ it("returns undefined for unmapped codes", () => {
29
+ expect(getCSharpStatusCode(400)).toBeUndefined();
30
+ expect(getCSharpStatusCode(500)).toBeUndefined();
31
+ });
32
+ });
33
+ describe("getControllerReturnStatement", () => {
34
+ it("returns Ok(result) for 200 with value", () => {
35
+ expect(getControllerReturnStatement(200, true)).toBe("return Ok(result);");
36
+ });
37
+ it("returns Ok() for 200 without value", () => {
38
+ expect(getControllerReturnStatement(200, false)).toBe("return Ok();");
39
+ });
40
+ it("returns NoContent() for 204", () => {
41
+ expect(getControllerReturnStatement(204, true)).toBe("return NoContent();");
42
+ expect(getControllerReturnStatement(204, false)).toBe("return NoContent();");
43
+ });
44
+ it("returns Accepted for 202", () => {
45
+ expect(getControllerReturnStatement(202, true)).toBe("return Accepted(result);");
46
+ });
47
+ it("returns Created for 201", () => {
48
+ expect(getControllerReturnStatement(201, true)).toBe('return Created("", result);');
49
+ expect(getControllerReturnStatement(201, false)).toBe('return Created("", null);');
50
+ });
51
+ it("returns StatusCode for other codes", () => {
52
+ expect(getControllerReturnStatement(404, false)).toBe("return StatusCode(404);");
53
+ });
54
+ it("returns Ok for status ranges", () => {
55
+ expect(getControllerReturnStatement({
56
+ start: 200,
57
+ end: 299
58
+ }, true)).toBe("return Ok(result);");
59
+ expect(getControllerReturnStatement("*", false)).toBe("return Ok();");
60
+ });
61
+ });
62
+ describe("getRouteTemplate", () => {
63
+ it("passes through route templates", () => {
64
+ expect(getRouteTemplate("/pets/{petId}")).toBe("/pets/{petId}");
65
+ expect(getRouteTemplate("/items")).toBe("/items");
66
+ });
67
+ });
68
+ //# sourceMappingURL=http-helpers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["describe","expect","it","AspNetMvc","getControllerReturnStatement","getCSharpStatusCode","getHttpVerbAttribute","getRouteTemplate","each","HttpDeleteAttribute","HttpGetAttribute","HttpPatchAttribute","HttpPostAttribute","HttpPutAttribute","verb","expected","toBe","HttpHeadAttribute","toBeUndefined","start","end"],"sources":["../../../src/utils/http-helpers.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ import { type Namespace as TspNamespace } from "@typespec/compiler";
2
+ /**
3
+ * Gets the sub-namespace path of a type's namespace relative to the service namespace.
4
+ * For example, if the service namespace is "Microsoft.Contoso" and the type is in
5
+ * "Microsoft.Contoso.Colors", returns ["Colors"].
6
+ * Returns an empty array if the type is in the service namespace itself.
7
+ */
8
+ export declare function getSubNamespaceParts(typeNs: TspNamespace | undefined, serviceNs: TspNamespace | undefined): string[];
9
+ /**
10
+ * Finds the service namespace (the first namespace with content).
11
+ */
12
+ export declare function findServiceNamespace(globalNs: TspNamespace): TspNamespace | undefined;
13
+ //# sourceMappingURL=namespace-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace-utils.d.ts","sourceRoot":"","sources":["../../../src/utils/namespace-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,SAAS,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEpF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,GAAG,SAAS,EAChC,SAAS,EAAE,YAAY,GAAG,SAAS,GAClC,MAAM,EAAE,CA4BV;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY,GAAG,SAAS,CAiBrF"}