@typespec/http-server-csharp 0.58.0-alpha.28-dev.4 → 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 +34 -26
  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
@@ -1,461 +0,0 @@
1
- import { code } from "@typespec/asset-emitter";
2
- import { GeneratedFileHeaderWithNullable } from "./boilerplate.js";
3
- import { CSharpCollectionType, LibrarySourceFile } from "./interfaces.js";
4
- export function getScaffoldingHelpers(emitter, useSwagger, openApiPath, hasMockRegistration) {
5
- const sourceFiles = [
6
- new LibrarySourceFile({
7
- filename: "Program.cs",
8
- emitter: emitter,
9
- getContents: () => getProjectStartup(useSwagger, openApiPath, hasMockRegistration),
10
- path: ".",
11
- conditional: true,
12
- }),
13
- ];
14
- if (hasMockRegistration) {
15
- sourceFiles.push(new LibrarySourceFile({
16
- filename: "IInitializer.cs",
17
- emitter: emitter,
18
- getContents: getInitializerInterface,
19
- path: "mocks",
20
- conditional: true,
21
- }), new LibrarySourceFile({
22
- filename: "Initializer.cs",
23
- emitter: emitter,
24
- getContents: getInitializerImplementation,
25
- path: "mocks",
26
- conditional: true,
27
- }));
28
- }
29
- return sourceFiles;
30
- }
31
- export function getBusinessLogicImplementations(emitter, registrations, useSwagger, openApiPath) {
32
- const sourceFiles = [];
33
- const mocks = [];
34
- for (const [_, impl] of registrations) {
35
- sourceFiles.push(new LibrarySourceFile({
36
- filename: `${impl.className}.cs`,
37
- emitter: emitter,
38
- getContents: () => getBusinessLogicImplementation(impl),
39
- path: "mocks",
40
- conditional: true,
41
- }));
42
- mocks.push(impl);
43
- }
44
- if (mocks.length > 0) {
45
- sourceFiles.push(new LibrarySourceFile({
46
- filename: "MockRegistration.cs",
47
- emitter: emitter,
48
- getContents: () => getMockRegistration(mocks),
49
- path: "mocks",
50
- conditional: true,
51
- }));
52
- }
53
- return sourceFiles;
54
- }
55
- function getReturnStatement(returnType, instantiated) {
56
- if (returnType.name === "JsonObject") {
57
- return `return Task.FromResult(new JsonObject());`;
58
- }
59
- if (returnType.name === "JsonNode") {
60
- return `return Task.FromResult(new JsonObject() as JsonNode);`;
61
- }
62
- if (returnType.isValueType && returnType.isNullable) {
63
- return `return Task.FromResult(_initializer.Initialize(typeof(${instantiated})) as ${instantiated} ?? default);`;
64
- }
65
- if (returnType.isValueType) {
66
- return `return Task.FromResult<${instantiated}>(default);`;
67
- }
68
- if (returnType.isCollection) {
69
- if (returnType instanceof CSharpCollectionType) {
70
- return `return Task.FromResult<${instantiated}>(${returnType.getImplementationType()});`;
71
- }
72
- return `return Task.FromResult<${instantiated}>([]);`;
73
- }
74
- if (returnType.name === "string") {
75
- return `return Task.FromResult("");`;
76
- }
77
- else if (returnType.isClass) {
78
- return `return Task.FromResult(_initializer.Initialize<${instantiated}>());`;
79
- }
80
- else {
81
- return `throw new NotImplementedException();`;
82
- }
83
- }
84
- function getBusinessLogicImplementation(mock) {
85
- const methods = [];
86
- for (const method of mock.methods) {
87
- const methodCode = method.instantiatedReturnType !== undefined
88
- ? getReturnStatement(method.returnType, method.instantiatedReturnType)
89
- : "return Task.CompletedTask;";
90
- methods.push(` public ${method.returnTypeName} ${method.methodName}( ${method.methodParams})
91
- {
92
- ${methodCode}
93
- }`);
94
- }
95
- return `${GeneratedFileHeaderWithNullable}
96
-
97
- ${mock.usings.flatMap((u) => `using ${u};`).join("\n")}
98
-
99
- namespace ${mock.namespace}
100
- {
101
- /// <summary>
102
- /// This is a mock implementation of the business logic interface for
103
- /// demonstration and early development. Feel free to overwrite this file.
104
- /// Or replace it with another implementation, and register that implementation
105
- /// in the dependency injection container
106
- /// </summary>
107
- public class ${mock.className} : ${mock.interfaceName}
108
- {
109
- /// <summary>
110
- /// The controller constructor, using the dependency injection container to satisfy the paramters.
111
- /// </summary>
112
- /// <param name="initializer">The initializer class, registered with dependency injection</param>
113
- /// <param name="accessor">The accessor for the HttpContext, allows your implementation to
114
- /// get properties of the incoming request and to set properties of the outgoing response.</param>"
115
- public ${mock.className}(IInitializer initializer, IHttpContextAccessor accessor)
116
- {
117
- _initializer = initializer;
118
- HttpContextAccessor = accessor;
119
- }
120
-
121
- private IInitializer _initializer;
122
-
123
- /// <summary>
124
- /// Use this property in your implementation to access properties of the incoming HttpRequest
125
- /// and to set properties of the outgoing HttpResponse
126
- /// </summary>
127
- public IHttpContextAccessor HttpContextAccessor { get; }
128
-
129
- ${methods.join("\n\n")}
130
- }
131
- }
132
- `;
133
- }
134
- function getMockRegistration(mocks) {
135
- if (mocks.length < 1)
136
- return "";
137
- const cache = new Map();
138
- return `${GeneratedFileHeaderWithNullable}
139
-
140
- using Microsoft.AspNetCore.Http.Features;
141
- ${mocks
142
- .flatMap((m) => m.usings)
143
- .filter((t) => {
144
- const result = !cache.has(t);
145
- cache.set(t, t);
146
- return result;
147
- })
148
- .flatMap((e) => `using ${e};`)
149
- .join("\n")}
150
- ${mocks
151
- .filter((m) => {
152
- const result = !cache.has(m.namespace);
153
- cache.set(m.namespace, m.namespace);
154
- return result;
155
- })
156
- .flatMap((t) => `using ${t.namespace};`)
157
- .join("\n")}
158
-
159
- namespace TypeSpec.Helpers
160
- {
161
- /// <summary>
162
- /// Register Business Logic implementations. Replace with actual implementations when available.
163
- /// </summary>
164
- public static class MockRegistration
165
- {
166
- public static void Register(WebApplicationBuilder builder)
167
- {
168
- builder.Services.AddHttpContextAccessor();
169
- builder.Services.AddScoped<IJsonSerializationProvider, JsonSerializationProvider>();
170
- // Used for mock implementation only. Remove once business logic interfaces are implemented.
171
- builder.Services.AddSingleton<IDictionary<Type, object?>>(new Dictionary<Type, object?>());
172
- builder.Services.AddScoped<IInitializer, Initializer>();
173
- // Mock business logic implementations
174
- ${mocks.flatMap((m) => ` builder.Services.AddScoped<${m.interfaceName}, ${m.className}>();`).join("\n")}
175
- // Included for multipart/form-data support
176
- builder.Services.Configure<FormOptions>(options =>
177
- {
178
- options.MemoryBufferThreshold = int.MaxValue;
179
- options.MultipartBodyLengthLimit = int.MaxValue;
180
- });
181
- }
182
- }
183
- }`;
184
- }
185
- function getProjectStartup(useSwagger, openApiPath, hasMocks) {
186
- return `${GeneratedFileHeaderWithNullable}
187
-
188
- using TypeSpec.Helpers;
189
-
190
- var builder = WebApplication.CreateBuilder(args);
191
-
192
- // Add services to the container.
193
- builder.Services.AddControllersWithViews(options =>
194
- {
195
- options.Filters.Add<HttpServiceExceptionFilter>();
196
- });
197
- builder.Services.AddEndpointsApiExplorer();
198
- ${useSwagger ? "builder.Services.AddSwaggerGen();" : ""}
199
- ${hasMocks ? "MockRegistration.Register(builder);" : ""}
200
-
201
- var app = builder.Build();
202
-
203
- // Configure the HTTP request pipeline.
204
- if (!app.Environment.IsDevelopment())
205
- {
206
- app.UseExceptionHandler("/Home/Error");
207
- // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
208
- app.UseHsts();
209
- }
210
- ${useSwagger
211
- ? code `else
212
- {
213
- app.UseSwagger();
214
- app.UseSwaggerUI( c=> {
215
- c.DocumentTitle = "TypeSpec Generated OpenAPI Viewer";
216
- c.SwaggerEndpoint("/openapi.yaml", "TypeSpec Generated OpenAPI Docs");
217
- c.RoutePrefix = "swagger";
218
- });
219
- }\n`
220
- : ""}
221
-
222
- app.UseHttpsRedirection();
223
- app.UseStaticFiles();
224
- app.Use(async (context, next) =>
225
- {
226
- context.Request.EnableBuffering();
227
- await next();
228
- });
229
- ${useSwagger
230
- ? code `
231
- app.MapGet("/openapi.yaml", async (HttpContext context) =>
232
- {
233
- var externalFilePath = "${openApiPath}"; // Full path to the file outside the project
234
- if (!File.Exists(externalFilePath))
235
- {
236
- context.Response.StatusCode = StatusCodes.Status404NotFound;
237
- await context.Response.WriteAsync("OpenAPI spec not found.");
238
- return;
239
- }
240
- context.Response.ContentType = "application/json";
241
- await context.Response.SendFileAsync(externalFilePath);
242
- });\n`
243
- : ""}
244
-
245
- app.UseRouting();
246
-
247
- app.UseAuthorization();
248
-
249
-
250
- app.MapControllerRoute(
251
- name: "default",
252
- pattern: "{controller=Home}/{action=Index}/{id?}");
253
-
254
-
255
- app.Run();`;
256
- }
257
- function getInitializerInterface() {
258
- return `${GeneratedFileHeaderWithNullable}
259
-
260
- namespace TypeSpec.Helpers
261
- {
262
- /// <summary>
263
- /// Interface for object initialization in mocks
264
- /// </summary>
265
- public interface IInitializer
266
- {
267
- /// <summary>
268
- /// Initialize an object fo the given type
269
- /// </summary>
270
- /// <param name="type"> The type to initialize</param>
271
- /// <returns>An instance of the given type. Or null if initialization was impossible.</returns>
272
- object? Initialize(System.Type type);
273
-
274
- /// <summary>
275
- /// Initialize an object of the given type
276
- /// </summary>
277
- /// <typeparam name="T">The type to initialize</typeparam>
278
- /// <returns>An instance of the given type</returns>
279
- T Initialize<T>() where T : class, new();
280
- }
281
- }
282
- `;
283
- }
284
- function getInitializerImplementation() {
285
- return `${GeneratedFileHeaderWithNullable}
286
-
287
- namespace TypeSpec.Helpers
288
- {
289
- /// <summary>
290
- /// Default initializer for mock implementations of business logic interfaces
291
- /// </summary>
292
- public class Initializer : IInitializer
293
- {
294
- /// <summary>
295
- /// Instantiate the initializer. The cache *should* be instantiated using ASP.Net Core's dependency injection
296
- /// </summary>
297
- /// <param name="cache"></param>
298
- public Initializer(IDictionary<Type, object?> cache)
299
- {
300
- Cache = cache;
301
- }
302
-
303
- internal virtual IDictionary<Type, object?> Cache { get; }
304
-
305
- internal object? CacheAndReturn(Type type, object? instance)
306
- {
307
- Cache[type] = instance;
308
- return instance;
309
- }
310
-
311
- /// <summary>
312
- /// Initialize an object fo the given type
313
- /// </summary>
314
- /// <param name="type"> The type to initialize</param>
315
- /// <returns>An instance of the given type. Or null if initialization was impossible.</returns>
316
- public object? Initialize (Type type)
317
- {
318
- if (Cache.ContainsKey(type))
319
- {
320
- return Cache[type];
321
- }
322
- if (type == typeof(string))
323
- {
324
- return CacheAndReturn(type, string.Empty);
325
- }
326
- if (type == typeof(int))
327
- {
328
- return CacheAndReturn(type, 0);
329
- }
330
- if (type == typeof(long))
331
- {
332
- return CacheAndReturn(type, 0L);
333
- }
334
- if (type == typeof(float))
335
- {
336
- return CacheAndReturn(type, 0.0f);
337
- }
338
- if (type == typeof(double))
339
- {
340
- return CacheAndReturn(type, 0.0);
341
- }
342
- if (type == typeof(decimal))
343
- {
344
- return CacheAndReturn(type, 0.0m);
345
- }
346
- if (type == typeof(bool))
347
- {
348
- return CacheAndReturn(type, false);
349
- }
350
- if (type == typeof(byte))
351
- {
352
- return CacheAndReturn(type, (byte)0);
353
- }
354
- if (type == typeof(char))
355
- {
356
- return CacheAndReturn(type, (char)0);
357
- }
358
- if (type == typeof(short))
359
- {
360
- return CacheAndReturn(type, (short)0);
361
- }
362
- if (type == typeof(uint))
363
- {
364
- return CacheAndReturn(type, (uint)0);
365
- }
366
- if (type == typeof(ulong))
367
- {
368
- return CacheAndReturn(type, (ulong)0);
369
- }
370
- if (type == typeof(ushort))
371
- {
372
- return CacheAndReturn(type, (ushort)0);
373
- }
374
- if (type == typeof(sbyte))
375
- {
376
- return CacheAndReturn(type, (sbyte)0);
377
- }
378
- if (type == typeof(DateTime))
379
- {
380
- return CacheAndReturn(type, DateTime.UtcNow);
381
- }
382
- if (type == typeof(DateTimeOffset))
383
- {
384
- return CacheAndReturn(type, DateTimeOffset.UtcNow);
385
- }
386
- if ( type == typeof(TimeSpan))
387
- {
388
- return CacheAndReturn(type, TimeSpan.Zero);
389
- }
390
- if (type.IsArray)
391
- {
392
- var element = type.GetElementType();
393
- if (element == null) return null;
394
- return CacheAndReturn(type, Array.CreateInstance(element, 0));
395
- }
396
- if (type.IsGenericType)
397
- {
398
- var elementType = type.GetGenericArguments()[0];
399
- if (elementType == null) return null;
400
-
401
- if (type.GetGenericTypeDefinition() == typeof(IEnumerable<>)){
402
- return CacheAndReturn(type, Activator.CreateInstance(typeof(List<>).MakeGenericType(elementType)));
403
- }
404
- if (type.GetGenericTypeDefinition() == typeof(ISet<>))
405
- {
406
- return CacheAndReturn(type, Activator.CreateInstance(typeof(HashSet<>).MakeGenericType(elementType)));
407
- }
408
- }
409
- if (type.IsClass)
410
- {
411
- return InitializeClass(type);
412
- }
413
- var genericType = Nullable.GetUnderlyingType(type);
414
- if ( (genericType != null))
415
- {
416
- return Initialize(genericType);
417
- }
418
- if (type.IsEnum)
419
- {
420
- return CacheAndReturn(type, Enum.GetValues(type).GetValue(0));
421
- }
422
- return new object();
423
- }
424
-
425
- /// <summary>
426
- /// Initialize an object of the given type
427
- /// </summary>
428
- /// <typeparam name="T">The type to initialize</typeparam>
429
- /// <returns>An instance of the given type</returns>
430
- public T Initialize<T>() where T: class, new()
431
- {
432
- var result = new T();
433
- var initialized = InitializeClass(typeof(T), result);
434
- return initialized as T ?? result;
435
- }
436
-
437
- private object? InitializeClass(Type type, object? instance = null)
438
- {
439
- if (Cache.ContainsKey(type))
440
- {
441
- instance = Cache[type];
442
- return instance;
443
- }
444
-
445
- var result = instance == null ? Activator.CreateInstance(type) : instance;
446
- foreach (var property in type.GetProperties())
447
- {
448
- if (property.CanWrite)
449
- {
450
- var propertyType = property.PropertyType;
451
- property.SetValue(result, Initialize(propertyType));
452
- }
453
- }
454
-
455
- return CacheAndReturn(type, result);
456
- }
457
- }
458
- }
459
- `;
460
- }
461
- //# sourceMappingURL=scaffolding.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scaffolding.js","sourceRoot":"","sources":["../../../src/lib/scaffolding.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { EmitContext } from "@typespec/compiler";
2
- import { CSharpServiceEmitterOptions } from "./lib.js";
3
- export declare function $onEmit(context: EmitContext<CSharpServiceEmitterOptions>): Promise<void>;
4
- //# sourceMappingURL=service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/lib/service.ts"],"names":[],"mappings":"AAcA,OAAO,EAEL,WAAW,EA4BZ,MAAM,oBAAoB,CAAC;AAiC5B,OAAO,EAAE,2BAA2B,EAA0C,MAAM,UAAU,CAAC;AA+C/F,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,2BAA2B,CAAC,iBA+7C9E"}