@nestia/sdk 14.0.1 → 14.0.2

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 (377) hide show
  1. package/assets/bundle/distribute/build-sdk.cjs +28 -0
  2. package/assets/bundle/distribute/package.json +6 -2
  3. package/lib/INestiaConfig.d.ts +55 -24
  4. package/lib/NestiaSdkApplication.d.ts +60 -0
  5. package/lib/NestiaSdkApplication.js +63 -5
  6. package/lib/NestiaSdkApplication.js.map +1 -1
  7. package/lib/NestiaSwaggerComposer.d.ts +21 -0
  8. package/lib/NestiaSwaggerComposer.js +21 -3
  9. package/lib/NestiaSwaggerComposer.js.map +1 -1
  10. package/lib/analyses/AccessorAnalyzer.d.ts +26 -0
  11. package/lib/analyses/AccessorAnalyzer.js +26 -0
  12. package/lib/analyses/AccessorAnalyzer.js.map +1 -1
  13. package/lib/analyses/ConfigAnalyzer.d.ts +41 -0
  14. package/lib/analyses/ConfigAnalyzer.js +48 -73
  15. package/lib/analyses/ConfigAnalyzer.js.map +1 -1
  16. package/lib/analyses/ImportAnalyzer.d.ts +25 -0
  17. package/lib/analyses/ImportAnalyzer.js +25 -0
  18. package/lib/analyses/ImportAnalyzer.js.map +1 -1
  19. package/lib/analyses/ParameterNameAnalyzer.d.ts +24 -0
  20. package/lib/analyses/ParameterNameAnalyzer.js +15 -0
  21. package/lib/analyses/ParameterNameAnalyzer.js.map +1 -1
  22. package/lib/analyses/PathAnalyzer.d.ts +63 -1
  23. package/lib/analyses/PathAnalyzer.js +54 -9
  24. package/lib/analyses/PathAnalyzer.js.map +1 -1
  25. package/lib/analyses/ReflectControllerAnalyzer.d.ts +32 -0
  26. package/lib/analyses/ReflectControllerAnalyzer.js +22 -0
  27. package/lib/analyses/ReflectControllerAnalyzer.js.map +1 -1
  28. package/lib/analyses/ReflectHttpOperationAnalyzer.d.ts +29 -0
  29. package/lib/analyses/ReflectHttpOperationAnalyzer.js +28 -17
  30. package/lib/analyses/ReflectHttpOperationAnalyzer.js.map +1 -1
  31. package/lib/analyses/ReflectHttpOperationExceptionAnalyzer.d.ts +31 -0
  32. package/lib/analyses/ReflectHttpOperationExceptionAnalyzer.js +21 -0
  33. package/lib/analyses/ReflectHttpOperationExceptionAnalyzer.js.map +1 -1
  34. package/lib/analyses/ReflectHttpOperationParameterAnalyzer.d.ts +31 -0
  35. package/lib/analyses/ReflectHttpOperationParameterAnalyzer.js +21 -0
  36. package/lib/analyses/ReflectHttpOperationParameterAnalyzer.js.map +1 -1
  37. package/lib/analyses/ReflectHttpOperationResponseAnalyzer.d.ts +32 -0
  38. package/lib/analyses/ReflectHttpOperationResponseAnalyzer.js +22 -0
  39. package/lib/analyses/ReflectHttpOperationResponseAnalyzer.js.map +1 -1
  40. package/lib/analyses/ReflectMcpOperationAnalyzer.d.ts +29 -0
  41. package/lib/analyses/ReflectMcpOperationAnalyzer.js +30 -9
  42. package/lib/analyses/ReflectMcpOperationAnalyzer.js.map +1 -1
  43. package/lib/analyses/ReflectMetadataAnalyzer.d.ts +47 -0
  44. package/lib/analyses/ReflectMetadataAnalyzer.js +47 -0
  45. package/lib/analyses/ReflectMetadataAnalyzer.js.map +1 -1
  46. package/lib/analyses/ReflectWebSocketOperationAnalyzer.d.ts +29 -0
  47. package/lib/analyses/ReflectWebSocketOperationAnalyzer.js +21 -2
  48. package/lib/analyses/ReflectWebSocketOperationAnalyzer.js.map +1 -1
  49. package/lib/analyses/SecurityAnalyzer.d.ts +15 -0
  50. package/lib/analyses/SecurityAnalyzer.js +15 -0
  51. package/lib/analyses/SecurityAnalyzer.js.map +1 -1
  52. package/lib/analyses/SwaggerExampleAnalyzer.d.ts +16 -0
  53. package/lib/analyses/SwaggerExampleAnalyzer.js +16 -0
  54. package/lib/analyses/SwaggerExampleAnalyzer.js.map +1 -1
  55. package/lib/analyses/TypedHttpRouteAnalyzer.d.ts +41 -3
  56. package/lib/analyses/TypedHttpRouteAnalyzer.js +172 -157
  57. package/lib/analyses/TypedHttpRouteAnalyzer.js.map +1 -1
  58. package/lib/analyses/TypedMcpRouteAnalyzer.d.ts +29 -0
  59. package/lib/analyses/TypedMcpRouteAnalyzer.js +152 -20
  60. package/lib/analyses/TypedMcpRouteAnalyzer.js.map +1 -1
  61. package/lib/analyses/TypedWebSocketRouteAnalyzer.d.ts +19 -0
  62. package/lib/analyses/TypedWebSocketRouteAnalyzer.js +19 -0
  63. package/lib/analyses/TypedWebSocketRouteAnalyzer.js.map +1 -1
  64. package/lib/decorators/OperationMetadata.d.ts +6 -0
  65. package/lib/decorators/OperationMetadata.js +6 -0
  66. package/lib/decorators/OperationMetadata.js.map +1 -1
  67. package/lib/executable/internal/CommandParser.d.ts +19 -0
  68. package/lib/executable/internal/CommandParser.js +19 -0
  69. package/lib/executable/internal/CommandParser.js.map +1 -1
  70. package/lib/executable/internal/NestiaConfigLoader.d.ts +56 -0
  71. package/lib/executable/internal/NestiaConfigLoader.js +48 -42
  72. package/lib/executable/internal/NestiaConfigLoader.js.map +1 -1
  73. package/lib/executable/internal/NestiaSdkCommand.d.ts +60 -0
  74. package/lib/executable/internal/NestiaSdkCommand.js +95 -3
  75. package/lib/executable/internal/NestiaSdkCommand.js.map +1 -1
  76. package/lib/executable/internal/NestiaSdkWatcher.d.ts +81 -0
  77. package/lib/executable/internal/NestiaSdkWatcher.js +122 -38
  78. package/lib/executable/internal/NestiaSdkWatcher.js.map +1 -1
  79. package/lib/executable/internal/NestiaSwaggerWatch.d.ts +80 -0
  80. package/lib/executable/internal/NestiaSwaggerWatch.js +308 -0
  81. package/lib/executable/internal/NestiaSwaggerWatch.js.map +1 -0
  82. package/lib/factories/ExpressionFactory.d.ts +17 -2
  83. package/lib/factories/ExpressionFactory.js +17 -2
  84. package/lib/factories/ExpressionFactory.js.map +1 -1
  85. package/lib/factories/IdentifierFactory.d.ts +24 -0
  86. package/lib/factories/IdentifierFactory.js +24 -0
  87. package/lib/factories/IdentifierFactory.js.map +1 -1
  88. package/lib/factories/LiteralFactory.d.ts +22 -4
  89. package/lib/factories/LiteralFactory.js +30 -10
  90. package/lib/factories/LiteralFactory.js.map +1 -1
  91. package/lib/factories/StatementFactory.d.ts +28 -1
  92. package/lib/factories/StatementFactory.js +28 -1
  93. package/lib/factories/StatementFactory.js.map +1 -1
  94. package/lib/factories/TypeFactory.d.ts +24 -0
  95. package/lib/factories/TypeFactory.js +15 -0
  96. package/lib/factories/TypeFactory.js.map +1 -1
  97. package/lib/generates/CloneGenerator.d.ts +22 -0
  98. package/lib/generates/CloneGenerator.js +26 -5
  99. package/lib/generates/CloneGenerator.js.map +1 -1
  100. package/lib/generates/E2eGenerator.d.ts +19 -0
  101. package/lib/generates/E2eGenerator.js +19 -0
  102. package/lib/generates/E2eGenerator.js.map +1 -1
  103. package/lib/generates/SdkGenerator.d.ts +38 -0
  104. package/lib/generates/SdkGenerator.js +40 -2
  105. package/lib/generates/SdkGenerator.js.map +1 -1
  106. package/lib/generates/SwaggerGenerator.d.ts +36 -6
  107. package/lib/generates/SwaggerGenerator.js +55 -13
  108. package/lib/generates/SwaggerGenerator.js.map +1 -1
  109. package/lib/generates/internal/E2eFileProgrammer.d.ts +19 -0
  110. package/lib/generates/internal/E2eFileProgrammer.js +20 -1
  111. package/lib/generates/internal/E2eFileProgrammer.js.map +1 -1
  112. package/lib/generates/internal/FilePrinter.d.ts +43 -0
  113. package/lib/generates/internal/FilePrinter.js +43 -0
  114. package/lib/generates/internal/FilePrinter.js.map +1 -1
  115. package/lib/generates/internal/ImportDictionary.d.ts +92 -2
  116. package/lib/generates/internal/ImportDictionary.js +91 -3
  117. package/lib/generates/internal/ImportDictionary.js.map +1 -1
  118. package/lib/generates/internal/SdkAliasCollection.d.ts +119 -0
  119. package/lib/generates/internal/SdkAliasCollection.js +124 -7
  120. package/lib/generates/internal/SdkAliasCollection.js.map +1 -1
  121. package/lib/generates/internal/SdkDistributionComposer.d.ts +19 -0
  122. package/lib/generates/internal/SdkDistributionComposer.js +98 -59
  123. package/lib/generates/internal/SdkDistributionComposer.js.map +1 -1
  124. package/lib/generates/internal/SdkFileProgrammer.d.ts +18 -0
  125. package/lib/generates/internal/SdkFileProgrammer.js +18 -0
  126. package/lib/generates/internal/SdkFileProgrammer.js.map +1 -1
  127. package/lib/generates/internal/SdkHttpCloneProgrammer.d.ts +29 -0
  128. package/lib/generates/internal/SdkHttpCloneProgrammer.js +33 -0
  129. package/lib/generates/internal/SdkHttpCloneProgrammer.js.map +1 -1
  130. package/lib/generates/internal/SdkHttpCloneReferencer.d.ts +19 -0
  131. package/lib/generates/internal/SdkHttpCloneReferencer.js +78 -25
  132. package/lib/generates/internal/SdkHttpCloneReferencer.js.map +1 -1
  133. package/lib/generates/internal/SdkHttpFunctionProgrammer.d.ts +19 -0
  134. package/lib/generates/internal/SdkHttpFunctionProgrammer.js +19 -0
  135. package/lib/generates/internal/SdkHttpFunctionProgrammer.js.map +1 -1
  136. package/lib/generates/internal/SdkHttpNamespaceProgrammer.d.ts +19 -0
  137. package/lib/generates/internal/SdkHttpNamespaceProgrammer.js +19 -0
  138. package/lib/generates/internal/SdkHttpNamespaceProgrammer.js.map +1 -1
  139. package/lib/generates/internal/SdkHttpParameterProgrammer.d.ts +104 -2
  140. package/lib/generates/internal/SdkHttpParameterProgrammer.js +70 -0
  141. package/lib/generates/internal/SdkHttpParameterProgrammer.js.map +1 -1
  142. package/lib/generates/internal/SdkHttpRouteProgrammer.d.ts +20 -0
  143. package/lib/generates/internal/SdkHttpRouteProgrammer.js +20 -0
  144. package/lib/generates/internal/SdkHttpRouteProgrammer.js.map +1 -1
  145. package/lib/generates/internal/SdkHttpSimulationProgrammer.d.ts +38 -0
  146. package/lib/generates/internal/SdkHttpSimulationProgrammer.js +49 -5
  147. package/lib/generates/internal/SdkHttpSimulationProgrammer.js.map +1 -1
  148. package/lib/generates/internal/SdkImportWizard.d.ts +63 -0
  149. package/lib/generates/internal/SdkImportWizard.js +63 -0
  150. package/lib/generates/internal/SdkImportWizard.js.map +1 -1
  151. package/lib/generates/internal/SdkMcpRouteProgrammer.d.ts +17 -2
  152. package/lib/generates/internal/SdkMcpRouteProgrammer.js +33 -13
  153. package/lib/generates/internal/SdkMcpRouteProgrammer.js.map +1 -1
  154. package/lib/generates/internal/SdkPathTemplate.d.ts +15 -0
  155. package/lib/generates/internal/SdkPathTemplate.js +15 -0
  156. package/lib/generates/internal/SdkPathTemplate.js.map +1 -1
  157. package/lib/generates/internal/SdkRouteDirectory.d.ts +10 -0
  158. package/lib/generates/internal/SdkRouteDirectory.js +10 -0
  159. package/lib/generates/internal/SdkRouteDirectory.js.map +1 -1
  160. package/lib/generates/internal/SdkTypeProgrammer.d.ts +54 -1
  161. package/lib/generates/internal/SdkTypeProgrammer.js +96 -12
  162. package/lib/generates/internal/SdkTypeProgrammer.js.map +1 -1
  163. package/lib/generates/internal/SdkTypeTagProgrammer.d.ts +36 -3
  164. package/lib/generates/internal/SdkTypeTagProgrammer.js +28 -7
  165. package/lib/generates/internal/SdkTypeTagProgrammer.js.map +1 -1
  166. package/lib/generates/internal/SdkWebSocketCloneProgrammer.d.ts +40 -0
  167. package/lib/generates/internal/SdkWebSocketCloneProgrammer.js +149 -142
  168. package/lib/generates/internal/SdkWebSocketCloneProgrammer.js.map +1 -1
  169. package/lib/generates/internal/SdkWebSocketNamespaceProgrammer.d.ts +19 -0
  170. package/lib/generates/internal/SdkWebSocketNamespaceProgrammer.js +19 -0
  171. package/lib/generates/internal/SdkWebSocketNamespaceProgrammer.js.map +1 -1
  172. package/lib/generates/internal/SdkWebSocketParameterProgrammer.d.ts +81 -2
  173. package/lib/generates/internal/SdkWebSocketParameterProgrammer.js +48 -0
  174. package/lib/generates/internal/SdkWebSocketParameterProgrammer.js.map +1 -1
  175. package/lib/generates/internal/SdkWebSocketRouteProgrammer.d.ts +18 -0
  176. package/lib/generates/internal/SdkWebSocketRouteProgrammer.js +18 -0
  177. package/lib/generates/internal/SdkWebSocketRouteProgrammer.js.map +1 -1
  178. package/lib/generates/internal/SwaggerDescriptionComposer.d.ts +42 -0
  179. package/lib/generates/internal/SwaggerDescriptionComposer.js +44 -1
  180. package/lib/generates/internal/SwaggerDescriptionComposer.js.map +1 -1
  181. package/lib/generates/internal/SwaggerOperationComposer.d.ts +18 -0
  182. package/lib/generates/internal/SwaggerOperationComposer.js +18 -0
  183. package/lib/generates/internal/SwaggerOperationComposer.js.map +1 -1
  184. package/lib/generates/internal/SwaggerOperationParameterComposer.d.ts +39 -0
  185. package/lib/generates/internal/SwaggerOperationParameterComposer.js +31 -8
  186. package/lib/generates/internal/SwaggerOperationParameterComposer.js.map +1 -1
  187. package/lib/generates/internal/SwaggerOperationResponseComposer.d.ts +19 -0
  188. package/lib/generates/internal/SwaggerOperationResponseComposer.js +19 -0
  189. package/lib/generates/internal/SwaggerOperationResponseComposer.js.map +1 -1
  190. package/lib/internal/legacy.d.ts +296 -16
  191. package/lib/internal/legacy.js +127 -10
  192. package/lib/internal/legacy.js.map +1 -1
  193. package/lib/structures/INestiaProject.d.ts +10 -0
  194. package/lib/structures/INestiaSdkInput.d.ts +30 -0
  195. package/lib/structures/IOperationMetadata.d.ts +55 -0
  196. package/lib/structures/IReflectController.d.ts +10 -0
  197. package/lib/structures/IReflectHttpOperation.d.ts +10 -0
  198. package/lib/structures/IReflectHttpOperationException.d.ts +10 -0
  199. package/lib/structures/IReflectHttpOperationParameter.d.ts +47 -0
  200. package/lib/structures/IReflectHttpOperationSuccess.d.ts +11 -0
  201. package/lib/structures/IReflectImport.d.ts +10 -0
  202. package/lib/structures/IReflectMcpOperation.d.ts +19 -0
  203. package/lib/structures/IReflectMcpOperationParameter.d.ts +9 -0
  204. package/lib/structures/IReflectOperationError.d.ts +28 -0
  205. package/lib/structures/IReflectOperationError.js +22 -2
  206. package/lib/structures/IReflectOperationError.js.map +1 -1
  207. package/lib/structures/IReflectType.d.ts +9 -0
  208. package/lib/structures/IReflectWebSocketOperation.d.ts +10 -0
  209. package/lib/structures/IReflectWebSocketOperationParameter.d.ts +55 -0
  210. package/lib/structures/ITypedApplication.d.ts +10 -0
  211. package/lib/structures/ITypedHttpRoute.d.ts +10 -0
  212. package/lib/structures/ITypedHttpRouteException.d.ts +10 -0
  213. package/lib/structures/ITypedHttpRouteParameter.d.ts +45 -0
  214. package/lib/structures/ITypedHttpRouteSuccess.d.ts +10 -0
  215. package/lib/structures/ITypedMcpRoute.d.ts +11 -0
  216. package/lib/structures/ITypedWebSocketRoute.d.ts +10 -0
  217. package/lib/transform.d.ts +6 -0
  218. package/lib/transform.js +6 -0
  219. package/lib/transform.js.map +1 -1
  220. package/lib/utils/ArrayUtil.d.ts +31 -1
  221. package/lib/utils/ArrayUtil.js +32 -11
  222. package/lib/utils/ArrayUtil.js.map +1 -1
  223. package/lib/utils/EmittedJavaScriptPatcher.d.ts +20 -0
  224. package/lib/utils/EmittedJavaScriptPatcher.js +65 -46
  225. package/lib/utils/EmittedJavaScriptPatcher.js.map +1 -1
  226. package/lib/utils/FileRetriever.d.ts +29 -0
  227. package/lib/utils/FileRetriever.js +29 -0
  228. package/lib/utils/FileRetriever.js.map +1 -1
  229. package/lib/utils/HttpResponseContentTypeUtil.d.ts +41 -0
  230. package/lib/utils/HttpResponseContentTypeUtil.js +31 -0
  231. package/lib/utils/HttpResponseContentTypeUtil.js.map +1 -1
  232. package/lib/utils/MapUtil.d.ts +64 -1
  233. package/lib/utils/MapUtil.js +24 -3
  234. package/lib/utils/MapUtil.js.map +1 -1
  235. package/lib/utils/PathUtil.d.ts +31 -0
  236. package/lib/utils/PathUtil.js +38 -0
  237. package/lib/utils/PathUtil.js.map +1 -1
  238. package/lib/utils/SdkBundlePath.d.ts +2 -0
  239. package/lib/utils/SdkBundlePath.js +10 -0
  240. package/lib/utils/SdkBundlePath.js.map +1 -0
  241. package/lib/utils/SdkInputFilter.d.ts +31 -0
  242. package/lib/utils/SdkInputFilter.js +115 -0
  243. package/lib/utils/SdkInputFilter.js.map +1 -0
  244. package/lib/utils/SourceFinder.d.ts +35 -0
  245. package/lib/utils/SourceFinder.js +47 -12
  246. package/lib/utils/SourceFinder.js.map +1 -1
  247. package/lib/utils/StringUtil.d.ts +77 -2
  248. package/lib/utils/StringUtil.js +166 -4
  249. package/lib/utils/StringUtil.js.map +1 -1
  250. package/lib/utils/TemporaryDirectory.d.ts +60 -0
  251. package/lib/utils/TemporaryDirectory.js +112 -0
  252. package/lib/utils/TemporaryDirectory.js.map +1 -0
  253. package/lib/utils/TsConfigReader.d.ts +42 -0
  254. package/lib/utils/TsConfigReader.js +98 -14
  255. package/lib/utils/TsConfigReader.js.map +1 -1
  256. package/lib/utils/TtscExecutor.d.ts +23 -1
  257. package/lib/utils/TtscExecutor.js +22 -0
  258. package/lib/utils/TtscExecutor.js.map +1 -1
  259. package/lib/utils/VersioningStrategy.d.ts +26 -1
  260. package/lib/utils/VersioningStrategy.js +30 -9
  261. package/lib/utils/VersioningStrategy.js.map +1 -1
  262. package/lib/validators/TextPlainValidator.d.ts +19 -0
  263. package/lib/validators/TextPlainValidator.js +19 -0
  264. package/lib/validators/TextPlainValidator.js.map +1 -1
  265. package/native/go.mod +1 -1
  266. package/native/go.sum +2 -2
  267. package/native/sdk/register.go +12 -2
  268. package/native/sdk/sdk_metadata_json.go +6 -1
  269. package/native/sdk/sdk_transform.go +388 -397
  270. package/package.json +7 -5
  271. package/src/INestiaConfig.ts +55 -24
  272. package/src/NestiaSdkApplication.ts +66 -7
  273. package/src/NestiaSwaggerComposer.ts +21 -6
  274. package/src/analyses/AccessorAnalyzer.ts +26 -0
  275. package/src/analyses/ConfigAnalyzer.ts +49 -87
  276. package/src/analyses/ImportAnalyzer.ts +25 -0
  277. package/src/analyses/ParameterNameAnalyzer.ts +24 -0
  278. package/src/analyses/PathAnalyzer.ts +63 -11
  279. package/src/analyses/ReflectControllerAnalyzer.ts +32 -0
  280. package/src/analyses/ReflectHttpOperationAnalyzer.ts +32 -10
  281. package/src/analyses/ReflectHttpOperationExceptionAnalyzer.ts +31 -0
  282. package/src/analyses/ReflectHttpOperationParameterAnalyzer.ts +31 -0
  283. package/src/analyses/ReflectHttpOperationResponseAnalyzer.ts +32 -0
  284. package/src/analyses/ReflectMcpOperationAnalyzer.ts +32 -1
  285. package/src/analyses/ReflectMetadataAnalyzer.ts +47 -0
  286. package/src/analyses/ReflectWebSocketOperationAnalyzer.ts +33 -4
  287. package/src/analyses/SecurityAnalyzer.ts +15 -0
  288. package/src/analyses/SwaggerExampleAnalyzer.ts +16 -0
  289. package/src/analyses/TypedHttpRouteAnalyzer.ts +240 -184
  290. package/src/analyses/TypedMcpRouteAnalyzer.ts +180 -20
  291. package/src/analyses/TypedWebSocketRouteAnalyzer.ts +19 -0
  292. package/src/decorators/OperationMetadata.ts +6 -0
  293. package/src/executable/internal/CommandParser.ts +19 -0
  294. package/src/executable/internal/NestiaConfigLoader.ts +66 -50
  295. package/src/executable/internal/NestiaSdkCommand.ts +96 -3
  296. package/src/executable/internal/NestiaSdkWatcher.ts +169 -41
  297. package/src/executable/internal/NestiaSwaggerWatch.ts +359 -0
  298. package/src/factories/ExpressionFactory.ts +17 -2
  299. package/src/factories/IdentifierFactory.ts +24 -0
  300. package/src/factories/LiteralFactory.ts +44 -11
  301. package/src/factories/StatementFactory.ts +28 -1
  302. package/src/factories/TypeFactory.ts +24 -0
  303. package/src/generates/CloneGenerator.ts +26 -5
  304. package/src/generates/E2eGenerator.ts +19 -0
  305. package/src/generates/SdkGenerator.ts +40 -9
  306. package/src/generates/SwaggerGenerator.ts +56 -14
  307. package/src/generates/internal/E2eFileProgrammer.ts +20 -0
  308. package/src/generates/internal/FilePrinter.ts +43 -0
  309. package/src/generates/internal/ImportDictionary.ts +110 -3
  310. package/src/generates/internal/SdkAliasCollection.ts +133 -11
  311. package/src/generates/internal/SdkDistributionComposer.ts +117 -66
  312. package/src/generates/internal/SdkFileProgrammer.ts +18 -0
  313. package/src/generates/internal/SdkHttpCloneProgrammer.ts +55 -0
  314. package/src/generates/internal/SdkHttpCloneReferencer.ts +97 -23
  315. package/src/generates/internal/SdkHttpFunctionProgrammer.ts +19 -0
  316. package/src/generates/internal/SdkHttpNamespaceProgrammer.ts +19 -0
  317. package/src/generates/internal/SdkHttpParameterProgrammer.ts +104 -2
  318. package/src/generates/internal/SdkHttpRouteProgrammer.ts +20 -0
  319. package/src/generates/internal/SdkHttpSimulationProgrammer.ts +72 -5
  320. package/src/generates/internal/SdkImportWizard.ts +63 -0
  321. package/src/generates/internal/SdkMcpRouteProgrammer.ts +38 -18
  322. package/src/generates/internal/SdkPathTemplate.ts +15 -0
  323. package/src/generates/internal/SdkRouteDirectory.ts +10 -0
  324. package/src/generates/internal/SdkTypeProgrammer.ts +118 -14
  325. package/src/generates/internal/SdkTypeTagProgrammer.ts +37 -7
  326. package/src/generates/internal/SdkWebSocketCloneProgrammer.ts +185 -142
  327. package/src/generates/internal/SdkWebSocketNamespaceProgrammer.ts +19 -0
  328. package/src/generates/internal/SdkWebSocketParameterProgrammer.ts +81 -2
  329. package/src/generates/internal/SdkWebSocketRouteProgrammer.ts +18 -0
  330. package/src/generates/internal/SwaggerDescriptionComposer.ts +47 -1
  331. package/src/generates/internal/SwaggerOperationComposer.ts +18 -0
  332. package/src/generates/internal/SwaggerOperationParameterComposer.ts +41 -8
  333. package/src/generates/internal/SwaggerOperationResponseComposer.ts +19 -0
  334. package/src/internal/legacy-augmentation.d.ts +16 -0
  335. package/src/internal/legacy.ts +296 -26
  336. package/src/structures/INestiaProject.ts +10 -0
  337. package/src/structures/INestiaSdkInput.ts +30 -0
  338. package/src/structures/IOperationMetadata.ts +55 -0
  339. package/src/structures/IReflectController.ts +10 -0
  340. package/src/structures/IReflectHttpOperation.ts +10 -0
  341. package/src/structures/IReflectHttpOperationException.ts +10 -0
  342. package/src/structures/IReflectHttpOperationParameter.ts +47 -0
  343. package/src/structures/IReflectHttpOperationSuccess.ts +11 -0
  344. package/src/structures/IReflectImport.ts +10 -0
  345. package/src/structures/IReflectMcpOperation.ts +19 -0
  346. package/src/structures/IReflectMcpOperationParameter.ts +9 -0
  347. package/src/structures/IReflectOperationError.ts +31 -2
  348. package/src/structures/IReflectType.ts +9 -0
  349. package/src/structures/IReflectWebSocketOperation.ts +10 -0
  350. package/src/structures/IReflectWebSocketOperationParameter.ts +55 -0
  351. package/src/structures/ITypedApplication.ts +10 -0
  352. package/src/structures/ITypedHttpRoute.ts +10 -0
  353. package/src/structures/ITypedHttpRouteException.ts +10 -0
  354. package/src/structures/ITypedHttpRouteParameter.ts +45 -0
  355. package/src/structures/ITypedHttpRouteSuccess.ts +10 -0
  356. package/src/structures/ITypedMcpRoute.ts +12 -0
  357. package/src/structures/ITypedWebSocketRoute.ts +10 -0
  358. package/src/transform.ts +6 -0
  359. package/src/utils/ArrayUtil.ts +32 -13
  360. package/src/utils/EmittedJavaScriptPatcher.ts +70 -47
  361. package/src/utils/FileRetriever.ts +29 -0
  362. package/src/utils/HttpResponseContentTypeUtil.ts +41 -0
  363. package/src/utils/MapUtil.ts +68 -3
  364. package/src/utils/PathUtil.ts +38 -0
  365. package/src/utils/SdkBundlePath.ts +11 -0
  366. package/src/utils/SdkInputFilter.ts +108 -0
  367. package/src/utils/SourceFinder.ts +51 -14
  368. package/src/utils/StringUtil.ts +182 -5
  369. package/src/utils/TemporaryDirectory.ts +108 -0
  370. package/src/utils/TsConfigReader.ts +124 -26
  371. package/src/utils/TtscExecutor.ts +23 -1
  372. package/src/utils/VersioningStrategy.ts +33 -13
  373. package/src/validators/TextPlainValidator.ts +19 -0
  374. package/lib/generates/internal/SwaggerReadonlyArrayEmender.d.ts +0 -9
  375. package/lib/generates/internal/SwaggerReadonlyArrayEmender.js +0 -178
  376. package/lib/generates/internal/SwaggerReadonlyArrayEmender.js.map +0 -1
  377. package/src/generates/internal/SwaggerReadonlyArrayEmender.ts +0 -264
@@ -1,3 +1,4 @@
1
+ /// <reference path="../../src/internal/legacy-augmentation.d.ts" preserve="true" />
1
2
  // Internal utilities for the plain metadata emitted by the SDK's Go
2
3
  // contributor in `packages/sdk/native/sdk/sdk_transform.go`. These adapters
3
4
  // preserve the names formerly provided by `@typia/core` without rebuilding
@@ -14,21 +15,6 @@ import type {
14
15
  OpenApi,
15
16
  } from "@typia/interface";
16
17
 
17
- // Module augmentation: typia v13's `IReference` carries only a symbolic
18
- // `name` + tags, but `MetadataSchema.from(plain, dictionary)` mutates
19
- // each reference to also hold the resolved target type so downstream
20
- // sdk code can keep its `ref.type!.value` / `ref.type!.elements` access
21
- // pattern from the legacy `@typia/core` `MetadataArray` / `MetadataTuple`
22
- // classes. The field is optional because it is only populated after a
23
- // `MetadataSchema.from` walk against a dictionary.
24
- declare module "@typia/interface" {
25
- namespace IMetadataSchema {
26
- interface IReference {
27
- type?: IArrayType | ITupleType | IObjectType | IAliasType;
28
- }
29
- }
30
- }
31
-
32
18
  /**
33
19
  * Plain `IMetadataSchema` augmented with the fields the nestia transform
34
20
  * pre-bakes. `size`, `name`, and `empty` replace the methods the legacy
@@ -41,6 +27,12 @@ declare module "@typia/interface" {
41
27
  * overlay — still satisfy the type when passed through legacy utilities. The
42
28
  * utilities read the fields via the optional accessor and fall back when
43
29
  * absent.
30
+ *
31
+ * @evidence contracts/common.md#principled-implementation The plain metadata carries baked members the legacy class computed by methods, and each is optional because nested metadata does not carry them.
32
+ * @evidence contracts/common.md#clear-and-simple-design One extending interface.
33
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
34
+ * @evidence contracts/common.md#meaningful-documentation The comment states the baked fields.
35
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
44
36
  */
45
37
  export interface IReflectMetadata extends IMetadataSchema {
46
38
  size?: number;
@@ -49,6 +41,16 @@ export interface IReflectMetadata extends IMetadataSchema {
49
41
  jsonSchema?: IReflectJsonSchema;
50
42
  }
51
43
 
44
+ /**
45
+ * The JSON schema that the transform bakes beside a metadata: the version, the
46
+ * components, the schema, and the schema of each property.
47
+ *
48
+ * @evidence contracts/common.md#principled-implementation The bake is data produced by the Go side, so the record only names its parts.
49
+ * @evidence contracts/common.md#clear-and-simple-design A record.
50
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
51
+ * @evidence contracts/common.md#meaningful-documentation The comment and its members state what each part is.
52
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
53
+ */
52
54
  export interface IReflectJsonSchema {
53
55
  version: "3.0" | "3.1";
54
56
  components: OpenApi.IComponents;
@@ -72,6 +74,12 @@ export interface IReflectJsonSchema {
72
74
  * Cross-reference dictionary produced by `MetadataComponents.from`. Each map is
73
75
  * keyed by the entry's `.name`, matching the lookup pattern the legacy
74
76
  * `MetadataComponents.dictionary` getter offered.
77
+ *
78
+ * @evidence contracts/common.md#principled-implementation Four maps by kind let a reference be resolved by name in constant time.
79
+ * @evidence contracts/common.md#clear-and-simple-design A four-member record.
80
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
81
+ * @evidence contracts/common.md#meaningful-documentation The comment states the four kinds.
82
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
75
83
  */
76
84
  export interface IMetadataDictionary {
77
85
  objects: Map<string, IMetadataSchema.IObjectType>;
@@ -84,25 +92,110 @@ export interface IMetadataDictionary {
84
92
  // Type aliases — the legacy class names ↔ typia v13 plain interfaces.
85
93
  // ---------------------------------------------------------------------
86
94
 
95
+ /**
96
+ * The name the SDK uses for a metadata schema.
97
+ *
98
+ * @evidence contracts/common.md#principled-implementation The alias maps the legacy class name to the plain interface of typia, so the generators keep their names.
99
+ * @evidence contracts/common.md#clear-and-simple-design One alias.
100
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
101
+ * @evidence contracts/common.md#meaningful-documentation The comment states what the alias stands for.
102
+ */
87
103
  export type MetadataSchema = IMetadataSchema;
104
+ /**
105
+ * The components of a metadata together with their dictionary.
106
+ *
107
+ * @evidence contracts/common.md#principled-implementation The intersection adds the name index to the plain components.
108
+ * @evidence contracts/common.md#clear-and-simple-design One intersection type and a namespace with one builder.
109
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior. The builder only indexes.
110
+ * @evidence contracts/common.md#meaningful-documentation The comment states the added dictionary.
111
+ */
88
112
  export type MetadataComponents = IMetadataComponents & {
89
113
  dictionary: IMetadataDictionary;
90
114
  };
115
+ /**
116
+ * The name the SDK uses for an alias type.
117
+ *
118
+ * @evidence contracts/common.md#principled-implementation The alias maps the legacy class name to the plain interface of typia, so the generators keep their names.
119
+ * @evidence contracts/common.md#clear-and-simple-design One alias.
120
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
121
+ * @evidence contracts/common.md#meaningful-documentation The comment states what the alias stands for.
122
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
123
+ */
91
124
  export type MetadataAliasType = IMetadataSchema.IAliasType;
125
+ /**
126
+ * The name the SDK uses for an array type.
127
+ *
128
+ * @evidence contracts/common.md#principled-implementation The alias maps the legacy class name to the plain interface of typia, so the generators keep their names.
129
+ * @evidence contracts/common.md#clear-and-simple-design One alias.
130
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
131
+ * @evidence contracts/common.md#meaningful-documentation The comment states what the alias stands for.
132
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
133
+ */
92
134
  export type MetadataArrayType = IMetadataSchema.IArrayType;
135
+ /**
136
+ * The name the SDK uses for a tuple type.
137
+ *
138
+ * @evidence contracts/common.md#principled-implementation The alias maps the legacy class name to the plain interface of typia, so the generators keep their names.
139
+ * @evidence contracts/common.md#clear-and-simple-design One alias.
140
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
141
+ * @evidence contracts/common.md#meaningful-documentation The comment states what the alias stands for.
142
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
143
+ */
93
144
  export type MetadataTupleType = IMetadataSchema.ITupleType;
145
+ /**
146
+ * The name the SDK uses for an object type.
147
+ *
148
+ * @evidence contracts/common.md#principled-implementation The alias maps the legacy class name to the plain interface of typia, so the generators keep their names.
149
+ * @evidence contracts/common.md#clear-and-simple-design One alias.
150
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
151
+ * @evidence contracts/common.md#meaningful-documentation The comment states what the alias stands for.
152
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
153
+ */
94
154
  export type MetadataObjectType = IMetadataSchema.IObjectType;
155
+ /**
156
+ * The name the SDK uses for an atomic type.
157
+ *
158
+ * @evidence contracts/common.md#principled-implementation The alias maps the legacy class name to the plain interface of typia, so the generators keep their names.
159
+ * @evidence contracts/common.md#clear-and-simple-design One alias.
160
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
161
+ * @evidence contracts/common.md#meaningful-documentation The comment states what the alias stands for.
162
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
163
+ */
95
164
  export type MetadataAtomic = IMetadataSchema.IAtomic;
96
165
  /**
97
166
  * Flattened constant-value shape: typia v13 splits `IConstant.IValue<T>` by the
98
167
  * atomic discriminator, but sdk's literal writer just needs the runtime `value`
99
168
  * payload, so collapse the union to a single ergonomic shape.
169
+ *
170
+ * @evidence contracts/common.md#principled-implementation The generators need only the value payload, so the union is collapsed into one shape.
171
+ * @evidence contracts/common.md#clear-and-simple-design A two-member record.
172
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
173
+ * @evidence contracts/common.md#meaningful-documentation The comment states the flattening.
174
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
100
175
  */
101
176
  export interface MetadataConstantValue {
102
177
  value: string | number | bigint | boolean;
103
178
  tags: IMetadataTypeTag[][];
104
179
  }
180
+ /**
181
+ * The name the SDK uses for an escaped type.
182
+ *
183
+ * @evidence contracts/common.md#principled-implementation The alias maps the legacy class name to the plain interface of typia, so the generators keep their names.
184
+ * @evidence contracts/common.md#clear-and-simple-design One alias.
185
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
186
+ * @evidence contracts/common.md#meaningful-documentation The comment states what the alias stands for.
187
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
188
+ */
105
189
  export type MetadataEscaped = IMetadataSchema.IEscaped;
190
+ /**
191
+ * The name the SDK uses for an object property.
192
+ *
193
+ * @evidence contracts/common.md#principled-implementation The alias maps the legacy class name to the plain interface of typia, so the generators keep their names.
194
+ * @evidence contracts/common.md#clear-and-simple-design One alias.
195
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
196
+ * @evidence contracts/common.md#meaningful-documentation The comment states what the alias stands for.
197
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
198
+ */
106
199
  export type MetadataProperty = IMetadataSchema.IProperty;
107
200
 
108
201
  /**
@@ -112,16 +205,49 @@ export type MetadataProperty = IMetadataSchema.IProperty;
112
205
  * dictionary. `MetadataSchema.from` walks the metadata tree once and attaches
113
206
  * the resolved `.type` field so downstream sdk code can keep its `ref.type`
114
207
  * access pattern.
208
+ *
209
+ * @evidence contracts/common.md#principled-implementation The reference is the plain interface plus the `type` that `MetadataSchema.from` resolves against the dictionary.
210
+ * @evidence contracts/common.md#clear-and-simple-design One intersection type.
211
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
212
+ * @evidence contracts/common.md#meaningful-documentation The comment states the resolved member.
213
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
115
214
  */
116
215
  export type MetadataArray = IMetadataSchema.IReference & {
117
216
  type: MetadataArrayType;
118
217
  };
218
+ /**
219
+ * A reference to a named tuple type, with the resolved type attached.
220
+ *
221
+ * @evidence contracts/common.md#principled-implementation The reference is the plain interface plus the `type` that `MetadataSchema.from` resolves against the dictionary.
222
+ * @evidence contracts/common.md#clear-and-simple-design One intersection type.
223
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
224
+ * @evidence contracts/common.md#meaningful-documentation The comment states the resolved member.
225
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
226
+ */
119
227
  export type MetadataTuple = IMetadataSchema.IReference & {
120
228
  type: MetadataTupleType;
121
229
  };
230
+ /**
231
+ * A reference to a named object type, with the resolved type attached.
232
+ *
233
+ * @evidence contracts/common.md#principled-implementation The reference is the plain interface plus the `type` that `MetadataSchema.from` resolves against the dictionary.
234
+ * @evidence contracts/common.md#clear-and-simple-design One intersection type.
235
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
236
+ * @evidence contracts/common.md#meaningful-documentation The comment states the resolved member.
237
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
238
+ */
122
239
  export type MetadataObject = IMetadataSchema.IReference & {
123
240
  type: MetadataObjectType;
124
241
  };
242
+ /**
243
+ * A reference to a named alias type, with the resolved type attached.
244
+ *
245
+ * @evidence contracts/common.md#principled-implementation The reference is the plain interface plus the `type` that `MetadataSchema.from` resolves against the dictionary.
246
+ * @evidence contracts/common.md#clear-and-simple-design One intersection type.
247
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
248
+ * @evidence contracts/common.md#meaningful-documentation The comment states the resolved member.
249
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
250
+ */
125
251
  export type MetadataAlias = IMetadataSchema.IReference & {
126
252
  type: MetadataAliasType;
127
253
  };
@@ -130,19 +256,39 @@ export type MetadataAlias = IMetadataSchema.IReference & {
130
256
  // Metadata utility functions — read pre-baked fields, no class wrapping.
131
257
  // ---------------------------------------------------------------------
132
258
 
133
- /** `MetadataSchema.size()` → reads the pre-baked `size` field. */
259
+ /**
260
+ * `MetadataSchema.size()` → reads the pre-baked `size` field.
261
+ *
262
+ * @evidence contracts/common.md#principled-implementation The transform bakes the size, which replaces a method of the legacy class.
263
+ * @evidence contracts/common.md#clear-and-simple-design One read.
264
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It reads the baked field.
265
+ * @evidence contracts/common.md#meaningful-documentation The comment states the fallback.
266
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
267
+ */
134
268
  export const sizeOf = (m: IMetadataSchema): number =>
135
269
  (m as IReflectMetadata).size ?? 0;
136
270
 
137
- /** `MetadataSchema.getName()` → reads the pre-baked `name` field. */
271
+ /**
272
+ * `MetadataSchema.getName()` → reads the pre-baked `name` field.
273
+ *
274
+ * @evidence contracts/common.md#principled-implementation The transform bakes the name, which replaces a method of the legacy class.
275
+ * @evidence contracts/common.md#clear-and-simple-design One read.
276
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It reads the baked field.
277
+ * @evidence contracts/common.md#meaningful-documentation The comment states the fallback.
278
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
279
+ */
138
280
  export const nameOf = (m: IMetadataSchema): string =>
139
281
  (m as IReflectMetadata).name ?? "";
140
282
 
141
- /** `MetadataSchema.empty()` → reads the pre-baked `empty` field. */
142
- export const emptyOf = (m: IMetadataSchema): boolean =>
143
- (m as IReflectMetadata).empty ?? false;
144
-
145
- /** A property is required only when neither omission nor undefined is allowed. */
283
+ /**
284
+ * A property is required only when neither omission nor undefined is allowed.
285
+ *
286
+ * @evidence contracts/common.md#principled-implementation Both flags must exclude absence, so the conjunction with the negated optional flag is the definition.
287
+ * @evidence contracts/common.md#clear-and-simple-design One expression.
288
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It reads two flags.
289
+ * @evidence contracts/common.md#meaningful-documentation The comment states the definition.
290
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
291
+ */
146
292
  export const isRequiredOf = (m: IMetadataSchema): boolean =>
147
293
  m.required && !m.optional;
148
294
 
@@ -154,6 +300,12 @@ export const isRequiredOf = (m: IMetadataSchema): boolean =>
154
300
  * (`"Infinity"`), both as strings. `type` is the constant's type, which is its
155
301
  * value's own, so a bigint or number constant's string is always one of those;
156
302
  * every other value is returned as it is.
303
+ *
304
+ * @evidence contracts/common.md#principled-implementation JSON holds neither bigint nor a non-finite number, so those are carried as strings and converted back by the constant's own type.
305
+ * @evidence contracts/common.md#clear-and-simple-design One conditional.
306
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts The conversion follows the documented encoding.
307
+ * @evidence contracts/common.md#meaningful-documentation The comment states the encoding.
308
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
157
309
  */
158
310
  export const decodeMetadataValue = (type: string, value: unknown): unknown =>
159
311
  typeof value !== "string"
@@ -171,6 +323,12 @@ export const decodeMetadataValue = (type: string, value: unknown): unknown =>
171
323
  * a bigint holds a number, and `tags.Example<"Infinity">` on a number holds a
172
324
  * string. So a value encoded as a string, a bigint's digits or a non-finite
173
325
  * number's name, arrives with the type it stands for in `encoding`.
326
+ *
327
+ * @evidence contracts/common.md#principled-implementation A tag's target is the type it tags, so a value carried as a string states the type it stands for in `encoding`.
328
+ * @evidence contracts/common.md#clear-and-simple-design One conditional over `decodeMetadataValue`.
329
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It follows the documented encoding.
330
+ * @evidence contracts/common.md#meaningful-documentation The comment states why the encoding exists.
331
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
174
332
  */
175
333
  export const decodeTagValue = (
176
334
  tag: IMetadataTypeTag & { encoding?: "bigint" | "number" },
@@ -184,6 +342,12 @@ export const decodeTagValue = (
184
342
  * the schema represents exactly one constant literal value and nothing else.
185
343
  * Used by sdk's type printer to fall back to literal emission instead of a
186
344
  * union.
345
+ *
346
+ * @evidence contracts/common.md#principled-implementation Every other form must be empty, the metadata must not be nullable, any, rest, or escaped, and there must be one constant with one value.
347
+ * @evidence contracts/common.md#clear-and-simple-design One function of guards.
348
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts The list of forms is exhaustive over the metadata's members.
349
+ * @evidence contracts/common.md#meaningful-documentation The comment states the meaning.
350
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
187
351
  */
188
352
  export const isSoleLiteralOf = (m: IMetadataSchema): boolean => {
189
353
  if (m.any) return false;
@@ -208,7 +372,22 @@ export const isSoleLiteralOf = (m: IMetadataSchema): boolean => {
208
372
  // `MetadataComponents.from(plain)` — namespace utility, not a class.
209
373
  // ---------------------------------------------------------------------
210
374
 
375
+ /**
376
+ * Indexes metadata component names in memory; component names are symbolic type
377
+ * identities rather than native pathnames.
378
+ *
379
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation Indexes metadata component names in memory; component names are symbolic type identities rather than native pathnames.
380
+ */
211
381
  export namespace MetadataComponents {
382
+ /**
383
+ * Builds the components with a dictionary indexing each kind by name.
384
+ *
385
+ * @evidence contracts/common.md#principled-implementation Each kind is a map from name to type, and the plain components are kept beside it.
386
+ * @evidence contracts/common.md#clear-and-simple-design One function.
387
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It only indexes.
388
+ * @evidence contracts/common.md#meaningful-documentation The comment states the result.
389
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
390
+ */
212
391
  export const from = (plain: IMetadataComponents): MetadataComponents => {
213
392
  const dictionary: IMetadataDictionary = {
214
393
  objects: new Map(plain.objects.map((o) => [o.name, o])),
@@ -224,6 +403,12 @@ export namespace MetadataComponents {
224
403
  // `MetadataSchema.from(plain, dictionary)` — reference resolution.
225
404
  // ---------------------------------------------------------------------
226
405
 
406
+ /**
407
+ * Resolves symbolic type references in a metadata graph; dictionary lookup owns
408
+ * no native file or process boundary.
409
+ *
410
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation Resolves symbolic type references in a metadata graph; dictionary lookup owns no native file or process boundary.
411
+ */
227
412
  export namespace MetadataSchema {
228
413
  /**
229
414
  * Walks the metadata tree and attaches the resolved `.type` field to every
@@ -231,6 +416,12 @@ export namespace MetadataSchema {
231
416
  * index. This is idempotent — references whose `.type` has already been
232
417
  * resolved are left alone — and mutates the input, matching the in-place
233
418
  * resolution model `@typia/core` 12.x used.
419
+ *
420
+ * @evidence contracts/common.md#principled-implementation The walk tracks visited targets, not wrapper schemas, because wrappers are rebuilt on this side and are not shared, so a cyclic type such as a node with children terminates.
421
+ * @evidence contracts/common.md#clear-and-simple-design One function over two private walkers.
422
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts The in-place mutation is documented and is confined to the metadata the analysis owns.
423
+ * @evidence contracts/common.md#meaningful-documentation The comment states the mutation, the idempotence, and the cycle rule.
424
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
234
425
  */
235
426
  export const from = (
236
427
  plain: IMetadataSchema,
@@ -312,18 +503,56 @@ const attachReferences = <Target extends { name: string }>(
312
503
  // are SDK-policy choices that the SDK still has to flag itself.
313
504
  // ---------------------------------------------------------------------
314
505
 
506
+ /**
507
+ * Validation of a metadata by a policy function.
508
+ *
509
+ * @evidence contracts/common.md#principled-implementation The namespace walks the metadata once and collects the messages of the validator, and holds the types of the walk.
510
+ * @evidence contracts/common.md#clear-and-simple-design One function and three types.
511
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts The policies are the callers'.
512
+ * @evidence contracts/common.md#meaningful-documentation The comment states its purpose.
513
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
514
+ */
315
515
  export namespace MetadataFactory {
516
+ /**
517
+ * Where a node is: its object, property, parameter, and whether it is an
518
+ * output.
519
+ *
520
+ * @evidence contracts/common.md#principled-implementation The record locates a visited node for the error report.
521
+ * @evidence contracts/common.md#clear-and-simple-design A four-member record.
522
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
523
+ * @evidence contracts/common.md#meaningful-documentation The comment states the members.
524
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
525
+ */
316
526
  export interface IExplore {
317
527
  object: IMetadataSchema.IObjectType | null;
318
528
  property: string | null;
319
529
  parameter: string | null;
320
530
  output: boolean;
321
531
  }
532
+ /**
533
+ * A validation error: the name of the type, where it is, and the messages.
534
+ *
535
+ * @evidence contracts/common.md#principled-implementation The record is one violation of the policy.
536
+ * @evidence contracts/common.md#clear-and-simple-design A three-member record.
537
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
538
+ * @evidence contracts/common.md#meaningful-documentation The comment states the members.
539
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
540
+ */
322
541
  export interface IError {
323
542
  name: string;
324
543
  explore: IExplore;
325
544
  messages: string[];
326
545
  }
546
+ /**
547
+ * A policy: it receives a node and its location and returns the messages of
548
+ * the violations, if any.
549
+ *
550
+ * @evidence contracts/common.md#principled-implementation The function type is the whole contract of a policy.
551
+ * @evidence contracts/common.md#clear-and-simple-design One function type.
552
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
553
+ * @evidence contracts/common.md#meaningful-documentation The comment states the arguments and the result.
554
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
555
+ */
327
556
  export type Validator = (props: {
328
557
  metadata: IMetadataSchema;
329
558
  explore: IExplore;
@@ -337,9 +566,14 @@ export namespace MetadataFactory {
337
566
  * walker, kept lean: the typia native transform has already validated
338
567
  * structural invariants, so the validator is only called for SDK-side policy
339
568
  * checks (JSON-serializability, query/header atomic-only rules, …).
569
+ *
570
+ * @evidence contracts/common.md#principled-implementation The walk visits objects, arrays, tuples, aliases, and escaped types through their resolved references, tracking visited targets rather than wrappers, and reports each node with the location of its property.
571
+ * @evidence contracts/common.md#clear-and-simple-design One function with one recursive visitor.
572
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It calls only the caller's policy.
573
+ * @evidence contracts/common.md#meaningful-documentation The comment states the walk and the termination.
574
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
340
575
  */
341
576
  export const validate = (props: {
342
- options?: unknown;
343
577
  functor: Validator;
344
578
  metadata: IMetadataSchema;
345
579
  }): IError[] => {
@@ -417,6 +651,15 @@ export namespace MetadataFactory {
417
651
  };
418
652
  }
419
653
 
654
+ /**
655
+ * The JSON policy of the SDK.
656
+ *
657
+ * @evidence contracts/common.md#principled-implementation The namespace holds the validator that rejects types JSON cannot carry.
658
+ * @evidence contracts/common.md#clear-and-simple-design One function.
659
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts The rule is JSON's.
660
+ * @evidence contracts/common.md#meaningful-documentation The comment states its purpose.
661
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
662
+ */
420
663
  export namespace JsonMetadataFactory {
421
664
  /**
422
665
  * Rejects metadata that cannot be losslessly JSON-serialized. The typia
@@ -424,6 +667,12 @@ export namespace JsonMetadataFactory {
424
667
  * only adds the JSON-policy bans the legacy `@typia/core` walker enforced —
425
668
  * bare `bigint` payloads, function-typed properties, and `Map` / `Set`
426
669
  * containers that have no canonical JSON representation.
670
+ *
671
+ * @evidence contracts/common.md#principled-implementation JSON has no representation for those four forms, so each is a violation, and other structural problems are already rejected by the transform.
672
+ * @evidence contracts/common.md#clear-and-simple-design One function of four checks.
673
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts The list is the JSON limitation.
674
+ * @evidence contracts/common.md#meaningful-documentation The comment states the four bans.
675
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
427
676
  */
428
677
  export const validate: MetadataFactory.Validator = (props) => {
429
678
  const messages: string[] = [];
@@ -444,6 +693,15 @@ export namespace JsonMetadataFactory {
444
693
  // pre-baked `jsonSchema` field the nestia transform emits.
445
694
  // ---------------------------------------------------------------------
446
695
 
696
+ /**
697
+ * Produces the JSON schemas of metadata from what the transform baked.
698
+ *
699
+ * @evidence contracts/common.md#principled-implementation The namespace copies the baked schemas and components, and falls back to a small converter for metadata without a bake.
700
+ * @evidence contracts/common.md#clear-and-simple-design Two functions with a private converter.
701
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts The copies keep one composition from editing another's data.
702
+ * @evidence contracts/common.md#meaningful-documentation The comment states its purpose.
703
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
704
+ */
447
705
  export namespace JsonSchemasProgrammer {
448
706
  /**
449
707
  * Consumes the per-metadata `jsonSchema` field the nestia transform
@@ -455,9 +713,15 @@ export namespace JsonSchemasProgrammer {
455
713
  *
456
714
  * The schemas and components are copies. The bake belongs to the route
457
715
  * metadata, which every composition in the process reads, while the composer
458
- * edits what it is given in place (the readonly-array emender), and so can a
459
- * `SwaggerCustomizer`; handing the bake out by reference let each document
460
- * inherit the previous one's edits.
716
+ * may edit what it is given in place, and so can a `SwaggerCustomizer`;
717
+ * handing the bake out by reference let each document inherit the previous
718
+ * one's edits.
719
+ *
720
+ * @evidence contracts/common.md#principled-implementation The bake belongs to route metadata that every composition reads while the composer edits its input in place, so copies are returned, and the components are copied once after the last bake of each name wins.
721
+ * @evidence contracts/common.md#clear-and-simple-design One function.
722
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts The fallback is stated as weaker than the bake.
723
+ * @evidence contracts/common.md#meaningful-documentation The comment states the copies and the fallback.
724
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
461
725
  */
462
726
  export const writeSchemas = (props: {
463
727
  version: "3.0" | "3.1";
@@ -498,6 +762,12 @@ export namespace JsonSchemasProgrammer {
498
762
  * entry for the property, because typia's object schema omits it, so no
499
763
  * parameter describes it either. Only metadata the transform did not bake
500
764
  * falls back to {@link writeSchemas} over the property value.
765
+ *
766
+ * @evidence contracts/common.md#principled-implementation The property schemas are baked beside the metadata's own schema and resolved against the same components, copied for the same reason as `writeSchemas`, and a bake without the property means typia omits it.
767
+ * @evidence contracts/common.md#clear-and-simple-design One function.
768
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts Only metadata without a bake falls back.
769
+ * @evidence contracts/common.md#meaningful-documentation The comment states the result and the null case.
770
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation This metadata adapter represents schema values, named type references and validation results in memory. It neither interprets native pathname identity nor opens files or launches processes.
501
771
  */
502
772
  export const writeProperty = (props: {
503
773
  version: "3.0" | "3.1";
@@ -2,6 +2,16 @@ import { INestiaConfig } from "../INestiaConfig";
2
2
  import { INestiaSdkInput } from "./INestiaSdkInput";
3
3
  import { IReflectOperationError } from "./IReflectOperationError";
4
4
 
5
+ /**
6
+ * The state of one generation: the configuration, the analyzed input, and the
7
+ * collected errors and warnings.
8
+ *
9
+ * @evidence contracts/common.md#principled-implementation The analyses append to the two lists and the generators run only when the error list is empty.
10
+ * @evidence contracts/common.md#clear-and-simple-design A flat record with no behavior.
11
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
12
+ * @evidence contracts/common.md#meaningful-documentation The comment states what the type describes; its members are named for their meaning.
13
+ * @evidence contracts/portability.md#os-neutral-implementation Configuration pathnames remain in INestiaConfig and controller source identities remain in INestiaSdkInput; this project record carries both unchanged without converting URL spelling into native identity.
14
+ */
5
15
  export interface INestiaProject {
6
16
  config: INestiaConfig;
7
17
  input: INestiaSdkInput;
@@ -1,6 +1,16 @@
1
1
  import { RequestMethod } from "@nestjs/common";
2
2
  import { VersionValue } from "@nestjs/common/interfaces";
3
3
 
4
+ /**
5
+ * The analyzed input: the controllers, the global prefix with its exclusions,
6
+ * and the URI versioning options.
7
+ *
8
+ * @evidence contracts/common.md#principled-implementation The record is the common result of compiling sources and of reading a running application.
9
+ * @evidence contracts/common.md#clear-and-simple-design A flat record with no behavior.
10
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
11
+ * @evidence contracts/common.md#meaningful-documentation The comment states what the type describes; its members are named for their meaning.
12
+ * @evidence contracts/portability.md#os-neutral-implementation Controller location is a native source pathname supplied by ConfigAnalyzer; prefixes, exclusions and versions are router protocol strings, not filesystem paths.
13
+ */
4
14
  export interface INestiaSdkInput {
5
15
  controllers: INestiaSdkInput.IController[];
6
16
  globalPrefix?: {
@@ -13,11 +23,31 @@ export interface INestiaSdkInput {
13
23
  };
14
24
  }
15
25
  export namespace INestiaSdkInput {
26
+ /**
27
+ * A controller class with its source file and the module prefixes it is
28
+ * mounted under.
29
+ *
30
+ * @evidence contracts/common.md#principled-implementation The three members are what the reflection needs to analyze one controller and to report its errors by file.
31
+ * @evidence contracts/common.md#clear-and-simple-design A flat record with no behavior.
32
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
33
+ * @evidence contracts/common.md#meaningful-documentation The comment states what the type describes; its members are named for their meaning.
34
+ * @evidence contracts/portability.md#os-neutral-implementation location carries the native source pathname resolved by ConfigAnalyzer, while prefixes are HTTP mount paths; the two representations are not normalized together.
35
+ */
16
36
  export interface IController {
17
37
  class: Function;
18
38
  location: string;
19
39
  prefixes: string[];
20
40
  }
41
+ /**
42
+ * A route excluded from the global prefix, by path, or by pattern, and
43
+ * optionally by request method.
44
+ *
45
+ * @evidence contracts/common.md#principled-implementation The members mirror NestJS's exclusion entry, so the same match decides here and in the server.
46
+ * @evidence contracts/common.md#clear-and-simple-design A flat record with no behavior.
47
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
48
+ * @evidence contracts/common.md#meaningful-documentation The comment states what the type describes; its members are named for their meaning.
49
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation INestiaSdkInput.IGlobalPrefixExclude describes protocol or type metadata; any embedded import/source record preserves the identity supplied by its owner. This declaration defines no native path conversion or process boundary.
50
+ */
21
51
  export interface IGlobalPrefixExclude {
22
52
  path: string;
23
53
  method?: RequestMethod;