@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
@@ -5,169 +5,133 @@ import path from "path";
5
5
  import pc from "picocolors";
6
6
  import yargs from "yargs";
7
7
  import { hideBin } from "yargs/helpers";
8
- import { getFreePort } from "../lib/utils.js";
8
+ import { getFreePort } from "../utils/port.js";
9
9
  async function main() {
10
- console.log(`TypeSpec Http Server Emitter for C-Sharp \n`);
11
- await yargs(hideBin(process.argv))
12
- .scriptName("hscs-scaffold")
13
- .help()
14
- .strict()
15
- .parserConfiguration({
16
- "greedy-arrays": false,
17
- "boolean-negation": false,
18
- })
19
- .command("$0 <path-to-spec> [--output <project-directory>] [--use-swaggerui] [OPTIONS]", "Create an ASP.Net server project", (cmd) => {
20
- return cmd
21
- .option("use-swaggerui", {
22
- description: "Include generated OpenAPI and a SwaggerUI endpoint in the service project. THIS OPTION REQUIRES '@typespec/openapi3' as a dependency of your typespec project.",
23
- type: "boolean",
24
- default: false,
25
- })
26
- .option("project-name", {
27
- description: "The name of the generated project.",
28
- type: "string",
29
- default: "ServiceProject",
30
- })
31
- .option("http-port", {
32
- description: "The http port for the generated project to use locally",
33
- type: "number",
34
- })
35
- .option("https-port", {
36
- description: "The https port for the generated service to listen on locally.",
37
- type: "number",
38
- })
39
- .option("overwrite", {
40
- description: "Overwrite existing mock implementations and project files",
41
- type: "boolean",
42
- default: true,
43
- })
44
- .option("output", {
45
- description: "Path to the directory where the project will be created.",
46
- type: "string",
47
- })
48
- .option("collection-type", {
49
- description: "Specifies the type of collection to use: 'array' or 'enumerable'. If not specified, 'array' will be used by default.",
50
- type: "string",
51
- default: "array",
52
- choices: ["array", "enumerable"],
53
- })
54
- .positional("path-to-spec", {
55
- description: "The path to the TypeSpec spec or TypeSpec project directory",
56
- type: "string",
57
- demandOption: true,
58
- });
59
- }, async (args) => {
60
- const projectDir = args["output"] !== undefined ? resolvePath(process.cwd(), args["output"]) : undefined;
61
- const pathToSpec = resolvePath(process.cwd(), args["path-to-spec"]);
62
- const useSwagger = args["use-swaggerui"];
63
- const overwrite = args["overwrite"];
64
- const projectName = args["project-name"];
65
- const collectionType = args["collectionType"] ?? "array";
66
- const httpPort = args["http-port"] || (await getFreePort(5000, 5999));
67
- const httpsPort = args["https-port"] || (await getFreePort(7000, 7999));
68
- console.log(pc.bold("Compiling spec to create ASP.Net core project with mock implementations"));
69
- console.log(pc.bold(`using http port ${httpPort} and https port ${httpsPort}`));
70
- const compileArgs = [
71
- "tsp",
72
- "compile",
73
- pathToSpec,
74
- "--emit",
75
- "@typespec/http-server-csharp",
76
- "--option",
77
- "@typespec/http-server-csharp.emit-mocks=mocks-and-project-files",
78
- "--option",
79
- `@typespec/http-server-csharp.project-name=${projectName}`,
80
- "--trace",
81
- "http-server-csharp",
82
- ];
83
- if (overwrite) {
84
- compileArgs.push("--option", "@typespec/http-server-csharp.overwrite=true");
85
- }
86
- if (httpPort) {
87
- compileArgs.push("--option", `@typespec/http-server-csharp.http-port=${httpPort}`);
88
- }
89
- if (httpsPort) {
90
- compileArgs.push("--option", `@typespec/http-server-csharp.https-port=${httpsPort}`);
91
- }
92
- if (collectionType) {
93
- compileArgs.push("--option", `@typespec/http-server-csharp.collection-type=${collectionType}`);
94
- }
95
- const swaggerArgs = [
96
- "--emit",
97
- "@typespec/openapi3",
98
- "--option",
99
- "@typespec/http-server-csharp.use-swaggerui=true",
100
- ];
101
- if (projectDir) {
102
- const generatedTargetDir = resolvePath(process.cwd(), projectDir);
103
- const generatedOpenApiDir = resolvePath(process.cwd(), projectDir, "openapi");
104
- const openApiPath = path
105
- .relative(projectDir, resolvePath(generatedOpenApiDir, "openapi.yaml"))
106
- .replaceAll("\\", "/");
107
- compileArgs.push("--option", `@typespec/http-server-csharp.emitter-output-dir=${generatedTargetDir}`);
108
- swaggerArgs.push("--option", `@typespec/openapi3.emitter-output-dir=${generatedOpenApiDir}`, "--option", `@typespec/http-server-csharp.openapi-path=${openApiPath}`);
109
- }
110
- if (useSwagger)
111
- compileArgs.push(...swaggerArgs);
112
- const result = await runScriptAsync("npx", compileArgs);
113
- if (result === 0) {
114
- console.log(pc.bold(`Your project was successfully created`));
115
- }
116
- else {
117
- console.log(pc.bold("There were one or more errors"));
118
- if (useSwagger) {
119
- console.log("You must have @typespec/openapi3 as a dependency in your typespec project for use of SwaggerUI. ");
120
- }
121
- }
122
- }).argv;
10
+ console.log(`TypeSpec Http Server Emitter for C-Sharp \n`);
11
+ await yargs(hideBin(process.argv)).scriptName("hscs-scaffold").help().strict().parserConfiguration({
12
+ "greedy-arrays": false,
13
+ "boolean-negation": false
14
+ }).command("$0 <path-to-spec> [--output <project-directory>] [--use-swaggerui] [OPTIONS]", "Create an ASP.Net server project", cmd => {
15
+ return cmd.option("use-swaggerui", {
16
+ description: "Include generated OpenAPI and a SwaggerUI endpoint in the service project. THIS OPTION REQUIRES '@typespec/openapi3' as a dependency of your typespec project.",
17
+ type: "boolean",
18
+ default: false
19
+ }).option("project-name", {
20
+ description: "The name of the generated project.",
21
+ type: "string",
22
+ default: "ServiceProject"
23
+ }).option("http-port", {
24
+ description: "The http port for the generated project to use locally",
25
+ type: "number"
26
+ }).option("https-port", {
27
+ description: "The https port for the generated service to listen on locally.",
28
+ type: "number"
29
+ }).option("overwrite", {
30
+ description: "Overwrite existing mock implementations and project files",
31
+ type: "boolean",
32
+ default: true
33
+ }).option("output", {
34
+ description: "Path to the directory where the project will be created.",
35
+ type: "string"
36
+ }).option("collection-type", {
37
+ description: "Specifies the type of collection to use: 'array' or 'enumerable'. If not specified, 'array' will be used by default.",
38
+ type: "string",
39
+ default: "array",
40
+ choices: ["array", "enumerable"]
41
+ }).positional("path-to-spec", {
42
+ description: "The path to the TypeSpec spec or TypeSpec project directory",
43
+ type: "string",
44
+ demandOption: true
45
+ });
46
+ }, async args => {
47
+ const projectDir = args["output"] !== undefined ? resolvePath(process.cwd(), args["output"]) : undefined;
48
+ const pathToSpec = resolvePath(process.cwd(), args["path-to-spec"]);
49
+ const useSwagger = args["use-swaggerui"];
50
+ const overwrite = args["overwrite"];
51
+ const projectName = args["project-name"];
52
+ const collectionType = args["collectionType"] ?? "array";
53
+ const httpPort = args["http-port"] || (await getFreePort(5000, 5999));
54
+ const httpsPort = args["https-port"] || (await getFreePort(7000, 7999));
55
+ console.log(pc.bold("Compiling spec to create ASP.Net core project with mock implementations"));
56
+ console.log(pc.bold(`using http port ${httpPort} and https port ${httpsPort}`));
57
+ const compileArgs = ["tsp", "compile", pathToSpec, "--emit", "@typespec/http-server-csharp", "--option", "@typespec/http-server-csharp.emit-mocks=mocks-and-project-files", "--option", `@typespec/http-server-csharp.project-name=${projectName}`, "--trace", "http-server-csharp"];
58
+ if (overwrite) {
59
+ compileArgs.push("--option", "@typespec/http-server-csharp.overwrite=true");
60
+ }
61
+ if (httpPort) {
62
+ compileArgs.push("--option", `@typespec/http-server-csharp.http-port=${httpPort}`);
63
+ }
64
+ if (httpsPort) {
65
+ compileArgs.push("--option", `@typespec/http-server-csharp.https-port=${httpsPort}`);
66
+ }
67
+ if (collectionType) {
68
+ compileArgs.push("--option", `@typespec/http-server-csharp.collection-type=${collectionType}`);
69
+ }
70
+ const swaggerArgs = ["--emit", "@typespec/openapi3", "--option", "@typespec/http-server-csharp.use-swaggerui=true"];
71
+ if (projectDir) {
72
+ const generatedTargetDir = resolvePath(process.cwd(), projectDir);
73
+ const generatedOpenApiDir = resolvePath(process.cwd(), projectDir, "openapi");
74
+ const openApiPath = path.relative(projectDir, resolvePath(generatedOpenApiDir, "openapi.yaml")).replaceAll("\\", "/");
75
+ compileArgs.push("--option", `@typespec/http-server-csharp.emitter-output-dir=${generatedTargetDir}`);
76
+ swaggerArgs.push("--option", `@typespec/openapi3.emitter-output-dir=${generatedOpenApiDir}`, "--option", `@typespec/http-server-csharp.openapi-path=${openApiPath}`);
77
+ }
78
+ if (useSwagger) compileArgs.push(...swaggerArgs);
79
+ const result = await runScriptAsync("npx", compileArgs);
80
+ if (result === 0) {
81
+ console.log(pc.bold(`Your project was successfully created`));
82
+ } else {
83
+ console.log(pc.bold("There were one or more errors"));
84
+ if (useSwagger) {
85
+ console.log("You must have @typespec/openapi3 as a dependency in your typespec project for use of SwaggerUI. ");
86
+ }
87
+ }
88
+ }).argv;
123
89
  }
124
90
  function internalError(error) {
125
- // NOTE: An expected error, like one thrown for bad input, shouldn't reach
126
- // here, but be handled somewhere else. If we reach here, it should be
127
- // considered a bug and therefore we should not suppress the stack trace as
128
- // that risks losing it in the case of a bug that does not repro easily.
129
- console.log(error);
91
+ // NOTE: An expected error, like one thrown for bad input, shouldn't reach
92
+ // here, but be handled somewhere else. If we reach here, it should be
93
+ // considered a bug and therefore we should not suppress the stack trace as
94
+ // that risks losing it in the case of a bug that does not repro easily.
95
+ console.log(error);
130
96
  }
131
97
  function processStream(input) {
132
- if (input === undefined || input === null)
133
- return "";
134
- const data = `${input}`;
135
- const lines = data.split("\n");
136
- const result = [];
137
- for (const line of lines) {
138
- const token = "hscs-msg:";
139
- const extraChars = token.length;
140
- if (line.includes(token) && line.includes("trace")) {
141
- const endPos = line.indexOf(token) + extraChars;
142
- result.push(pc.bold(line.substring(endPos)));
143
- }
144
- else {
145
- result.push(pc.dim(line));
146
- }
98
+ if (input === undefined || input === null) return "";
99
+ const data = `${input}`;
100
+ const lines = data.split("\n");
101
+ const result = [];
102
+ for (const line of lines) {
103
+ const token = "hscs-msg:";
104
+ const extraChars = token.length;
105
+ if (line.includes(token) && line.includes("trace")) {
106
+ const endPos = line.indexOf(token) + extraChars;
107
+ result.push(pc.bold(line.substring(endPos)));
108
+ } else {
109
+ result.push(pc.dim(line));
147
110
  }
148
- return result.join("\n");
111
+ }
112
+ return result.join("\n");
149
113
  }
150
114
  function runScriptAsync(cmd, args) {
151
- let resolver;
152
- const promise = new Promise((resolve, _) => {
153
- resolver = resolve;
154
- });
155
- console.log(pc.green(`> ${cmd} ${args.join(" ")}`));
156
- const proc = spawn(cmd, args);
157
- proc.stdout?.on("data", (data) => {
158
- console.log(processStream(data));
159
- });
160
- proc.stderr?.on("data", (data) => {
161
- console.log(processStream(data));
162
- });
163
- proc.on("close", (_, __) => {
164
- resolver(proc.exitCode || 0);
165
- });
166
- return promise;
115
+ let resolver;
116
+ const promise = new Promise((resolve, _) => {
117
+ resolver = resolve;
118
+ });
119
+ console.log(pc.green(`> ${cmd} ${args.join(" ")}`));
120
+ const proc = spawn(cmd, args);
121
+ proc.stdout?.on("data", data => {
122
+ console.log(processStream(data));
123
+ });
124
+ proc.stderr?.on("data", data => {
125
+ console.log(processStream(data));
126
+ });
127
+ proc.on("close", (_, __) => {
128
+ resolver(proc.exitCode || 0);
129
+ });
130
+ return promise;
167
131
  }
168
- process.on("unhandledRejection", (error) => {
169
- console.error("Unhandled promise rejection!");
170
- internalError(error);
132
+ process.on("unhandledRejection", error => {
133
+ console.error("Unhandled promise rejection!");
134
+ internalError(error);
171
135
  });
172
136
  main().catch(internalError);
173
137
  //# sourceMappingURL=cli.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/cli/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"names":["resolvePath","spawn","path","pc","yargs","hideBin","getFreePort","main","console","log","process","argv","scriptName","help","strict","parserConfiguration","command","cmd","option","description","type","default","choices","positional","demandOption","args","projectDir","undefined","cwd","pathToSpec","useSwagger","overwrite","projectName","collectionType","httpPort","httpsPort","bold","compileArgs","push","swaggerArgs","generatedTargetDir","generatedOpenApiDir","openApiPath","relative","replaceAll","result","runScriptAsync","internalError","error","processStream","input","data","lines","split","line","token","extraChars","length","includes","endPos","indexOf","substring","dim","join","resolver","promise","Promise","resolve","_","green","proc","stdout","on","stderr","__","exitCode","catch"],"sources":["../../../src/cli/cli.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,16 @@
1
+ import { type Children } from "@alloy-js/core";
2
+ import type { OperationHttpCanonicalization } from "@typespec/http-canonicalization";
3
+ import type { RequestModelInfo } from "../request-models.jsx";
4
+ export interface ControllerActionProps {
5
+ /** The canonicalized HTTP operation to generate an action method for. */
6
+ operation: OperationHttpCanonicalization;
7
+ /** The name of the business logic implementation field (e.g., "petStoreImpl"). */
8
+ implFieldName: string;
9
+ /** Request model info if this operation uses a synthetic request model. */
10
+ requestModel?: RequestModelInfo;
11
+ }
12
+ /**
13
+ * Renders an ASP.NET controller action method for an HTTP operation.
14
+ */
15
+ export declare function ControllerAction(props: ControllerActionProps): Children;
16
+ //# sourceMappingURL=controller-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller-action.d.ts","sourceRoot":"","sources":["../../../../src/components/controller-action/controller-action.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAKrD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAIrF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAK9D,MAAM,WAAW,qBAAqB;IACpC,yEAAyE;IACzE,SAAS,EAAE,6BAA6B,CAAC;IACzC,kFAAkF;IAClF,aAAa,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,gBAAgB,CAAC;CACjC;AAYD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,QAAQ,CAiNvE"}
@@ -0,0 +1,251 @@
1
+ import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
+ import { code } from "@alloy-js/core";
3
+ import * as cs from "@alloy-js/csharp";
4
+ import { Attribute } from "@alloy-js/csharp";
5
+ import { isErrorModel, isVoidType } from "@typespec/compiler";
6
+ import { useTsp } from "@typespec/emitter-framework";
7
+ import { AspNetMvc } from "../../utils/csharp-libs.js";
8
+ import { getDocComments } from "../../utils/doc-comments.js";
9
+ import { getHttpVerbAttribute, getRouteTemplate } from "../../utils/http-helpers.js";
10
+ import { TypeExpression } from "../type-expression/type-expression.js";
11
+ import { getBindingAttribute, getLiteralDefaultValue } from "./parameter-binding.js";
12
+ import { getSuccessStatusCode } from "./response-analysis.js";
13
+ /**
14
+ * Renders an ASP.NET controller action method for an HTTP operation.
15
+ */
16
+ export function ControllerAction(props) {
17
+ const {
18
+ $
19
+ } = useTsp();
20
+ const namePolicy = cs.useCSharpNamePolicy();
21
+ const opName = namePolicy.getName(props.operation.name, "class-method");
22
+ const verb = getHttpVerbAttribute(props.operation.method);
23
+ const route = getRouteTemplate(props.operation.path);
24
+ const isGet = props.operation.method === "get";
25
+
26
+ // Map all HTTP parameters (path, query, header) to C# method parameters
27
+ const pathParams = [];
28
+ const queryHeaderParams = [];
29
+ for (const p of props.operation.requestParameters.properties) {
30
+ if (p.property.isContentTypeProperty) continue;
31
+ const isOptional = p.property.sourceType.optional;
32
+ const literalDefault = getLiteralDefaultValue(p.property.sourceType.type);
33
+ if (p.kind === "path") {
34
+ const paramName = namePolicy.getName(p.property.sourceType.name, "parameter");
35
+ const attr = getBindingAttribute(p, paramName);
36
+ pathParams.push({
37
+ name: paramName,
38
+ type: _$createComponent(TypeExpression, {
39
+ get type() {
40
+ return p.property.sourceType.type;
41
+ }
42
+ }),
43
+ attributes: attr ? [attr] : undefined,
44
+ optional: isOptional,
45
+ default: literalDefault
46
+ });
47
+ } else if (p.kind === "query" || p.kind === "header") {
48
+ const attr = getBindingAttribute(p);
49
+ queryHeaderParams.push({
50
+ name: namePolicy.getName(p.property.sourceType.name, "parameter"),
51
+ type: _$createComponent(TypeExpression, {
52
+ get type() {
53
+ return p.property.sourceType.type;
54
+ }
55
+ }),
56
+ attributes: attr ? [attr] : undefined,
57
+ optional: isOptional,
58
+ default: literalDefault
59
+ });
60
+ }
61
+ }
62
+ // Required params (no default) first, then params with defaults
63
+ const sortByDefault = (a, b) => {
64
+ const aHasDefault = a.default !== undefined || a.optional;
65
+ const bHasDefault = b.default !== undefined || b.optional;
66
+ if (aHasDefault === bHasDefault) return 0;
67
+ return aHasDefault ? 1 : -1;
68
+ };
69
+ // Default: path params, then query/header params (sorted by default presence)
70
+ let parameters = [...pathParams, ...queryHeaderParams.sort(sortByDefault)];
71
+
72
+ // Add body parameter if present (but NOT for GET requests)
73
+ const body = props.operation.requestParameters.body;
74
+ let callArgs;
75
+ const isMultipart = !isGet && body?.bodyKind === "multipart";
76
+ const isBodyRoot = !isGet && body?.bodyKind === "single" && body.bodies.length > 0 && props.operation.requestParameters.properties.some(p => p.kind === "bodyRoot");
77
+ const hasExplicitBody = !isGet && body?.bodyKind === "single" && body.bodies.length > 0 && body.bodies[0].property !== undefined && !isBodyRoot;
78
+ if (isGet) {
79
+ // GET requests suppress body parameters entirely
80
+ callArgs = parameters.map(p => p.name).join(", ");
81
+ } else if (isMultipart) {
82
+ // Multipart body: don't add body as parameter — we'll create a MultipartReader in the method body
83
+ callArgs = [...parameters.map(p => p.name), "reader"].join(", ");
84
+ } else if (isBodyRoot) {
85
+ // @bodyRoot — the whole model is the body, no other HTTP params extracted
86
+ parameters = [{
87
+ name: "body",
88
+ type: _$createComponent(TypeExpression, {
89
+ get type() {
90
+ return body.bodies[0].type.sourceType;
91
+ }
92
+ })
93
+ }];
94
+ callArgs = "body";
95
+ } else if (props.requestModel && body?.bodyKind === "single" && body.bodies.length > 0) {
96
+ // Request model for spread body: path, body, query/header
97
+ const bodyParam = {
98
+ name: "body",
99
+ type: code`${props.requestModel.name}`
100
+ };
101
+ parameters = [...pathParams, bodyParam, ...queryHeaderParams];
102
+ // Call args: path params, then body property accesses, then query/header params
103
+ const bodyType = body.bodies[0].type.sourceType;
104
+ if (bodyType.kind === "Model") {
105
+ const bodyArgs = Array.from(bodyType.properties.values()).map(p => {
106
+ const propName = namePolicy.getName(p.name, "class-property");
107
+ return `body.${propName}`;
108
+ });
109
+ const pathArgNames = pathParams.map(p => p.name);
110
+ const queryArgNames = queryHeaderParams.map(p => p.name);
111
+ callArgs = [...pathArgNames, ...bodyArgs, ...queryArgNames].join(", ");
112
+ } else {
113
+ callArgs = parameters.map(p => p.name).join(", ");
114
+ }
115
+ } else if (hasExplicitBody) {
116
+ parameters.push({
117
+ name: "body",
118
+ type: _$createComponent(TypeExpression, {
119
+ get type() {
120
+ return body.bodies[0].type.sourceType;
121
+ }
122
+ }),
123
+ attributes: [{
124
+ name: AspNetMvc.FromBodyAttribute
125
+ }]
126
+ });
127
+ callArgs = parameters.map(p => p.name).join(", ");
128
+ } else if (body?.bodyKind === "single" && body.bodies.length > 0) {
129
+ parameters.push({
130
+ name: "body",
131
+ type: _$createComponent(TypeExpression, {
132
+ get type() {
133
+ return body.bodies[0].type.sourceType;
134
+ }
135
+ }),
136
+ attributes: [{
137
+ name: AspNetMvc.FromBodyAttribute
138
+ }]
139
+ });
140
+ callArgs = parameters.map(p => p.name).join(", ");
141
+ } else {
142
+ callArgs = parameters.map(p => p.name).join(", ");
143
+ }
144
+
145
+ // Determine the success status code from the response
146
+ const {
147
+ statusCode,
148
+ hasBody
149
+ } = getSuccessStatusCode(props.operation);
150
+
151
+ // Determine response type for ProducesResponseType attribute
152
+ const returnType = props.operation.sourceType.returnType;
153
+ const responseStatusCode = hasBody ? "OK" : "NoContent";
154
+ let responseTypeExpr = undefined;
155
+ if (hasBody) {
156
+ if (returnType.kind === "Union") {
157
+ for (const variant of returnType.variants.values()) {
158
+ const vt = variant.type;
159
+ if (isVoidType(vt)) continue;
160
+ if (vt.kind === "Model") {
161
+ try {
162
+ if (isErrorModel($.program, vt)) continue;
163
+ } catch {}
164
+ if (vt.name?.toLowerCase() === "error") continue;
165
+ }
166
+ responseTypeExpr = _$createComponent(TypeExpression, {
167
+ type: vt
168
+ });
169
+ break;
170
+ }
171
+ } else if (!isVoidType(returnType)) {
172
+ responseTypeExpr = _$createComponent(TypeExpression, {
173
+ type: returnType
174
+ });
175
+ }
176
+ }
177
+ const attributes = [_$createComponent(Attribute, {
178
+ name: verb
179
+ }), _$createComponent(Attribute, {
180
+ get name() {
181
+ return AspNetMvc.RouteAttribute;
182
+ },
183
+ args: [`"${route}"`]
184
+ })];
185
+ if (isMultipart) {
186
+ attributes.push(_$createComponent(Attribute, {
187
+ get name() {
188
+ return AspNetMvc.ConsumesAttribute;
189
+ },
190
+ args: [`"multipart/form-data"`]
191
+ }));
192
+ }
193
+ if (responseTypeExpr) {
194
+ attributes.push(_$createComponent(Attribute, {
195
+ get name() {
196
+ return AspNetMvc.ProducesResponseTypeAttribute;
197
+ },
198
+ args: [code`(int)HttpStatusCode.${responseStatusCode}`, code`Type = typeof(${responseTypeExpr})`]
199
+ }));
200
+ } else {
201
+ attributes.push(_$createComponent(Attribute, {
202
+ get name() {
203
+ return AspNetMvc.ProducesResponseTypeAttribute;
204
+ },
205
+ args: [code`(int)HttpStatusCode.${responseStatusCode}`, `Type = typeof(void)`]
206
+ }));
207
+ }
208
+
209
+ // Generate the method body
210
+ let methodBody;
211
+ if (isMultipart) {
212
+ // Multipart body: parse boundary and create MultipartReader
213
+ const implCall = hasBody ? code`var result = await ${props.implFieldName}.${opName}Async(${callArgs});${"\n"}return ${statusCode === 202 ? "Accepted" : "Ok"}(result);` : code`await ${props.implFieldName}.${opName}Async(${callArgs});${"\n"}return ${!hasBody ? "NoContent" : "Ok"}();`;
214
+ methodBody = code`var boundary = Request.GetMultipartBoundary();
215
+ if (boundary == null)
216
+ {
217
+ return BadRequest("Request missing multipart boundary");
218
+ }
219
+
220
+
221
+ var reader = new MultipartReader(boundary, Request.Body);
222
+ ${implCall}`;
223
+ } else {
224
+ // Non-multipart: generate the return statement based on status code
225
+ if (!hasBody && statusCode === 202) {
226
+ methodBody = code`await ${props.implFieldName}.${opName}Async(${callArgs});${"\n"}return Accepted();`;
227
+ } else if (!hasBody) {
228
+ methodBody = code`await ${props.implFieldName}.${opName}Async(${callArgs});${"\n"}return NoContent();`;
229
+ } else if (statusCode === 202) {
230
+ methodBody = code`var result = await ${props.implFieldName}.${opName}Async(${callArgs});${"\n"}return Accepted(result);`;
231
+ } else if (statusCode !== undefined && statusCode !== 200) {
232
+ methodBody = code`var result = await ${props.implFieldName}.${opName}Async(${callArgs});${"\n"}return StatusCode(${statusCode}, result);`;
233
+ } else {
234
+ methodBody = code`var result = await ${props.implFieldName}.${opName}Async(${callArgs});${"\n"}return Ok(result);`;
235
+ }
236
+ }
237
+ return _$createComponent(cs.Method, {
238
+ name: opName,
239
+ async: true,
240
+ virtual: true,
241
+ "public": true,
242
+ returns: code`Task<IActionResult>`,
243
+ parameters: parameters,
244
+ attributes: attributes,
245
+ get doc() {
246
+ return getDocComments($, props.operation.sourceType);
247
+ },
248
+ children: methodBody
249
+ });
250
+ }
251
+ //# sourceMappingURL=controller-action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["code","cs","Attribute","isErrorModel","isVoidType","useTsp","AspNetMvc","getDocComments","getHttpVerbAttribute","getRouteTemplate","TypeExpression","getBindingAttribute","getLiteralDefaultValue","getSuccessStatusCode","ControllerAction","props","$","namePolicy","useCSharpNamePolicy","opName","getName","operation","name","verb","method","route","path","isGet","pathParams","queryHeaderParams","p","requestParameters","properties","property","isContentTypeProperty","isOptional","sourceType","optional","literalDefault","type","kind","paramName","attr","push","_$createComponent","attributes","undefined","default","sortByDefault","a","b","aHasDefault","bHasDefault","parameters","sort","body","callArgs","isMultipart","bodyKind","isBodyRoot","bodies","length","some","hasExplicitBody","map","join","requestModel","bodyParam","bodyType","bodyArgs","Array","from","values","propName","pathArgNames","queryArgNames","FromBodyAttribute","statusCode","hasBody","returnType","responseStatusCode","responseTypeExpr","variant","variants","vt","program","toLowerCase","RouteAttribute","args","ConsumesAttribute","ProducesResponseTypeAttribute","methodBody","implCall","implFieldName","Method","async","virtual","returns","doc","children"],"sources":["../../../../src/components/controller-action/controller-action.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}