@azure-tools/typespec-ts 0.55.0-dev.1 → 0.55.0-dev.10

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 (940) hide show
  1. package/README.md +68 -105
  2. package/dist/src/context-manager.d.ts +75 -0
  3. package/dist/src/context-manager.d.ts.map +1 -0
  4. package/dist/src/context-manager.js +59 -0
  5. package/dist/src/context-manager.js.map +1 -0
  6. package/dist/src/framework/hooks/binder.d.ts +1 -1
  7. package/dist/src/framework/hooks/binder.d.ts.map +1 -1
  8. package/dist/src/framework/hooks/binder.js +6 -7
  9. package/dist/src/framework/hooks/binder.js.map +1 -1
  10. package/dist/src/framework/hooks/sdk-types.d.ts +26 -0
  11. package/dist/src/framework/hooks/sdk-types.d.ts.map +1 -0
  12. package/dist/src/framework/hooks/sdk-types.js +157 -0
  13. package/dist/src/framework/hooks/sdk-types.js.map +1 -0
  14. package/dist/src/framework/hooks/use-dependencies.d.ts +4 -0
  15. package/dist/src/framework/hooks/use-dependencies.d.ts.map +1 -0
  16. package/dist/src/framework/hooks/use-dependencies.js +13 -0
  17. package/dist/src/framework/hooks/use-dependencies.js.map +1 -0
  18. package/dist/src/framework/load-static-helpers.d.ts +4 -1
  19. package/dist/src/framework/load-static-helpers.d.ts.map +1 -1
  20. package/dist/src/framework/load-static-helpers.js +26 -34
  21. package/dist/src/framework/load-static-helpers.js.map +1 -1
  22. package/dist/src/framework/sample.js +1 -1
  23. package/dist/src/framework/sample.js.map +1 -1
  24. package/dist/src/index.d.ts.map +1 -1
  25. package/dist/src/index.js +126 -192
  26. package/dist/src/index.js.map +1 -1
  27. package/dist/src/lib.d.ts +2 -18
  28. package/dist/src/lib.d.ts.map +1 -1
  29. package/dist/src/lib.js +30 -124
  30. package/dist/src/lib.js.map +1 -1
  31. package/dist/src/meta-tree.d.ts +7 -0
  32. package/dist/src/meta-tree.d.ts.map +1 -0
  33. package/dist/src/meta-tree.js +2 -0
  34. package/dist/src/meta-tree.js.map +1 -0
  35. package/dist/src/modular/build-classical-client.d.ts +6 -0
  36. package/dist/src/modular/build-classical-client.d.ts.map +1 -0
  37. package/dist/src/modular/build-classical-client.js +345 -0
  38. package/dist/src/modular/build-classical-client.js.map +1 -0
  39. package/dist/src/modular/build-classical-operation-groups.d.ts +6 -0
  40. package/dist/src/modular/build-classical-operation-groups.d.ts.map +1 -0
  41. package/dist/src/modular/build-classical-operation-groups.js +48 -0
  42. package/dist/src/modular/build-classical-operation-groups.js.map +1 -0
  43. package/dist/src/modular/build-client-context.d.ts +13 -0
  44. package/dist/src/modular/build-client-context.d.ts.map +1 -0
  45. package/dist/src/modular/build-client-context.js +237 -0
  46. package/dist/src/modular/build-client-context.js.map +1 -0
  47. package/dist/src/modular/build-modular-options.d.ts +6 -0
  48. package/dist/src/modular/build-modular-options.d.ts.map +1 -0
  49. package/dist/src/modular/build-modular-options.js +14 -0
  50. package/dist/src/modular/build-modular-options.js.map +1 -0
  51. package/dist/src/modular/build-operations.d.ts +21 -0
  52. package/dist/src/modular/build-operations.d.ts.map +1 -0
  53. package/dist/src/modular/build-operations.js +172 -0
  54. package/dist/src/modular/build-operations.js.map +1 -0
  55. package/dist/src/modular/build-project-files.d.ts +4 -0
  56. package/dist/src/modular/build-project-files.d.ts.map +1 -0
  57. package/dist/src/modular/build-project-files.js +91 -0
  58. package/dist/src/modular/build-project-files.js.map +1 -0
  59. package/dist/src/modular/build-restore-poller.d.ts +5 -0
  60. package/dist/src/modular/build-restore-poller.d.ts.map +1 -0
  61. package/dist/src/modular/build-restore-poller.js +216 -0
  62. package/dist/src/modular/build-restore-poller.js.map +1 -0
  63. package/dist/src/modular/build-root-index.d.ts +13 -0
  64. package/dist/src/modular/build-root-index.d.ts.map +1 -0
  65. package/dist/src/modular/build-root-index.js +275 -0
  66. package/dist/src/modular/build-root-index.js.map +1 -0
  67. package/dist/src/modular/build-subpath-index.d.ts +16 -0
  68. package/dist/src/modular/build-subpath-index.d.ts.map +1 -0
  69. package/dist/src/modular/build-subpath-index.js +119 -0
  70. package/dist/src/modular/build-subpath-index.js.map +1 -0
  71. package/dist/src/modular/emit-logger-file.d.ts +3 -0
  72. package/dist/src/modular/emit-logger-file.d.ts.map +1 -0
  73. package/dist/src/modular/emit-logger-file.js +15 -0
  74. package/dist/src/modular/emit-logger-file.js.map +1 -0
  75. package/dist/src/modular/emit-models-options.d.ts +5 -0
  76. package/dist/src/modular/emit-models-options.d.ts.map +1 -0
  77. package/dist/src/modular/emit-models-options.js +35 -0
  78. package/dist/src/modular/emit-models-options.js.map +1 -0
  79. package/dist/src/modular/emit-models.d.ts +23 -0
  80. package/dist/src/modular/emit-models.d.ts.map +1 -0
  81. package/dist/src/modular/emit-models.js +849 -0
  82. package/dist/src/modular/emit-models.js.map +1 -0
  83. package/dist/src/modular/emit-samples.d.ts +7 -0
  84. package/dist/src/modular/emit-samples.d.ts.map +1 -0
  85. package/dist/src/modular/emit-samples.js +482 -0
  86. package/dist/src/modular/emit-samples.js.map +1 -0
  87. package/dist/src/modular/emit-tests.d.ts +8 -0
  88. package/dist/src/modular/emit-tests.d.ts.map +1 -0
  89. package/dist/src/modular/emit-tests.js +165 -0
  90. package/dist/src/modular/emit-tests.js.map +1 -0
  91. package/dist/src/modular/helpers/classical-operation-helpers.d.ts +7 -0
  92. package/dist/src/modular/helpers/classical-operation-helpers.d.ts.map +1 -0
  93. package/dist/src/modular/helpers/classical-operation-helpers.js +258 -0
  94. package/dist/src/modular/helpers/classical-operation-helpers.js.map +1 -0
  95. package/dist/src/modular/helpers/client-helpers.d.ts +34 -0
  96. package/dist/src/modular/helpers/client-helpers.d.ts.map +1 -0
  97. package/dist/src/modular/helpers/client-helpers.js +249 -0
  98. package/dist/src/modular/helpers/client-helpers.js.map +1 -0
  99. package/dist/src/modular/helpers/client-option-helpers.d.ts +43 -0
  100. package/dist/src/modular/helpers/client-option-helpers.d.ts.map +1 -0
  101. package/dist/src/modular/helpers/client-option-helpers.js +103 -0
  102. package/dist/src/modular/helpers/client-option-helpers.js.map +1 -0
  103. package/dist/src/modular/helpers/docs-helpers.d.ts +3 -0
  104. package/dist/src/modular/helpers/docs-helpers.d.ts.map +1 -0
  105. package/dist/src/modular/helpers/docs-helpers.js +10 -0
  106. package/dist/src/modular/helpers/docs-helpers.js.map +1 -0
  107. package/dist/src/modular/helpers/example-value-helpers.d.ts +83 -0
  108. package/dist/src/modular/helpers/example-value-helpers.d.ts.map +1 -0
  109. package/dist/src/modular/helpers/example-value-helpers.js +622 -0
  110. package/dist/src/modular/helpers/example-value-helpers.js.map +1 -0
  111. package/dist/src/modular/helpers/naming-helpers.d.ts +22 -0
  112. package/dist/src/modular/helpers/naming-helpers.d.ts.map +1 -0
  113. package/dist/src/modular/helpers/naming-helpers.js +59 -0
  114. package/dist/src/modular/helpers/naming-helpers.js.map +1 -0
  115. package/dist/src/modular/helpers/operation-helpers.d.ts +105 -0
  116. package/dist/src/modular/helpers/operation-helpers.d.ts.map +1 -0
  117. package/dist/src/modular/helpers/operation-helpers.js +2328 -0
  118. package/dist/src/modular/helpers/operation-helpers.js.map +1 -0
  119. package/dist/src/modular/helpers/type-helpers.d.ts +22 -0
  120. package/dist/src/modular/helpers/type-helpers.d.ts.map +1 -0
  121. package/dist/src/modular/helpers/type-helpers.js +94 -0
  122. package/dist/src/modular/helpers/type-helpers.js.map +1 -0
  123. package/dist/src/modular/serialization/build-deserializer-function.d.ts +7 -0
  124. package/dist/src/modular/serialization/build-deserializer-function.d.ts.map +1 -0
  125. package/dist/src/modular/serialization/build-deserializer-function.js +401 -0
  126. package/dist/src/modular/serialization/build-deserializer-function.js.map +1 -0
  127. package/dist/src/modular/serialization/build-serializer-function.d.ts +7 -0
  128. package/dist/src/modular/serialization/build-serializer-function.d.ts.map +1 -0
  129. package/dist/src/modular/serialization/build-serializer-function.js +442 -0
  130. package/dist/src/modular/serialization/build-serializer-function.js.map +1 -0
  131. package/dist/src/modular/serialization/build-xml-serializer-function.d.ts +44 -0
  132. package/dist/src/modular/serialization/build-xml-serializer-function.d.ts.map +1 -0
  133. package/dist/src/modular/serialization/build-xml-serializer-function.js +729 -0
  134. package/dist/src/modular/serialization/build-xml-serializer-function.js.map +1 -0
  135. package/dist/src/modular/serialization/serialize-utils.d.ts +37 -0
  136. package/dist/src/modular/serialization/serialize-utils.d.ts.map +1 -0
  137. package/dist/src/modular/serialization/serialize-utils.js +145 -0
  138. package/dist/src/modular/serialization/serialize-utils.js.map +1 -0
  139. package/dist/src/modular/type-expressions/get-credential-expression.js +1 -1
  140. package/dist/src/modular/type-expressions/get-credential-expression.js.map +1 -1
  141. package/dist/src/modular/type-expressions/get-model-expression.js +1 -1
  142. package/dist/src/modular/type-expressions/get-model-expression.js.map +1 -1
  143. package/dist/src/rlc-common/helpers/api-version-util.d.ts +17 -0
  144. package/dist/src/rlc-common/helpers/api-version-util.d.ts.map +1 -0
  145. package/dist/src/rlc-common/helpers/api-version-util.js +43 -0
  146. package/dist/src/rlc-common/helpers/api-version-util.js.map +1 -0
  147. package/dist/src/rlc-common/helpers/imports-util.d.ts +17 -0
  148. package/dist/src/rlc-common/helpers/imports-util.d.ts.map +1 -0
  149. package/dist/src/rlc-common/helpers/imports-util.js +151 -0
  150. package/dist/src/rlc-common/helpers/imports-util.js.map +1 -0
  151. package/dist/src/rlc-common/helpers/name-constructors.d.ts +33 -0
  152. package/dist/src/rlc-common/helpers/name-constructors.d.ts.map +1 -0
  153. package/dist/src/rlc-common/helpers/name-constructors.js +45 -0
  154. package/dist/src/rlc-common/helpers/name-constructors.js.map +1 -0
  155. package/dist/src/rlc-common/helpers/name-utils.d.ts +37 -0
  156. package/dist/src/rlc-common/helpers/name-utils.d.ts.map +1 -0
  157. package/dist/src/rlc-common/helpers/name-utils.js +240 -0
  158. package/dist/src/rlc-common/helpers/name-utils.js.map +1 -0
  159. package/dist/src/rlc-common/helpers/operation-helpers.d.ts +16 -0
  160. package/dist/src/rlc-common/helpers/operation-helpers.d.ts.map +1 -0
  161. package/dist/src/rlc-common/helpers/operation-helpers.js +104 -0
  162. package/dist/src/rlc-common/helpers/operation-helpers.js.map +1 -0
  163. package/dist/src/rlc-common/helpers/schema-helpers.d.ts +10 -0
  164. package/dist/src/rlc-common/helpers/schema-helpers.d.ts.map +1 -0
  165. package/dist/src/rlc-common/helpers/schema-helpers.js +37 -0
  166. package/dist/src/rlc-common/helpers/schema-helpers.js.map +1 -0
  167. package/dist/src/rlc-common/helpers/type-util.d.ts +32 -0
  168. package/dist/src/rlc-common/helpers/type-util.d.ts.map +1 -0
  169. package/dist/src/rlc-common/helpers/type-util.js +162 -0
  170. package/dist/src/rlc-common/helpers/type-util.js.map +1 -0
  171. package/dist/src/rlc-common/index.d.ts +21 -39
  172. package/dist/src/rlc-common/index.d.ts.map +1 -1
  173. package/dist/src/rlc-common/index.js +21 -39
  174. package/dist/src/rlc-common/index.js.map +1 -1
  175. package/dist/src/rlc-common/interfaces.d.ts +2 -20
  176. package/dist/src/rlc-common/interfaces.d.ts.map +1 -1
  177. package/dist/src/rlc-common/interfaces.js.map +1 -1
  178. package/dist/src/rlc-common/metadata/build-api-extractor-config.d.ts +6 -0
  179. package/dist/src/rlc-common/metadata/build-api-extractor-config.d.ts.map +1 -0
  180. package/dist/src/rlc-common/metadata/build-api-extractor-config.js +18 -0
  181. package/dist/src/rlc-common/metadata/build-api-extractor-config.js.map +1 -0
  182. package/dist/src/rlc-common/metadata/build-changelog-file.d.ts +6 -0
  183. package/dist/src/rlc-common/metadata/build-changelog-file.d.ts.map +1 -0
  184. package/dist/src/rlc-common/metadata/build-changelog-file.js +25 -0
  185. package/dist/src/rlc-common/metadata/build-changelog-file.js.map +1 -0
  186. package/dist/src/rlc-common/metadata/build-es-lint-config.d.ts +6 -0
  187. package/dist/src/rlc-common/metadata/build-es-lint-config.d.ts.map +1 -0
  188. package/dist/src/rlc-common/metadata/build-es-lint-config.js +41 -0
  189. package/dist/src/rlc-common/metadata/build-es-lint-config.js.map +1 -0
  190. package/dist/src/rlc-common/metadata/build-license-file.d.ts +5 -0
  191. package/dist/src/rlc-common/metadata/build-license-file.d.ts.map +1 -0
  192. package/dist/src/rlc-common/metadata/build-license-file.js +32 -0
  193. package/dist/src/rlc-common/metadata/build-license-file.js.map +1 -0
  194. package/dist/src/rlc-common/metadata/build-package-file.d.ts +25 -0
  195. package/dist/src/rlc-common/metadata/build-package-file.d.ts.map +1 -0
  196. package/dist/src/rlc-common/metadata/build-package-file.js +149 -0
  197. package/dist/src/rlc-common/metadata/build-package-file.js.map +1 -0
  198. package/dist/src/rlc-common/metadata/build-readme-file.d.ts +11 -0
  199. package/dist/src/rlc-common/metadata/build-readme-file.d.ts.map +1 -0
  200. package/dist/src/rlc-common/metadata/build-readme-file.js +328 -0
  201. package/dist/src/rlc-common/metadata/build-readme-file.js.map +1 -0
  202. package/dist/src/rlc-common/metadata/build-sample-env-file.d.ts +6 -0
  203. package/dist/src/rlc-common/metadata/build-sample-env-file.d.ts.map +1 -0
  204. package/dist/src/rlc-common/metadata/build-sample-env-file.js +14 -0
  205. package/dist/src/rlc-common/metadata/build-sample-env-file.js.map +1 -0
  206. package/dist/src/rlc-common/metadata/build-test-config.d.ts +16 -0
  207. package/dist/src/rlc-common/metadata/build-test-config.d.ts.map +1 -0
  208. package/dist/src/rlc-common/metadata/build-test-config.js +51 -0
  209. package/dist/src/rlc-common/metadata/build-test-config.js.map +1 -0
  210. package/dist/src/rlc-common/metadata/build-ts-config.d.ts +61 -0
  211. package/dist/src/rlc-common/metadata/build-ts-config.d.ts.map +1 -0
  212. package/dist/src/rlc-common/metadata/build-ts-config.js +129 -0
  213. package/dist/src/rlc-common/metadata/build-ts-config.js.map +1 -0
  214. package/dist/src/rlc-common/metadata/build-vitest-config.d.ts +6 -0
  215. package/dist/src/rlc-common/metadata/build-vitest-config.d.ts.map +1 -0
  216. package/dist/src/rlc-common/metadata/build-vitest-config.js +26 -0
  217. package/dist/src/rlc-common/metadata/build-vitest-config.js.map +1 -0
  218. package/dist/src/rlc-common/metadata/build-warp-config.d.ts +20 -0
  219. package/dist/src/rlc-common/metadata/build-warp-config.d.ts.map +1 -0
  220. package/dist/src/rlc-common/metadata/build-warp-config.js +73 -0
  221. package/dist/src/rlc-common/metadata/build-warp-config.js.map +1 -0
  222. package/dist/src/rlc-common/metadata/package-json/azure-package-common.d.ts +14 -0
  223. package/dist/src/rlc-common/metadata/package-json/azure-package-common.d.ts.map +1 -0
  224. package/dist/src/rlc-common/metadata/package-json/azure-package-common.js +14 -0
  225. package/dist/src/rlc-common/metadata/package-json/azure-package-common.js.map +1 -0
  226. package/dist/src/rlc-common/metadata/package-json/build-azure-monorepo-package.d.ts +203 -0
  227. package/dist/src/rlc-common/metadata/package-json/build-azure-monorepo-package.d.ts.map +1 -0
  228. package/dist/src/rlc-common/metadata/package-json/build-azure-monorepo-package.js +155 -0
  229. package/dist/src/rlc-common/metadata/package-json/build-azure-monorepo-package.js.map +1 -0
  230. package/dist/src/rlc-common/metadata/package-json/package-common.d.ts +43 -0
  231. package/dist/src/rlc-common/metadata/package-json/package-common.d.ts.map +1 -0
  232. package/dist/src/rlc-common/metadata/package-json/package-common.js +103 -0
  233. package/dist/src/rlc-common/metadata/package-json/package-common.js.map +1 -0
  234. package/dist/src/rlc-common/static/paginate-content.d.ts +2 -0
  235. package/dist/src/rlc-common/static/paginate-content.d.ts.map +1 -0
  236. package/dist/src/rlc-common/static/paginate-content.js +345 -0
  237. package/dist/src/rlc-common/static/paginate-content.js.map +1 -0
  238. package/dist/src/rlc-common/static/polling-content.d.ts +2 -0
  239. package/dist/src/rlc-common/static/polling-content.d.ts.map +1 -0
  240. package/dist/src/rlc-common/static/polling-content.js +225 -0
  241. package/dist/src/rlc-common/static/polling-content.js.map +1 -0
  242. package/dist/src/rlc-common/static/sample-template.d.ts +2 -0
  243. package/dist/src/rlc-common/static/sample-template.d.ts.map +1 -0
  244. package/dist/src/rlc-common/static/sample-template.js +56 -0
  245. package/dist/src/rlc-common/static/sample-template.js.map +1 -0
  246. package/dist/src/rlc-common/static/serialize-helper.d.ts +6 -0
  247. package/dist/src/rlc-common/static/serialize-helper.d.ts.map +1 -0
  248. package/dist/src/rlc-common/static/serialize-helper.js +31 -0
  249. package/dist/src/rlc-common/static/serialize-helper.js.map +1 -0
  250. package/dist/src/rlc-common/test/build-karma-config.d.ts +6 -0
  251. package/dist/src/rlc-common/test/build-karma-config.d.ts.map +1 -0
  252. package/dist/src/rlc-common/test/build-karma-config.js +11 -0
  253. package/dist/src/rlc-common/test/build-karma-config.js.map +1 -0
  254. package/dist/src/rlc-common/test/build-recorded-client.d.ts +6 -0
  255. package/dist/src/rlc-common/test/build-recorded-client.d.ts.map +1 -0
  256. package/dist/src/rlc-common/test/build-recorded-client.js +14 -0
  257. package/dist/src/rlc-common/test/build-recorded-client.js.map +1 -0
  258. package/dist/src/rlc-common/test/build-sample-test.d.ts +6 -0
  259. package/dist/src/rlc-common/test/build-sample-test.d.ts.map +1 -0
  260. package/dist/src/rlc-common/test/build-sample-test.js +11 -0
  261. package/dist/src/rlc-common/test/build-sample-test.js.map +1 -0
  262. package/dist/src/rlc-common/test/build-snippets.d.ts +6 -0
  263. package/dist/src/rlc-common/test/build-snippets.d.ts.map +1 -0
  264. package/dist/src/rlc-common/test/build-snippets.js +22 -0
  265. package/dist/src/rlc-common/test/build-snippets.js.map +1 -0
  266. package/dist/src/rlc-common/test/template.d.ts +3 -3
  267. package/dist/src/rlc-common/test/template.d.ts.map +1 -1
  268. package/dist/src/rlc-common/test/template.js +1 -35
  269. package/dist/src/rlc-common/test/template.js.map +1 -1
  270. package/dist/src/transform/transform-api-version-info.d.ts +6 -0
  271. package/dist/src/transform/transform-api-version-info.d.ts.map +1 -0
  272. package/dist/src/transform/transform-api-version-info.js +78 -0
  273. package/dist/src/transform/transform-api-version-info.js.map +1 -0
  274. package/dist/src/transform/transform-helper-function-details.d.ts +5 -0
  275. package/dist/src/transform/transform-helper-function-details.d.ts.map +1 -0
  276. package/dist/src/transform/transform-helper-function-details.js +66 -0
  277. package/dist/src/transform/transform-helper-function-details.js.map +1 -0
  278. package/dist/src/transform/transform-parameters.d.ts +14 -0
  279. package/dist/src/transform/transform-parameters.d.ts.map +1 -0
  280. package/dist/src/transform/transform-parameters.js +201 -0
  281. package/dist/src/transform/transform-parameters.js.map +1 -0
  282. package/dist/src/transform/transform-paths.d.ts +5 -0
  283. package/dist/src/transform/transform-paths.d.ts.map +1 -0
  284. package/dist/src/transform/transform-paths.js +102 -0
  285. package/dist/src/transform/transform-paths.js.map +1 -0
  286. package/dist/src/transform/transform-responses.d.ts +5 -0
  287. package/dist/src/transform/transform-responses.d.ts.map +1 -0
  288. package/dist/src/transform/transform-responses.js +171 -0
  289. package/dist/src/transform/transform-responses.js.map +1 -0
  290. package/dist/src/transform/transform-schemas.d.ts +4 -0
  291. package/dist/src/transform/transform-schemas.d.ts.map +1 -0
  292. package/dist/src/transform/transform-schemas.js +191 -0
  293. package/dist/src/transform/transform-schemas.js.map +1 -0
  294. package/dist/src/transform/transform-telemetry-info.d.ts +4 -0
  295. package/dist/src/transform/transform-telemetry-info.d.ts.map +1 -0
  296. package/dist/src/transform/transform-telemetry-info.js +22 -0
  297. package/dist/src/transform/transform-telemetry-info.js.map +1 -0
  298. package/dist/src/transform/transform.d.ts.map +1 -1
  299. package/dist/src/transform/transform.js +19 -26
  300. package/dist/src/transform/transform.js.map +1 -1
  301. package/dist/src/transform/transfrom-rlc-options.d.ts +14 -0
  302. package/dist/src/transform/transfrom-rlc-options.d.ts.map +1 -0
  303. package/dist/src/transform/transfrom-rlc-options.js +304 -0
  304. package/dist/src/transform/transfrom-rlc-options.js.map +1 -0
  305. package/dist/src/utils/client-utils.d.ts +10 -0
  306. package/dist/src/utils/client-utils.d.ts.map +1 -0
  307. package/dist/src/utils/client-utils.js +123 -0
  308. package/dist/src/utils/client-utils.js.map +1 -0
  309. package/dist/src/utils/credential-utils.d.ts +15 -0
  310. package/dist/src/utils/credential-utils.d.ts.map +1 -0
  311. package/dist/src/utils/credential-utils.js +68 -0
  312. package/dist/src/utils/credential-utils.js.map +1 -0
  313. package/dist/src/utils/cross-language-def.d.ts +6 -0
  314. package/dist/src/utils/cross-language-def.d.ts.map +1 -0
  315. package/dist/src/utils/cross-language-def.js +59 -0
  316. package/dist/src/utils/cross-language-def.js.map +1 -0
  317. package/dist/src/utils/emit-util.d.ts +4 -0
  318. package/dist/src/utils/emit-util.d.ts.map +1 -0
  319. package/dist/src/utils/emit-util.js +60 -0
  320. package/dist/src/utils/emit-util.js.map +1 -0
  321. package/dist/src/utils/file-system-utils.d.ts +5 -0
  322. package/dist/src/utils/file-system-utils.d.ts.map +1 -0
  323. package/dist/src/utils/file-system-utils.js +57 -0
  324. package/dist/src/utils/file-system-utils.js.map +1 -0
  325. package/dist/src/utils/import-helper.d.ts +10 -0
  326. package/dist/src/utils/import-helper.d.ts.map +1 -0
  327. package/dist/src/utils/import-helper.js +51 -0
  328. package/dist/src/utils/import-helper.js.map +1 -0
  329. package/dist/src/utils/interfaces.d.ts +1 -1
  330. package/dist/src/utils/interfaces.d.ts.map +1 -1
  331. package/dist/src/utils/media-types.d.ts +28 -0
  332. package/dist/src/utils/media-types.d.ts.map +1 -0
  333. package/dist/src/utils/media-types.js +124 -0
  334. package/dist/src/utils/media-types.js.map +1 -0
  335. package/dist/src/utils/model-utils.d.ts +60 -0
  336. package/dist/src/utils/model-utils.d.ts.map +1 -0
  337. package/dist/src/utils/model-utils.js +1473 -0
  338. package/dist/src/utils/model-utils.js.map +1 -0
  339. package/dist/src/utils/namespace-utils.d.ts +6 -0
  340. package/dist/src/utils/namespace-utils.d.ts.map +1 -0
  341. package/dist/src/utils/namespace-utils.js +69 -0
  342. package/dist/src/utils/namespace-utils.js.map +1 -0
  343. package/dist/src/utils/operation-util.d.ts +97 -0
  344. package/dist/src/utils/operation-util.d.ts.map +1 -0
  345. package/dist/src/utils/operation-util.js +547 -0
  346. package/dist/src/utils/operation-util.js.map +1 -0
  347. package/dist/src/utils/parameter-utils.d.ts +9 -0
  348. package/dist/src/utils/parameter-utils.d.ts.map +1 -0
  349. package/dist/src/utils/parameter-utils.js +147 -0
  350. package/dist/src/utils/parameter-utils.js.map +1 -0
  351. package/dist/src/utils/resolve-project-root.d.ts +6 -4
  352. package/dist/src/utils/resolve-project-root.d.ts.map +1 -1
  353. package/dist/src/utils/resolve-project-root.js +11 -18
  354. package/dist/src/utils/resolve-project-root.js.map +1 -1
  355. package/dist/tsconfig.tsbuildinfo +1 -1
  356. package/package.json +45 -64
  357. package/src/context-manager.ts +101 -0
  358. package/src/framework/hooks/binder.ts +7 -8
  359. package/src/framework/hooks/sdk-types.ts +218 -0
  360. package/src/framework/hooks/use-dependencies.ts +16 -0
  361. package/src/framework/load-static-helpers.ts +38 -41
  362. package/src/framework/sample.ts +1 -1
  363. package/src/index.ts +148 -226
  364. package/src/lib.ts +32 -143
  365. package/src/modular/build-classical-client.ts +434 -0
  366. package/src/modular/build-classical-operation-groups.ts +69 -0
  367. package/src/modular/build-client-context.ts +317 -0
  368. package/src/modular/build-operations.ts +248 -0
  369. package/src/modular/build-project-files.ts +118 -0
  370. package/src/modular/build-restore-poller.ts +242 -0
  371. package/src/modular/build-root-index.ts +403 -0
  372. package/src/modular/build-subpath-index.ts +152 -0
  373. package/src/modular/emit-logger-file.ts +20 -0
  374. package/src/modular/emit-models-options.ts +56 -0
  375. package/src/modular/emit-models.ts +1080 -0
  376. package/src/modular/emit-samples.ts +659 -0
  377. package/src/modular/emit-tests.ts +211 -0
  378. package/src/modular/helpers/classical-operation-helpers.ts +375 -0
  379. package/src/modular/helpers/client-helpers.ts +352 -0
  380. package/src/modular/helpers/example-value-helpers.ts +836 -0
  381. package/src/modular/helpers/naming-helpers.ts +84 -0
  382. package/src/modular/helpers/operation-helpers.ts +3035 -0
  383. package/src/modular/helpers/type-helpers.ts +134 -0
  384. package/src/modular/serialization/build-deserializer-function.ts +564 -0
  385. package/src/modular/serialization/build-serializer-function.ts +614 -0
  386. package/src/modular/serialization/build-xml-serializer-function.ts +951 -0
  387. package/src/modular/serialization/serialize-utils.ts +217 -0
  388. package/src/modular/type-expressions/get-credential-expression.ts +1 -1
  389. package/src/modular/type-expressions/get-model-expression.ts +1 -1
  390. package/src/rlc-common/helpers/imports-util.ts +172 -0
  391. package/src/rlc-common/helpers/name-constructors.ts +88 -0
  392. package/src/rlc-common/helpers/operation-helpers.ts +138 -0
  393. package/src/rlc-common/index.ts +21 -39
  394. package/src/rlc-common/interfaces.ts +2 -23
  395. package/src/rlc-common/metadata/build-api-extractor-config.ts +22 -0
  396. package/src/rlc-common/metadata/build-es-lint-config.ts +45 -0
  397. package/src/rlc-common/metadata/build-package-file.ts +180 -0
  398. package/src/rlc-common/metadata/build-readme-file.ts +413 -0
  399. package/src/rlc-common/metadata/build-sample-env-file.ts +18 -0
  400. package/src/rlc-common/metadata/build-test-config.ts +67 -0
  401. package/src/rlc-common/metadata/build-ts-config.ts +177 -0
  402. package/src/rlc-common/metadata/build-warp-config.ts +87 -0
  403. package/src/rlc-common/metadata/package-json/azure-package-common.ts +20 -0
  404. package/src/rlc-common/metadata/package-json/build-azure-monorepo-package.ts +179 -0
  405. package/src/rlc-common/metadata/package-json/package-common.ts +137 -0
  406. package/src/rlc-common/static/polling-content.ts +225 -0
  407. package/src/rlc-common/test/build-recorded-client.ts +15 -0
  408. package/src/rlc-common/test/build-sample-test.ts +12 -0
  409. package/src/rlc-common/test/build-snippets.ts +25 -0
  410. package/src/rlc-common/test/template.ts +1 -35
  411. package/src/transform/transform-api-version-info.ts +103 -0
  412. package/src/transform/transform-helper-function-details.ts +79 -0
  413. package/src/transform/transform-parameters.ts +321 -0
  414. package/src/transform/transform-paths.ts +157 -0
  415. package/src/transform/transform-responses.ts +237 -0
  416. package/src/transform/transform-schemas.ts +212 -0
  417. package/src/transform/transform-telemetry-info.ts +33 -0
  418. package/src/transform/transform.ts +18 -29
  419. package/src/transform/transfrom-rlc-options.ts +363 -0
  420. package/src/utils/client-utils.ts +161 -0
  421. package/src/utils/cross-language-def.ts +66 -0
  422. package/src/utils/emit-util.ts +67 -0
  423. package/src/utils/file-system-utils.ts +68 -0
  424. package/src/utils/import-helper.ts +59 -0
  425. package/src/utils/interfaces.ts +1 -1
  426. package/src/utils/model-utils.ts +1714 -0
  427. package/src/utils/operation-util.ts +763 -0
  428. package/src/utils/parameter-utils.ts +192 -0
  429. package/src/utils/resolve-project-root.ts +11 -24
  430. package/static/static-helpers/serialization/serializers.ts +1 -0
  431. package/dist/src/contextManager.d.ts +0 -75
  432. package/dist/src/contextManager.d.ts.map +0 -1
  433. package/dist/src/contextManager.js +0 -59
  434. package/dist/src/contextManager.js.map +0 -1
  435. package/dist/src/framework/hooks/sdkTypes.d.ts +0 -26
  436. package/dist/src/framework/hooks/sdkTypes.d.ts.map +0 -1
  437. package/dist/src/framework/hooks/sdkTypes.js +0 -157
  438. package/dist/src/framework/hooks/sdkTypes.js.map +0 -1
  439. package/dist/src/framework/hooks/useDependencies.d.ts +0 -4
  440. package/dist/src/framework/hooks/useDependencies.d.ts.map +0 -1
  441. package/dist/src/framework/hooks/useDependencies.js +0 -13
  442. package/dist/src/framework/hooks/useDependencies.js.map +0 -1
  443. package/dist/src/metaTree.d.ts +0 -7
  444. package/dist/src/metaTree.d.ts.map +0 -1
  445. package/dist/src/metaTree.js +0 -2
  446. package/dist/src/metaTree.js.map +0 -1
  447. package/dist/src/modular/buildClassicalClient.d.ts +0 -6
  448. package/dist/src/modular/buildClassicalClient.d.ts.map +0 -1
  449. package/dist/src/modular/buildClassicalClient.js +0 -345
  450. package/dist/src/modular/buildClassicalClient.js.map +0 -1
  451. package/dist/src/modular/buildClassicalOperationGroups.d.ts +0 -6
  452. package/dist/src/modular/buildClassicalOperationGroups.d.ts.map +0 -1
  453. package/dist/src/modular/buildClassicalOperationGroups.js +0 -48
  454. package/dist/src/modular/buildClassicalOperationGroups.js.map +0 -1
  455. package/dist/src/modular/buildClientContext.d.ts +0 -13
  456. package/dist/src/modular/buildClientContext.d.ts.map +0 -1
  457. package/dist/src/modular/buildClientContext.js +0 -246
  458. package/dist/src/modular/buildClientContext.js.map +0 -1
  459. package/dist/src/modular/buildModularOptions.d.ts +0 -6
  460. package/dist/src/modular/buildModularOptions.d.ts.map +0 -1
  461. package/dist/src/modular/buildModularOptions.js +0 -14
  462. package/dist/src/modular/buildModularOptions.js.map +0 -1
  463. package/dist/src/modular/buildOperations.d.ts +0 -21
  464. package/dist/src/modular/buildOperations.d.ts.map +0 -1
  465. package/dist/src/modular/buildOperations.js +0 -172
  466. package/dist/src/modular/buildOperations.js.map +0 -1
  467. package/dist/src/modular/buildProjectFiles.d.ts +0 -4
  468. package/dist/src/modular/buildProjectFiles.d.ts.map +0 -1
  469. package/dist/src/modular/buildProjectFiles.js +0 -91
  470. package/dist/src/modular/buildProjectFiles.js.map +0 -1
  471. package/dist/src/modular/buildRestorePoller.d.ts +0 -5
  472. package/dist/src/modular/buildRestorePoller.d.ts.map +0 -1
  473. package/dist/src/modular/buildRestorePoller.js +0 -216
  474. package/dist/src/modular/buildRestorePoller.js.map +0 -1
  475. package/dist/src/modular/buildRootIndex.d.ts +0 -13
  476. package/dist/src/modular/buildRootIndex.d.ts.map +0 -1
  477. package/dist/src/modular/buildRootIndex.js +0 -279
  478. package/dist/src/modular/buildRootIndex.js.map +0 -1
  479. package/dist/src/modular/buildSubpathIndex.d.ts +0 -16
  480. package/dist/src/modular/buildSubpathIndex.d.ts.map +0 -1
  481. package/dist/src/modular/buildSubpathIndex.js +0 -119
  482. package/dist/src/modular/buildSubpathIndex.js.map +0 -1
  483. package/dist/src/modular/emitLoggerFile.d.ts +0 -3
  484. package/dist/src/modular/emitLoggerFile.d.ts.map +0 -1
  485. package/dist/src/modular/emitLoggerFile.js +0 -18
  486. package/dist/src/modular/emitLoggerFile.js.map +0 -1
  487. package/dist/src/modular/emitModels.d.ts +0 -23
  488. package/dist/src/modular/emitModels.d.ts.map +0 -1
  489. package/dist/src/modular/emitModels.js +0 -850
  490. package/dist/src/modular/emitModels.js.map +0 -1
  491. package/dist/src/modular/emitModelsOptions.d.ts +0 -5
  492. package/dist/src/modular/emitModelsOptions.d.ts.map +0 -1
  493. package/dist/src/modular/emitModelsOptions.js +0 -35
  494. package/dist/src/modular/emitModelsOptions.js.map +0 -1
  495. package/dist/src/modular/emitSamples.d.ts +0 -7
  496. package/dist/src/modular/emitSamples.d.ts.map +0 -1
  497. package/dist/src/modular/emitSamples.js +0 -500
  498. package/dist/src/modular/emitSamples.js.map +0 -1
  499. package/dist/src/modular/emitTests.d.ts +0 -7
  500. package/dist/src/modular/emitTests.d.ts.map +0 -1
  501. package/dist/src/modular/emitTests.js +0 -155
  502. package/dist/src/modular/emitTests.js.map +0 -1
  503. package/dist/src/modular/helpers/classicalOperationHelpers.d.ts +0 -7
  504. package/dist/src/modular/helpers/classicalOperationHelpers.d.ts.map +0 -1
  505. package/dist/src/modular/helpers/classicalOperationHelpers.js +0 -258
  506. package/dist/src/modular/helpers/classicalOperationHelpers.js.map +0 -1
  507. package/dist/src/modular/helpers/clientHelpers.d.ts +0 -34
  508. package/dist/src/modular/helpers/clientHelpers.d.ts.map +0 -1
  509. package/dist/src/modular/helpers/clientHelpers.js +0 -259
  510. package/dist/src/modular/helpers/clientHelpers.js.map +0 -1
  511. package/dist/src/modular/helpers/clientOptionHelpers.d.ts +0 -43
  512. package/dist/src/modular/helpers/clientOptionHelpers.d.ts.map +0 -1
  513. package/dist/src/modular/helpers/clientOptionHelpers.js +0 -103
  514. package/dist/src/modular/helpers/clientOptionHelpers.js.map +0 -1
  515. package/dist/src/modular/helpers/docsHelpers.d.ts +0 -3
  516. package/dist/src/modular/helpers/docsHelpers.d.ts.map +0 -1
  517. package/dist/src/modular/helpers/docsHelpers.js +0 -10
  518. package/dist/src/modular/helpers/docsHelpers.js.map +0 -1
  519. package/dist/src/modular/helpers/exampleValueHelpers.d.ts +0 -83
  520. package/dist/src/modular/helpers/exampleValueHelpers.d.ts.map +0 -1
  521. package/dist/src/modular/helpers/exampleValueHelpers.js +0 -639
  522. package/dist/src/modular/helpers/exampleValueHelpers.js.map +0 -1
  523. package/dist/src/modular/helpers/namingHelpers.d.ts +0 -22
  524. package/dist/src/modular/helpers/namingHelpers.d.ts.map +0 -1
  525. package/dist/src/modular/helpers/namingHelpers.js +0 -59
  526. package/dist/src/modular/helpers/namingHelpers.js.map +0 -1
  527. package/dist/src/modular/helpers/operationHelpers.d.ts +0 -105
  528. package/dist/src/modular/helpers/operationHelpers.d.ts.map +0 -1
  529. package/dist/src/modular/helpers/operationHelpers.js +0 -2328
  530. package/dist/src/modular/helpers/operationHelpers.js.map +0 -1
  531. package/dist/src/modular/helpers/typeHelpers.d.ts +0 -22
  532. package/dist/src/modular/helpers/typeHelpers.d.ts.map +0 -1
  533. package/dist/src/modular/helpers/typeHelpers.js +0 -94
  534. package/dist/src/modular/helpers/typeHelpers.js.map +0 -1
  535. package/dist/src/modular/serialization/buildDeserializerFunction.d.ts +0 -7
  536. package/dist/src/modular/serialization/buildDeserializerFunction.d.ts.map +0 -1
  537. package/dist/src/modular/serialization/buildDeserializerFunction.js +0 -401
  538. package/dist/src/modular/serialization/buildDeserializerFunction.js.map +0 -1
  539. package/dist/src/modular/serialization/buildSerializerFunction.d.ts +0 -7
  540. package/dist/src/modular/serialization/buildSerializerFunction.d.ts.map +0 -1
  541. package/dist/src/modular/serialization/buildSerializerFunction.js +0 -444
  542. package/dist/src/modular/serialization/buildSerializerFunction.js.map +0 -1
  543. package/dist/src/modular/serialization/buildXmlSerializerFunction.d.ts +0 -44
  544. package/dist/src/modular/serialization/buildXmlSerializerFunction.d.ts.map +0 -1
  545. package/dist/src/modular/serialization/buildXmlSerializerFunction.js +0 -729
  546. package/dist/src/modular/serialization/buildXmlSerializerFunction.js.map +0 -1
  547. package/dist/src/modular/serialization/serializeUtils.d.ts +0 -37
  548. package/dist/src/modular/serialization/serializeUtils.d.ts.map +0 -1
  549. package/dist/src/modular/serialization/serializeUtils.js +0 -145
  550. package/dist/src/modular/serialization/serializeUtils.js.map +0 -1
  551. package/dist/src/rlc-common/buildClient.d.ts +0 -9
  552. package/dist/src/rlc-common/buildClient.d.ts.map +0 -1
  553. package/dist/src/rlc-common/buildClient.js +0 -391
  554. package/dist/src/rlc-common/buildClient.js.map +0 -1
  555. package/dist/src/rlc-common/buildClientDefinitions.d.ts +0 -6
  556. package/dist/src/rlc-common/buildClientDefinitions.d.ts.map +0 -1
  557. package/dist/src/rlc-common/buildClientDefinitions.js +0 -157
  558. package/dist/src/rlc-common/buildClientDefinitions.js.map +0 -1
  559. package/dist/src/rlc-common/buildIndexFile.d.ts +0 -6
  560. package/dist/src/rlc-common/buildIndexFile.d.ts.map +0 -1
  561. package/dist/src/rlc-common/buildIndexFile.js +0 -241
  562. package/dist/src/rlc-common/buildIndexFile.js.map +0 -1
  563. package/dist/src/rlc-common/buildIsUnexpectedHelper.d.ts +0 -6
  564. package/dist/src/rlc-common/buildIsUnexpectedHelper.d.ts.map +0 -1
  565. package/dist/src/rlc-common/buildIsUnexpectedHelper.js +0 -223
  566. package/dist/src/rlc-common/buildIsUnexpectedHelper.js.map +0 -1
  567. package/dist/src/rlc-common/buildLogger.d.ts +0 -6
  568. package/dist/src/rlc-common/buildLogger.d.ts.map +0 -1
  569. package/dist/src/rlc-common/buildLogger.js +0 -31
  570. package/dist/src/rlc-common/buildLogger.js.map +0 -1
  571. package/dist/src/rlc-common/buildMethodShortcuts.d.ts +0 -5
  572. package/dist/src/rlc-common/buildMethodShortcuts.d.ts.map +0 -1
  573. package/dist/src/rlc-common/buildMethodShortcuts.js +0 -54
  574. package/dist/src/rlc-common/buildMethodShortcuts.js.map +0 -1
  575. package/dist/src/rlc-common/buildObjectTypes.d.ts +0 -29
  576. package/dist/src/rlc-common/buildObjectTypes.d.ts.map +0 -1
  577. package/dist/src/rlc-common/buildObjectTypes.js +0 -412
  578. package/dist/src/rlc-common/buildObjectTypes.js.map +0 -1
  579. package/dist/src/rlc-common/buildPaginateHelper.d.ts +0 -6
  580. package/dist/src/rlc-common/buildPaginateHelper.d.ts.map +0 -1
  581. package/dist/src/rlc-common/buildPaginateHelper.js +0 -27
  582. package/dist/src/rlc-common/buildPaginateHelper.js.map +0 -1
  583. package/dist/src/rlc-common/buildParameterTypes.d.ts +0 -14
  584. package/dist/src/rlc-common/buildParameterTypes.d.ts.map +0 -1
  585. package/dist/src/rlc-common/buildParameterTypes.js +0 -391
  586. package/dist/src/rlc-common/buildParameterTypes.js.map +0 -1
  587. package/dist/src/rlc-common/buildPollingHelper.d.ts +0 -6
  588. package/dist/src/rlc-common/buildPollingHelper.d.ts.map +0 -1
  589. package/dist/src/rlc-common/buildPollingHelper.js +0 -61
  590. package/dist/src/rlc-common/buildPollingHelper.js.map +0 -1
  591. package/dist/src/rlc-common/buildResponseTypes.d.ts +0 -6
  592. package/dist/src/rlc-common/buildResponseTypes.d.ts.map +0 -1
  593. package/dist/src/rlc-common/buildResponseTypes.js +0 -143
  594. package/dist/src/rlc-common/buildResponseTypes.js.map +0 -1
  595. package/dist/src/rlc-common/buildSamples.d.ts +0 -3
  596. package/dist/src/rlc-common/buildSamples.d.ts.map +0 -1
  597. package/dist/src/rlc-common/buildSamples.js +0 -30
  598. package/dist/src/rlc-common/buildSamples.js.map +0 -1
  599. package/dist/src/rlc-common/buildSchemaType.d.ts +0 -20
  600. package/dist/src/rlc-common/buildSchemaType.d.ts.map +0 -1
  601. package/dist/src/rlc-common/buildSchemaType.js +0 -71
  602. package/dist/src/rlc-common/buildSchemaType.js.map +0 -1
  603. package/dist/src/rlc-common/buildSerializeHelper.d.ts +0 -6
  604. package/dist/src/rlc-common/buildSerializeHelper.d.ts.map +0 -1
  605. package/dist/src/rlc-common/buildSerializeHelper.js +0 -36
  606. package/dist/src/rlc-common/buildSerializeHelper.js.map +0 -1
  607. package/dist/src/rlc-common/buildTopLevelIndexFile.d.ts +0 -6
  608. package/dist/src/rlc-common/buildTopLevelIndexFile.d.ts.map +0 -1
  609. package/dist/src/rlc-common/buildTopLevelIndexFile.js +0 -48
  610. package/dist/src/rlc-common/buildTopLevelIndexFile.js.map +0 -1
  611. package/dist/src/rlc-common/helpers/apiVersionUtil.d.ts +0 -17
  612. package/dist/src/rlc-common/helpers/apiVersionUtil.d.ts.map +0 -1
  613. package/dist/src/rlc-common/helpers/apiVersionUtil.js +0 -43
  614. package/dist/src/rlc-common/helpers/apiVersionUtil.js.map +0 -1
  615. package/dist/src/rlc-common/helpers/importsUtil.d.ts +0 -18
  616. package/dist/src/rlc-common/helpers/importsUtil.d.ts.map +0 -1
  617. package/dist/src/rlc-common/helpers/importsUtil.js +0 -164
  618. package/dist/src/rlc-common/helpers/importsUtil.js.map +0 -1
  619. package/dist/src/rlc-common/helpers/nameConstructors.d.ts +0 -42
  620. package/dist/src/rlc-common/helpers/nameConstructors.d.ts.map +0 -1
  621. package/dist/src/rlc-common/helpers/nameConstructors.js +0 -61
  622. package/dist/src/rlc-common/helpers/nameConstructors.js.map +0 -1
  623. package/dist/src/rlc-common/helpers/nameUtils.d.ts +0 -37
  624. package/dist/src/rlc-common/helpers/nameUtils.d.ts.map +0 -1
  625. package/dist/src/rlc-common/helpers/nameUtils.js +0 -240
  626. package/dist/src/rlc-common/helpers/nameUtils.js.map +0 -1
  627. package/dist/src/rlc-common/helpers/operationHelpers.d.ts +0 -16
  628. package/dist/src/rlc-common/helpers/operationHelpers.d.ts.map +0 -1
  629. package/dist/src/rlc-common/helpers/operationHelpers.js +0 -104
  630. package/dist/src/rlc-common/helpers/operationHelpers.js.map +0 -1
  631. package/dist/src/rlc-common/helpers/packageUtil.d.ts +0 -7
  632. package/dist/src/rlc-common/helpers/packageUtil.d.ts.map +0 -1
  633. package/dist/src/rlc-common/helpers/packageUtil.js +0 -10
  634. package/dist/src/rlc-common/helpers/packageUtil.js.map +0 -1
  635. package/dist/src/rlc-common/helpers/pathUtils.d.ts +0 -2
  636. package/dist/src/rlc-common/helpers/pathUtils.d.ts.map +0 -1
  637. package/dist/src/rlc-common/helpers/pathUtils.js +0 -10
  638. package/dist/src/rlc-common/helpers/pathUtils.js.map +0 -1
  639. package/dist/src/rlc-common/helpers/schemaHelpers.d.ts +0 -10
  640. package/dist/src/rlc-common/helpers/schemaHelpers.d.ts.map +0 -1
  641. package/dist/src/rlc-common/helpers/schemaHelpers.js +0 -37
  642. package/dist/src/rlc-common/helpers/schemaHelpers.js.map +0 -1
  643. package/dist/src/rlc-common/helpers/shortcutMethods.d.ts +0 -4
  644. package/dist/src/rlc-common/helpers/shortcutMethods.d.ts.map +0 -1
  645. package/dist/src/rlc-common/helpers/shortcutMethods.js +0 -49
  646. package/dist/src/rlc-common/helpers/shortcutMethods.js.map +0 -1
  647. package/dist/src/rlc-common/helpers/typeUtil.d.ts +0 -32
  648. package/dist/src/rlc-common/helpers/typeUtil.d.ts.map +0 -1
  649. package/dist/src/rlc-common/helpers/typeUtil.js +0 -162
  650. package/dist/src/rlc-common/helpers/typeUtil.js.map +0 -1
  651. package/dist/src/rlc-common/helpers/valueGenerationUtil.d.ts +0 -12
  652. package/dist/src/rlc-common/helpers/valueGenerationUtil.d.ts.map +0 -1
  653. package/dist/src/rlc-common/helpers/valueGenerationUtil.js +0 -161
  654. package/dist/src/rlc-common/helpers/valueGenerationUtil.js.map +0 -1
  655. package/dist/src/rlc-common/metadata/buildApiExtractorConfig.d.ts +0 -6
  656. package/dist/src/rlc-common/metadata/buildApiExtractorConfig.d.ts.map +0 -1
  657. package/dist/src/rlc-common/metadata/buildApiExtractorConfig.js +0 -55
  658. package/dist/src/rlc-common/metadata/buildApiExtractorConfig.js.map +0 -1
  659. package/dist/src/rlc-common/metadata/buildChangelogFile.d.ts +0 -6
  660. package/dist/src/rlc-common/metadata/buildChangelogFile.d.ts.map +0 -1
  661. package/dist/src/rlc-common/metadata/buildChangelogFile.js +0 -25
  662. package/dist/src/rlc-common/metadata/buildChangelogFile.js.map +0 -1
  663. package/dist/src/rlc-common/metadata/buildESLintConfig.d.ts +0 -6
  664. package/dist/src/rlc-common/metadata/buildESLintConfig.d.ts.map +0 -1
  665. package/dist/src/rlc-common/metadata/buildESLintConfig.js +0 -79
  666. package/dist/src/rlc-common/metadata/buildESLintConfig.js.map +0 -1
  667. package/dist/src/rlc-common/metadata/buildLicenseFile.d.ts +0 -5
  668. package/dist/src/rlc-common/metadata/buildLicenseFile.d.ts.map +0 -1
  669. package/dist/src/rlc-common/metadata/buildLicenseFile.js +0 -32
  670. package/dist/src/rlc-common/metadata/buildLicenseFile.js.map +0 -1
  671. package/dist/src/rlc-common/metadata/buildPackageFile.d.ts +0 -25
  672. package/dist/src/rlc-common/metadata/buildPackageFile.d.ts.map +0 -1
  673. package/dist/src/rlc-common/metadata/buildPackageFile.js +0 -197
  674. package/dist/src/rlc-common/metadata/buildPackageFile.js.map +0 -1
  675. package/dist/src/rlc-common/metadata/buildReadmeFile.d.ts +0 -11
  676. package/dist/src/rlc-common/metadata/buildReadmeFile.d.ts.map +0 -1
  677. package/dist/src/rlc-common/metadata/buildReadmeFile.js +0 -418
  678. package/dist/src/rlc-common/metadata/buildReadmeFile.js.map +0 -1
  679. package/dist/src/rlc-common/metadata/buildRollupConfig.d.ts +0 -6
  680. package/dist/src/rlc-common/metadata/buildRollupConfig.d.ts.map +0 -1
  681. package/dist/src/rlc-common/metadata/buildRollupConfig.js +0 -140
  682. package/dist/src/rlc-common/metadata/buildRollupConfig.js.map +0 -1
  683. package/dist/src/rlc-common/metadata/buildSampleEnvFile.d.ts +0 -6
  684. package/dist/src/rlc-common/metadata/buildSampleEnvFile.d.ts.map +0 -1
  685. package/dist/src/rlc-common/metadata/buildSampleEnvFile.js +0 -15
  686. package/dist/src/rlc-common/metadata/buildSampleEnvFile.js.map +0 -1
  687. package/dist/src/rlc-common/metadata/buildTestConfig.d.ts +0 -16
  688. package/dist/src/rlc-common/metadata/buildTestConfig.d.ts.map +0 -1
  689. package/dist/src/rlc-common/metadata/buildTestConfig.js +0 -54
  690. package/dist/src/rlc-common/metadata/buildTestConfig.js.map +0 -1
  691. package/dist/src/rlc-common/metadata/buildTsConfig.d.ts +0 -61
  692. package/dist/src/rlc-common/metadata/buildTsConfig.d.ts.map +0 -1
  693. package/dist/src/rlc-common/metadata/buildTsConfig.js +0 -170
  694. package/dist/src/rlc-common/metadata/buildTsConfig.js.map +0 -1
  695. package/dist/src/rlc-common/metadata/buildVitestConfig.d.ts +0 -6
  696. package/dist/src/rlc-common/metadata/buildVitestConfig.d.ts.map +0 -1
  697. package/dist/src/rlc-common/metadata/buildVitestConfig.js +0 -26
  698. package/dist/src/rlc-common/metadata/buildVitestConfig.js.map +0 -1
  699. package/dist/src/rlc-common/metadata/buildWarpConfig.d.ts +0 -20
  700. package/dist/src/rlc-common/metadata/buildWarpConfig.d.ts.map +0 -1
  701. package/dist/src/rlc-common/metadata/buildWarpConfig.js +0 -76
  702. package/dist/src/rlc-common/metadata/buildWarpConfig.js.map +0 -1
  703. package/dist/src/rlc-common/metadata/packageJson/azurePackageCommon.d.ts +0 -51
  704. package/dist/src/rlc-common/metadata/packageJson/azurePackageCommon.d.ts.map +0 -1
  705. package/dist/src/rlc-common/metadata/packageJson/azurePackageCommon.js +0 -121
  706. package/dist/src/rlc-common/metadata/packageJson/azurePackageCommon.js.map +0 -1
  707. package/dist/src/rlc-common/metadata/packageJson/buildAzureMonorepoPackage.d.ts +0 -242
  708. package/dist/src/rlc-common/metadata/packageJson/buildAzureMonorepoPackage.d.ts.map +0 -1
  709. package/dist/src/rlc-common/metadata/packageJson/buildAzureMonorepoPackage.js +0 -171
  710. package/dist/src/rlc-common/metadata/packageJson/buildAzureMonorepoPackage.js.map +0 -1
  711. package/dist/src/rlc-common/metadata/packageJson/buildAzureStandalonePackage.d.ts +0 -8
  712. package/dist/src/rlc-common/metadata/packageJson/buildAzureStandalonePackage.d.ts.map +0 -1
  713. package/dist/src/rlc-common/metadata/packageJson/buildAzureStandalonePackage.js +0 -101
  714. package/dist/src/rlc-common/metadata/packageJson/buildAzureStandalonePackage.js.map +0 -1
  715. package/dist/src/rlc-common/metadata/packageJson/buildFlavorlessPackage.d.ts +0 -57
  716. package/dist/src/rlc-common/metadata/packageJson/buildFlavorlessPackage.d.ts.map +0 -1
  717. package/dist/src/rlc-common/metadata/packageJson/buildFlavorlessPackage.js +0 -53
  718. package/dist/src/rlc-common/metadata/packageJson/buildFlavorlessPackage.js.map +0 -1
  719. package/dist/src/rlc-common/metadata/packageJson/packageCommon.d.ts +0 -64
  720. package/dist/src/rlc-common/metadata/packageJson/packageCommon.d.ts.map +0 -1
  721. package/dist/src/rlc-common/metadata/packageJson/packageCommon.js +0 -180
  722. package/dist/src/rlc-common/metadata/packageJson/packageCommon.js.map +0 -1
  723. package/dist/src/rlc-common/static/paginateContent.d.ts +0 -2
  724. package/dist/src/rlc-common/static/paginateContent.d.ts.map +0 -1
  725. package/dist/src/rlc-common/static/paginateContent.js +0 -345
  726. package/dist/src/rlc-common/static/paginateContent.js.map +0 -1
  727. package/dist/src/rlc-common/static/pollingContent.d.ts +0 -2
  728. package/dist/src/rlc-common/static/pollingContent.d.ts.map +0 -1
  729. package/dist/src/rlc-common/static/pollingContent.js +0 -225
  730. package/dist/src/rlc-common/static/pollingContent.js.map +0 -1
  731. package/dist/src/rlc-common/static/sampleTemplate.d.ts +0 -2
  732. package/dist/src/rlc-common/static/sampleTemplate.d.ts.map +0 -1
  733. package/dist/src/rlc-common/static/sampleTemplate.js +0 -56
  734. package/dist/src/rlc-common/static/sampleTemplate.js.map +0 -1
  735. package/dist/src/rlc-common/static/serializeHelper.d.ts +0 -6
  736. package/dist/src/rlc-common/static/serializeHelper.d.ts.map +0 -1
  737. package/dist/src/rlc-common/static/serializeHelper.js +0 -31
  738. package/dist/src/rlc-common/static/serializeHelper.js.map +0 -1
  739. package/dist/src/rlc-common/test/buildKarmaConfig.d.ts +0 -6
  740. package/dist/src/rlc-common/test/buildKarmaConfig.d.ts.map +0 -1
  741. package/dist/src/rlc-common/test/buildKarmaConfig.js +0 -11
  742. package/dist/src/rlc-common/test/buildKarmaConfig.js.map +0 -1
  743. package/dist/src/rlc-common/test/buildRecordedClient.d.ts +0 -6
  744. package/dist/src/rlc-common/test/buildRecordedClient.d.ts.map +0 -1
  745. package/dist/src/rlc-common/test/buildRecordedClient.js +0 -17
  746. package/dist/src/rlc-common/test/buildRecordedClient.js.map +0 -1
  747. package/dist/src/rlc-common/test/buildSampleTest.d.ts +0 -6
  748. package/dist/src/rlc-common/test/buildSampleTest.d.ts.map +0 -1
  749. package/dist/src/rlc-common/test/buildSampleTest.js +0 -14
  750. package/dist/src/rlc-common/test/buildSampleTest.js.map +0 -1
  751. package/dist/src/rlc-common/test/buildSnippets.d.ts +0 -6
  752. package/dist/src/rlc-common/test/buildSnippets.d.ts.map +0 -1
  753. package/dist/src/rlc-common/test/buildSnippets.js +0 -26
  754. package/dist/src/rlc-common/test/buildSnippets.js.map +0 -1
  755. package/dist/src/rlc-common/transformSampleGroups.d.ts +0 -9
  756. package/dist/src/rlc-common/transformSampleGroups.d.ts.map +0 -1
  757. package/dist/src/rlc-common/transformSampleGroups.js +0 -313
  758. package/dist/src/rlc-common/transformSampleGroups.js.map +0 -1
  759. package/dist/src/transform/transformApiVersionInfo.d.ts +0 -6
  760. package/dist/src/transform/transformApiVersionInfo.d.ts.map +0 -1
  761. package/dist/src/transform/transformApiVersionInfo.js +0 -78
  762. package/dist/src/transform/transformApiVersionInfo.js.map +0 -1
  763. package/dist/src/transform/transformHelperFunctionDetails.d.ts +0 -5
  764. package/dist/src/transform/transformHelperFunctionDetails.d.ts.map +0 -1
  765. package/dist/src/transform/transformHelperFunctionDetails.js +0 -74
  766. package/dist/src/transform/transformHelperFunctionDetails.js.map +0 -1
  767. package/dist/src/transform/transformParameters.d.ts +0 -14
  768. package/dist/src/transform/transformParameters.d.ts.map +0 -1
  769. package/dist/src/transform/transformParameters.js +0 -201
  770. package/dist/src/transform/transformParameters.js.map +0 -1
  771. package/dist/src/transform/transformPaths.d.ts +0 -5
  772. package/dist/src/transform/transformPaths.d.ts.map +0 -1
  773. package/dist/src/transform/transformPaths.js +0 -102
  774. package/dist/src/transform/transformPaths.js.map +0 -1
  775. package/dist/src/transform/transformResponses.d.ts +0 -5
  776. package/dist/src/transform/transformResponses.d.ts.map +0 -1
  777. package/dist/src/transform/transformResponses.js +0 -171
  778. package/dist/src/transform/transformResponses.js.map +0 -1
  779. package/dist/src/transform/transformSchemas.d.ts +0 -4
  780. package/dist/src/transform/transformSchemas.d.ts.map +0 -1
  781. package/dist/src/transform/transformSchemas.js +0 -191
  782. package/dist/src/transform/transformSchemas.js.map +0 -1
  783. package/dist/src/transform/transformTelemetryInfo.d.ts +0 -4
  784. package/dist/src/transform/transformTelemetryInfo.d.ts.map +0 -1
  785. package/dist/src/transform/transformTelemetryInfo.js +0 -22
  786. package/dist/src/transform/transformTelemetryInfo.js.map +0 -1
  787. package/dist/src/transform/transfromRLCOptions.d.ts +0 -14
  788. package/dist/src/transform/transfromRLCOptions.d.ts.map +0 -1
  789. package/dist/src/transform/transfromRLCOptions.js +0 -369
  790. package/dist/src/transform/transfromRLCOptions.js.map +0 -1
  791. package/dist/src/utils/clientUtils.d.ts +0 -10
  792. package/dist/src/utils/clientUtils.d.ts.map +0 -1
  793. package/dist/src/utils/clientUtils.js +0 -124
  794. package/dist/src/utils/clientUtils.js.map +0 -1
  795. package/dist/src/utils/credentialUtils.d.ts +0 -15
  796. package/dist/src/utils/credentialUtils.d.ts.map +0 -1
  797. package/dist/src/utils/credentialUtils.js +0 -68
  798. package/dist/src/utils/credentialUtils.js.map +0 -1
  799. package/dist/src/utils/crossLanguageDef.d.ts +0 -6
  800. package/dist/src/utils/crossLanguageDef.d.ts.map +0 -1
  801. package/dist/src/utils/crossLanguageDef.js +0 -59
  802. package/dist/src/utils/crossLanguageDef.js.map +0 -1
  803. package/dist/src/utils/dirname.d.ts +0 -9
  804. package/dist/src/utils/dirname.d.ts.map +0 -1
  805. package/dist/src/utils/dirname.js +0 -12
  806. package/dist/src/utils/dirname.js.map +0 -1
  807. package/dist/src/utils/emitUtil.d.ts +0 -5
  808. package/dist/src/utils/emitUtil.d.ts.map +0 -1
  809. package/dist/src/utils/emitUtil.js +0 -71
  810. package/dist/src/utils/emitUtil.js.map +0 -1
  811. package/dist/src/utils/fileSystemUtils.d.ts +0 -5
  812. package/dist/src/utils/fileSystemUtils.d.ts.map +0 -1
  813. package/dist/src/utils/fileSystemUtils.js +0 -59
  814. package/dist/src/utils/fileSystemUtils.js.map +0 -1
  815. package/dist/src/utils/importHelper.d.ts +0 -10
  816. package/dist/src/utils/importHelper.d.ts.map +0 -1
  817. package/dist/src/utils/importHelper.js +0 -51
  818. package/dist/src/utils/importHelper.js.map +0 -1
  819. package/dist/src/utils/mediaTypes.d.ts +0 -28
  820. package/dist/src/utils/mediaTypes.d.ts.map +0 -1
  821. package/dist/src/utils/mediaTypes.js +0 -124
  822. package/dist/src/utils/mediaTypes.js.map +0 -1
  823. package/dist/src/utils/modelUtils.d.ts +0 -60
  824. package/dist/src/utils/modelUtils.d.ts.map +0 -1
  825. package/dist/src/utils/modelUtils.js +0 -1488
  826. package/dist/src/utils/modelUtils.js.map +0 -1
  827. package/dist/src/utils/namespaceUtils.d.ts +0 -6
  828. package/dist/src/utils/namespaceUtils.d.ts.map +0 -1
  829. package/dist/src/utils/namespaceUtils.js +0 -69
  830. package/dist/src/utils/namespaceUtils.js.map +0 -1
  831. package/dist/src/utils/operationUtil.d.ts +0 -97
  832. package/dist/src/utils/operationUtil.d.ts.map +0 -1
  833. package/dist/src/utils/operationUtil.js +0 -547
  834. package/dist/src/utils/operationUtil.js.map +0 -1
  835. package/dist/src/utils/parameterUtils.d.ts +0 -9
  836. package/dist/src/utils/parameterUtils.d.ts.map +0 -1
  837. package/dist/src/utils/parameterUtils.js +0 -147
  838. package/dist/src/utils/parameterUtils.js.map +0 -1
  839. package/src/contextManager.ts +0 -101
  840. package/src/framework/hooks/sdkTypes.ts +0 -218
  841. package/src/framework/hooks/useDependencies.ts +0 -16
  842. package/src/modular/buildClassicalClient.ts +0 -434
  843. package/src/modular/buildClassicalOperationGroups.ts +0 -69
  844. package/src/modular/buildClientContext.ts +0 -325
  845. package/src/modular/buildOperations.ts +0 -248
  846. package/src/modular/buildProjectFiles.ts +0 -111
  847. package/src/modular/buildRestorePoller.ts +0 -242
  848. package/src/modular/buildRootIndex.ts +0 -407
  849. package/src/modular/buildSubpathIndex.ts +0 -152
  850. package/src/modular/emitLoggerFile.ts +0 -23
  851. package/src/modular/emitModels.ts +0 -1081
  852. package/src/modular/emitModelsOptions.ts +0 -56
  853. package/src/modular/emitSamples.ts +0 -675
  854. package/src/modular/emitTests.ts +0 -194
  855. package/src/modular/helpers/classicalOperationHelpers.ts +0 -375
  856. package/src/modular/helpers/clientHelpers.ts +0 -362
  857. package/src/modular/helpers/exampleValueHelpers.ts +0 -851
  858. package/src/modular/helpers/namingHelpers.ts +0 -84
  859. package/src/modular/helpers/operationHelpers.ts +0 -3035
  860. package/src/modular/helpers/typeHelpers.ts +0 -131
  861. package/src/modular/serialization/buildDeserializerFunction.ts +0 -564
  862. package/src/modular/serialization/buildSerializerFunction.ts +0 -616
  863. package/src/modular/serialization/buildXmlSerializerFunction.ts +0 -951
  864. package/src/modular/serialization/serializeUtils.ts +0 -217
  865. package/src/rlc-common/buildClient.ts +0 -490
  866. package/src/rlc-common/buildClientDefinitions.ts +0 -235
  867. package/src/rlc-common/buildIndexFile.ts +0 -344
  868. package/src/rlc-common/buildIsUnexpectedHelper.ts +0 -248
  869. package/src/rlc-common/buildLogger.ts +0 -43
  870. package/src/rlc-common/buildMethodShortcuts.ts +0 -71
  871. package/src/rlc-common/buildObjectTypes.ts +0 -603
  872. package/src/rlc-common/buildPaginateHelper.ts +0 -31
  873. package/src/rlc-common/buildParameterTypes.ts +0 -554
  874. package/src/rlc-common/buildPollingHelper.ts +0 -83
  875. package/src/rlc-common/buildResponseTypes.ts +0 -180
  876. package/src/rlc-common/buildSamples.ts +0 -32
  877. package/src/rlc-common/buildSchemaType.ts +0 -89
  878. package/src/rlc-common/buildSerializeHelper.ts +0 -49
  879. package/src/rlc-common/buildTopLevelIndexFile.ts +0 -58
  880. package/src/rlc-common/helpers/importsUtil.ts +0 -184
  881. package/src/rlc-common/helpers/nameConstructors.ts +0 -110
  882. package/src/rlc-common/helpers/operationHelpers.ts +0 -138
  883. package/src/rlc-common/helpers/packageUtil.ts +0 -13
  884. package/src/rlc-common/helpers/pathUtils.ts +0 -10
  885. package/src/rlc-common/helpers/shortcutMethods.ts +0 -58
  886. package/src/rlc-common/helpers/valueGenerationUtil.ts +0 -234
  887. package/src/rlc-common/metadata/buildApiExtractorConfig.ts +0 -64
  888. package/src/rlc-common/metadata/buildESLintConfig.ts +0 -84
  889. package/src/rlc-common/metadata/buildPackageFile.ts +0 -242
  890. package/src/rlc-common/metadata/buildReadmeFile.ts +0 -515
  891. package/src/rlc-common/metadata/buildRollupConfig.ts +0 -147
  892. package/src/rlc-common/metadata/buildSampleEnvFile.ts +0 -21
  893. package/src/rlc-common/metadata/buildTestConfig.ts +0 -72
  894. package/src/rlc-common/metadata/buildTsConfig.ts +0 -219
  895. package/src/rlc-common/metadata/buildWarpConfig.ts +0 -91
  896. package/src/rlc-common/metadata/packageJson/azurePackageCommon.ts +0 -152
  897. package/src/rlc-common/metadata/packageJson/buildAzureMonorepoPackage.ts +0 -199
  898. package/src/rlc-common/metadata/packageJson/buildAzureStandalonePackage.ts +0 -123
  899. package/src/rlc-common/metadata/packageJson/buildFlavorlessPackage.ts +0 -68
  900. package/src/rlc-common/metadata/packageJson/packageCommon.ts +0 -235
  901. package/src/rlc-common/static/pollingContent.ts +0 -225
  902. package/src/rlc-common/test/buildRecordedClient.ts +0 -18
  903. package/src/rlc-common/test/buildSampleTest.ts +0 -15
  904. package/src/rlc-common/test/buildSnippets.ts +0 -29
  905. package/src/rlc-common/transformSampleGroups.ts +0 -407
  906. package/src/transform/transformApiVersionInfo.ts +0 -103
  907. package/src/transform/transformHelperFunctionDetails.ts +0 -88
  908. package/src/transform/transformParameters.ts +0 -321
  909. package/src/transform/transformPaths.ts +0 -157
  910. package/src/transform/transformResponses.ts +0 -237
  911. package/src/transform/transformSchemas.ts +0 -212
  912. package/src/transform/transformTelemetryInfo.ts +0 -33
  913. package/src/transform/transfromRLCOptions.ts +0 -461
  914. package/src/utils/clientUtils.ts +0 -162
  915. package/src/utils/crossLanguageDef.ts +0 -66
  916. package/src/utils/dirname.ts +0 -12
  917. package/src/utils/emitUtil.ts +0 -92
  918. package/src/utils/fileSystemUtils.ts +0 -69
  919. package/src/utils/importHelper.ts +0 -59
  920. package/src/utils/modelUtils.ts +0 -1737
  921. package/src/utils/operationUtil.ts +0 -763
  922. package/src/utils/parameterUtils.ts +0 -192
  923. /package/src/{metaTree.ts → meta-tree.ts} +0 -0
  924. /package/src/modular/{buildModularOptions.ts → build-modular-options.ts} +0 -0
  925. /package/src/modular/helpers/{clientOptionHelpers.ts → client-option-helpers.ts} +0 -0
  926. /package/src/modular/helpers/{docsHelpers.ts → docs-helpers.ts} +0 -0
  927. /package/src/rlc-common/helpers/{apiVersionUtil.ts → api-version-util.ts} +0 -0
  928. /package/src/rlc-common/helpers/{nameUtils.ts → name-utils.ts} +0 -0
  929. /package/src/rlc-common/helpers/{schemaHelpers.ts → schema-helpers.ts} +0 -0
  930. /package/src/rlc-common/helpers/{typeUtil.ts → type-util.ts} +0 -0
  931. /package/src/rlc-common/metadata/{buildChangelogFile.ts → build-changelog-file.ts} +0 -0
  932. /package/src/rlc-common/metadata/{buildLicenseFile.ts → build-license-file.ts} +0 -0
  933. /package/src/rlc-common/metadata/{buildVitestConfig.ts → build-vitest-config.ts} +0 -0
  934. /package/src/rlc-common/static/{paginateContent.ts → paginate-content.ts} +0 -0
  935. /package/src/rlc-common/static/{sampleTemplate.ts → sample-template.ts} +0 -0
  936. /package/src/rlc-common/static/{serializeHelper.ts → serialize-helper.ts} +0 -0
  937. /package/src/rlc-common/test/{buildKarmaConfig.ts → build-karma-config.ts} +0 -0
  938. /package/src/utils/{credentialUtils.ts → credential-utils.ts} +0 -0
  939. /package/src/utils/{mediaTypes.ts → media-types.ts} +0 -0
  940. /package/src/utils/{namespaceUtils.ts → namespace-utils.ts} +0 -0
@@ -1,1737 +0,0 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT License.
3
-
4
- import { getUnionAsEnum } from "@azure-tools/typespec-azure-core";
5
- import {
6
- getDefaultApiVersion,
7
- getWireName,
8
- isApiVersion,
9
- } from "@azure-tools/typespec-client-generator-core";
10
- import {
11
- Discriminator,
12
- EncodeData,
13
- Enum,
14
- EnumMember,
15
- Model,
16
- ModelProperty,
17
- NoTarget,
18
- Program,
19
- Scalar,
20
- Service,
21
- Type,
22
- Union,
23
- UnionVariant,
24
- Value,
25
- getDiscriminator,
26
- getDoc,
27
- getEffectiveModelType,
28
- getEncode,
29
- getFormat,
30
- getFriendlyName,
31
- getLifecycleVisibilityEnum,
32
- getMaxLength,
33
- getMaxValue,
34
- getMinLength,
35
- getMinValue,
36
- getPattern,
37
- getProperty,
38
- getPropertyType,
39
- getSummary,
40
- getVisibilityForClass,
41
- isArrayModelType,
42
- isNeverType,
43
- isNullType,
44
- isNumericType,
45
- isRecordModelType,
46
- isSecret,
47
- isStringType,
48
- isTemplateDeclaration,
49
- isUnknownType,
50
- listServices,
51
- } from "@typespec/compiler";
52
- import {
53
- HttpOperation,
54
- HttpOperationHeaderParameter,
55
- HttpOperationParameters,
56
- HttpOperationPathParameter,
57
- HttpOperationQueryParameter,
58
- Visibility,
59
- getHeaderFieldName,
60
- getHttpFileModel,
61
- getHttpPart,
62
- getPathParamName,
63
- getQueryParamName,
64
- isBody,
65
- isStatusCode,
66
- } from "@typespec/http";
67
- import {
68
- ArraySchema,
69
- DictionarySchema,
70
- NameType,
71
- ObjectSchema,
72
- Schema,
73
- SchemaContext,
74
- isArraySchema,
75
- normalizeName,
76
- } from "../rlc-common/index.js";
77
- import { GetSchemaOptions, SdkContext } from "./interfaces.js";
78
- import { KnownMediaType, hasMediaType, isMediaTypeMultipartFormData } from "./mediaTypes.js";
79
-
80
- import { reportDiagnostic } from "../lib.js";
81
- import { getModelNamespaceName } from "./namespaceUtils.js";
82
-
83
- export const BINARY_TYPE_UNION =
84
- "string | Uint8Array | ReadableStream<Uint8Array> | NodeReadableStream";
85
-
86
- export const BINARY_AND_FILE_TYPE_UNION = `${BINARY_TYPE_UNION} | File`;
87
-
88
- export function getBinaryType(usage: SchemaContext[]) {
89
- return usage.includes(SchemaContext.Output) ? "Uint8Array" : BINARY_TYPE_UNION;
90
- }
91
-
92
- export function isByteOrByteUnion(dpgContext: SdkContext, type: Type) {
93
- const schema = getSchemaForType(dpgContext, type);
94
- return isBytesType(schema) || isBytesUnion(schema);
95
- }
96
-
97
- function isBytesType(schema: any) {
98
- return schema.type === "string" && (schema.format === "bytes" || schema.format === "binary");
99
- }
100
-
101
- function isBytesUnion(schema: any) {
102
- if (!Array.isArray(schema.enum)) {
103
- return false;
104
- }
105
- for (const ele of schema.enum) {
106
- if (isBytesType(ele)) {
107
- return true;
108
- }
109
- }
110
- return false;
111
- }
112
-
113
- function refineByteType(schema: any) {
114
- schema.typeName = getBinaryType([SchemaContext.Input, SchemaContext.Exception]);
115
- schema.outputTypeName = getBinaryType([SchemaContext.Output]);
116
- return schema;
117
- }
118
-
119
- export function enrichBinaryTypeInBody(schema: any) {
120
- if (isBytesType(schema)) {
121
- refineByteType(schema);
122
- } else if (isBytesUnion(schema)) {
123
- const inputType: string[] = [];
124
- for (const item of schema.enum) {
125
- if (isBytesType(item)) {
126
- refineByteType(item);
127
- }
128
- // ignore the string type for input because we already have it in bytes union
129
- if (getTypeName(item, [SchemaContext.Input]) !== "string") {
130
- inputType.push(getTypeName(item, [SchemaContext.Input]));
131
- }
132
- }
133
- // refine the input type
134
- schema.typeName = inputType.join(" | ");
135
- }
136
- return schema;
137
- }
138
-
139
- export function getSchemaForType(
140
- dpgContext: SdkContext,
141
- typeInput: Type,
142
- options?: GetSchemaOptions,
143
- ): any {
144
- const program = dpgContext.program;
145
- const { usage } = options ?? {};
146
- const type = getEffectiveModelFromType(dpgContext, typeInput);
147
-
148
- const builtinType = getSchemaForLiteral(type);
149
- if (builtinType !== undefined) {
150
- // add in description elements for types derived from primitive types (SecureString, etc.)
151
- const doc = getDoc(program, type);
152
- if (doc) {
153
- builtinType.description = doc;
154
- }
155
- return builtinType;
156
- }
157
-
158
- if (type.kind === "ModelProperty") {
159
- return getSchemaForType(dpgContext, type.type, options);
160
- }
161
-
162
- if (type.kind === "Model") {
163
- const httpPart = getHttpPart(program, type);
164
- if (httpPart) {
165
- const fileModel = getHttpFileModel(program, httpPart.type);
166
- if (fileModel) {
167
- const schema: any = getSchemaForType(dpgContext, fileModel.contents, options);
168
- return {
169
- ...schema,
170
- multipartOptions: {
171
- filenameSchema: {
172
- required: !fileModel.filename.optional,
173
- ...getSchemaForType(dpgContext, fileModel.filename, options),
174
- },
175
- contentTypeSchema: {
176
- required: !fileModel.contentType.optional,
177
- ...getSchemaForType(dpgContext, fileModel.contentType, options),
178
- },
179
- },
180
- };
181
- } else {
182
- // extract body if required
183
- const body =
184
- (httpPart.type.kind === "Model" &&
185
- [...httpPart.type.properties.values()].find((x) => isBody(program, x))) ||
186
- httpPart.type;
187
- return getSchemaForType(dpgContext, body, options);
188
- }
189
- }
190
-
191
- const schema = getSchemaForModel(dpgContext, type, options) as any;
192
- if (isAnonymousObjectSchema(schema)) {
193
- if (Object.keys(schema.properties ?? {}).length === 0) {
194
- // Handle empty anonymous model as Record
195
- schema.typeName = schema.type === "object" ? "Record<string, unknown>" : "unknown";
196
- if (usage && usage.includes(SchemaContext.Output)) {
197
- schema.outputTypeName = schema.type === "object" ? "Record<string, any>" : "any";
198
- }
199
- schema.type = "unknown";
200
- } else {
201
- // Handle non-empty anonymous model as inline model
202
- if (usage && usage.includes(SchemaContext.Output)) {
203
- schema.outputTypeName = getModelInlineSigniture(schema, {
204
- usage: [SchemaContext.Output],
205
- });
206
- }
207
- schema.typeName = getModelInlineSigniture(schema, {
208
- usage: [SchemaContext.Input],
209
- multipart:
210
- options?.isRequestBody && isMediaTypeMultipartFormData(options?.mediaTypes ?? []),
211
- });
212
- schema.type = "object";
213
- }
214
- } else if (!isArrayModelType(type) && !isRecordModelType(type)) {
215
- if (usage && usage.includes(SchemaContext.Output)) {
216
- schema.outputTypeName = `${schema.name}Output`;
217
- }
218
- schema.typeName = `${schema.name}`;
219
- }
220
- schema.usage = usage;
221
- return schema;
222
- } else if (type.kind === "Union") {
223
- return getSchemaForUnion(dpgContext, type, options);
224
- } else if (type.kind === "UnionVariant") {
225
- return getSchemaForUnionVariant(dpgContext, type, options);
226
- } else if (type.kind === "Enum") {
227
- return getSchemaForEnum(dpgContext, type);
228
- } else if (type.kind === "Scalar") {
229
- return getSchemaForScalar(dpgContext, type, options);
230
- } else if (type.kind === "EnumMember") {
231
- return getSchemaForEnumMember(program, type);
232
- }
233
- if (isUnknownType(type)) {
234
- const returnType: any = { name: "unknown", type: "unknown" };
235
- if (usage && usage.includes(SchemaContext.Output)) {
236
- returnType.outputTypeName = "any";
237
- returnType.typeName = "unknown";
238
- }
239
- return returnType;
240
- }
241
- if (isNeverType(type)) {
242
- return { name: "never", type: "never" };
243
- }
244
- if (isNullType(type)) {
245
- return { name: "null", type: "null" };
246
- }
247
- if (type.kind === "Intrinsic" && type.name === "void") {
248
- return { name: "void", type: "void" };
249
- }
250
- reportDiagnostic(program, {
251
- code: "invalid-schema",
252
- format: {
253
- type: type.kind,
254
- property: options?.relevantProperty?.name ?? "",
255
- },
256
- target: type,
257
- });
258
- return undefined;
259
- }
260
- export function getEffectiveModelFromType(context: SdkContext, type: Type): Type {
261
- /**
262
- * If type is an anonymous model, tries to find a named model that has the same
263
- * set of properties when non-schema properties are excluded.
264
- */
265
- if (type.kind === "Model" && type.name === "") {
266
- const effective = getEffectiveModelType(context.program, type, (property) =>
267
- isSchemaProperty(context.program, property),
268
- );
269
- if (effective.name) {
270
- return effective;
271
- }
272
- }
273
- return type;
274
- }
275
- export function includeDerivedModel(model: Model, needRef: boolean = false): boolean {
276
- return (
277
- !needRef &&
278
- !isTemplateDeclaration(model) &&
279
- (!model.templateMapper ||
280
- !model.templateMapper.args ||
281
- model.templateMapper.args?.length === 0 ||
282
- model.derivedModels.length > 0)
283
- );
284
- }
285
-
286
- function applyEncoding(
287
- dpgContext: SdkContext,
288
- typespecType: Scalar | ModelProperty,
289
- target: any = {},
290
- ) {
291
- const encodeData = getEncode(dpgContext.program, typespecType);
292
- if (encodeData) {
293
- const newTarget = { ...target };
294
- const newType = getSchemaForScalar(dpgContext, encodeData.type);
295
- newTarget["type"] = newType["type"];
296
- newTarget["typeName"] = newType["typeName"];
297
- newTarget["outputTypeName"] = newType["outputTypeName"];
298
- // If the target already has a format it takes priority. (e.g. int32)
299
- newTarget["format"] = mergeFormatAndEncoding(
300
- newTarget.format,
301
- encodeData.encoding,
302
- newType["format"],
303
- );
304
- return newTarget;
305
- }
306
- return target;
307
- }
308
-
309
- function mergeFormatAndEncoding(
310
- format: string | undefined,
311
- encoding: string | undefined,
312
- encodeAsFormat: string | undefined,
313
- ): string | undefined {
314
- switch (format) {
315
- case undefined:
316
- return encodeAsFormat ?? encoding ?? format;
317
- case "date-time":
318
- return encoding;
319
- case "duration":
320
- default:
321
- return encodeAsFormat ?? encoding ?? format;
322
- }
323
- }
324
-
325
- function getSchemaForScalar(dpgContext: SdkContext, scalar: Scalar, options?: GetSchemaOptions) {
326
- let result = {} as any;
327
- const isStd = dpgContext.program.checker.isStdType(scalar);
328
- const {
329
- relevantProperty,
330
- isRequestBody,
331
- isParentRequestBody,
332
- mediaTypes: contentTypes,
333
- } = options ?? {};
334
- if (isStd) {
335
- result = getSchemaForStdScalar(dpgContext.program, scalar, {
336
- relevantProperty,
337
- });
338
- } else if (scalar.baseScalar) {
339
- result = getSchemaForScalar(dpgContext, scalar.baseScalar);
340
- }
341
-
342
- if (isBinaryAsRequestBody()) {
343
- // bytes in the body of application/octet-stream is the raw binary payload/file
344
- result.typeName = BINARY_TYPE_UNION;
345
- result.outputTypeName = "Uint8Array";
346
- return result;
347
- } else if (isFormDataBytesInRequestBody()) {
348
- // bytes inside a multipart part (for now) is assumed to be file
349
- result.typeName = BINARY_AND_FILE_TYPE_UNION;
350
- result.outputTypeName = "Uint8Array";
351
- return result;
352
- } else {
353
- // for other cases we would trust the @encode decorator if not present we would treat it as string
354
- const withDecorators = applyEncoding(
355
- dpgContext,
356
- scalar,
357
- result ? applyIntrinsicDecorators(dpgContext.program, scalar, result) : undefined,
358
- );
359
- if (withDecorators.type === "string" && withDecorators.format === "binary") {
360
- withDecorators.typeName = BINARY_TYPE_UNION;
361
- withDecorators.outputTypeName = "Uint8Array";
362
- }
363
- return withDecorators;
364
- }
365
-
366
- function isBinaryAsRequestBody() {
367
- return (
368
- hasMediaType(KnownMediaType.Binary, contentTypes) && isRequestBody && isBytesType(result)
369
- );
370
- }
371
-
372
- function isFormDataBytesInRequestBody() {
373
- return (
374
- hasMediaType(KnownMediaType.MultipartFormData, contentTypes) &&
375
- isParentRequestBody &&
376
- isBytesType(result)
377
- );
378
- }
379
- }
380
-
381
- function getSchemaForUnion(dpgContext: SdkContext, union: Union, options?: GetSchemaOptions) {
382
- const [asEnum, _] = getUnionAsEnum(union);
383
- const variants = Array.from(union.variants.values());
384
-
385
- const values = [];
386
- let namedUnionMember = false;
387
-
388
- if (!(options?.needRef && union.name && !asEnum)) {
389
- if (asEnum?.open && asEnum.members.size > 0) {
390
- for (const [_, member] of asEnum.members.entries()) {
391
- const memberType = getSchemaForType(dpgContext, member.type, {
392
- ...options,
393
- needRef: options?.needRef ?? false,
394
- });
395
- values.push(memberType);
396
- if (memberType.name) {
397
- namedUnionMember = true;
398
- }
399
- }
400
- } else {
401
- for (const variant of variants) {
402
- // We already know it's not a model type
403
- const variantType = getSchemaForType(dpgContext, variant.type, {
404
- ...options,
405
- needRef: isAnonymousModelType(variant.type) ? false : true,
406
- });
407
- values.push(variantType);
408
- if (variantType.typeName) {
409
- namedUnionMember = true;
410
- }
411
- }
412
- }
413
- }
414
-
415
- const schema: any = {};
416
- if (values.length > 0) {
417
- schema.enum = values;
418
- const unionAlias =
419
- asEnum?.open && asEnum?.kind && !namedUnionMember
420
- ? asEnum.kind + (asEnum.nullable ? " | null" : "")
421
- : values.map((item) => `${getTypeName(item, [SchemaContext.Input]) ?? item}`).join(" | ");
422
- const outputUnionAlias =
423
- asEnum?.open && asEnum?.kind && !namedUnionMember
424
- ? asEnum.kind + (asEnum.nullable ? " | null" : "")
425
- : values.map((item) => `${getTypeName(item, [SchemaContext.Output]) ?? item}`).join(" | ");
426
- schema.alias = unionAlias;
427
- schema.outputAlias = outputUnionAlias;
428
- }
429
- if (!union.expression) {
430
- const unionName = union.name ? normalizeName(union.name, NameType.Interface) : undefined;
431
- schema.name = unionName;
432
- schema.type = "object";
433
- schema.typeName = unionName;
434
- schema.outputTypeName = unionName + "Output";
435
- } else if (union.expression && !union.name) {
436
- schema.type = "union";
437
- schema.typeName = schema.alias;
438
- schema.outputTypeName = schema.outputAlias;
439
- delete schema.alias;
440
- delete schema.outputAlias;
441
- } else {
442
- schema.type = "union";
443
- schema.typeName = union.name ?? schema.alias;
444
- schema.outputTypeName = union.name ? union.name + "Output" : schema.outputAlias;
445
- delete schema.alias;
446
- delete schema.outputAlias;
447
- }
448
-
449
- return schema;
450
- }
451
-
452
- function getSchemaForUnionVariant(
453
- dpgContext: SdkContext,
454
- variant: UnionVariant,
455
- options?: GetSchemaOptions,
456
- ): Schema {
457
- return getSchemaForType(dpgContext, variant.type, options);
458
- }
459
-
460
- // An openapi "string" can be defined in several different ways in typespec
461
- function isOasString(type: Type): boolean {
462
- if (type.kind === "String") {
463
- // A string literal
464
- return true;
465
- } else if (type.kind === "Scalar" && type.name === "string") {
466
- // string type
467
- return true;
468
- } else if (type.kind === "Union") {
469
- // A union where all variants are an OasString
470
- for (const variant of type.variants) {
471
- if (!isOasString(variant[1].type)) {
472
- return false;
473
- }
474
- }
475
- return true;
476
- } else if (type.kind === "UnionVariant") {
477
- // A union variant where the type is an OasString
478
- return isOasString(type.type);
479
- }
480
- return false;
481
- }
482
-
483
- function isStringLiteral(type: Type): boolean {
484
- if (type.kind === "Union") {
485
- // A union where all variants are an OasString
486
- for (const variant of type.variants) {
487
- if (!isStringLiteral(variant[1].type)) {
488
- return false;
489
- }
490
- }
491
- return true;
492
- }
493
- return (
494
- type.kind === "String" ||
495
- (type.kind === "EnumMember" && typeof (type.value ?? type.name) === "string") ||
496
- (type.kind === "UnionVariant" && type.type.kind === "String")
497
- );
498
- }
499
-
500
- // Return any string literal values for type
501
- function getStringValues(type: Type): string[] {
502
- switch (type.kind) {
503
- case "String":
504
- return [type.value];
505
- case "Union":
506
- return [...type.variants.values()]
507
- .flatMap((x) => getStringValues(x.type))
508
- .filter((x) => x !== undefined);
509
- case "EnumMember":
510
- return typeof type.value !== "number" ? [type.value ?? type.name] : [];
511
- case "UnionVariant":
512
- return getStringValues(type.type);
513
- default:
514
- return [];
515
- }
516
- }
517
- function validateDiscriminator(
518
- program: Program,
519
- discriminator: Discriminator,
520
- derivedModels: readonly Model[],
521
- ): boolean {
522
- const { propertyName } = discriminator;
523
- const retVals = derivedModels.map((t) => {
524
- const prop = getProperty(t, propertyName);
525
- if (!prop) {
526
- reportDiagnostic(program, {
527
- code: "discriminator",
528
- messageId: "missing",
529
- target: t,
530
- });
531
- return false;
532
- }
533
- let retval = true;
534
- if (!isOasString(prop.type) && prop.type.kind !== "EnumMember" && prop.type.kind !== "Enum") {
535
- reportDiagnostic(program, {
536
- code: "discriminator",
537
- messageId: "type",
538
- target: prop,
539
- });
540
- retval = false;
541
- }
542
- if (prop.optional) {
543
- reportDiagnostic(program, {
544
- code: "discriminator",
545
- messageId: "required",
546
- target: prop,
547
- });
548
- retval = false;
549
- }
550
- return retval;
551
- });
552
- // Map of discriminator value to the model in which it is declared
553
- const discriminatorValues = new Map<string, string>();
554
- for (const t of derivedModels) {
555
- // Get the discriminator property directly in the child model
556
- const prop = t.properties?.get(propertyName);
557
- // Issue warning diagnostic if discriminator property missing or is not a string literal
558
- if (!prop || !isStringLiteral(prop.type)) {
559
- reportDiagnostic(program, {
560
- code: "discriminator-value",
561
- messageId: "literal",
562
- target: prop || t,
563
- });
564
- }
565
- if (prop) {
566
- const vals = getStringValues(prop.type);
567
- vals.forEach((val) => {
568
- if (discriminatorValues.has(val)) {
569
- reportDiagnostic(program, {
570
- code: "discriminator",
571
- messageId: "duplicate",
572
- format: {
573
- val: val,
574
- model1: discriminatorValues.get(val)!,
575
- model2: t.name,
576
- },
577
- target: prop,
578
- });
579
- retVals.push(false);
580
- } else {
581
- discriminatorValues.set(val, t.name);
582
- }
583
- });
584
- }
585
- }
586
- return retVals.every((v) => v);
587
- }
588
-
589
- function getSchemaForModel(dpgContext: SdkContext, model: Model, options?: GetSchemaOptions) {
590
- const { usage, needRef, isRequestBody, mediaTypes: contentTypes } = options ?? {};
591
- if (isArrayModelType(model)) {
592
- return getSchemaForArrayModel(dpgContext, model, options);
593
- }
594
-
595
- const program = dpgContext.program;
596
- const isMultipartBody = isMediaTypeMultipartFormData(contentTypes ?? []);
597
- const isCoreModel = isAzureCoreErrorType(program, model);
598
- const modelSchema: ObjectSchema = {
599
- name: getModelName(dpgContext, model),
600
- type: "object",
601
- isMultipartBody,
602
- description: getDoc(program, model) ?? "",
603
- fromCore: isCoreModel,
604
- };
605
- // normalized the output name
606
- modelSchema.name = normalizeName(modelSchema.name, NameType.Interface, true /** shouldGuard */);
607
-
608
- if (model.name === "Record" && isRecordModelType(model)) {
609
- return getSchemaForRecordModel(dpgContext, model, { usage });
610
- }
611
- modelSchema.typeName = modelSchema.name;
612
- if (usage && usage.includes(SchemaContext.Output)) {
613
- modelSchema.outputTypeName = modelSchema.name + "Output";
614
- }
615
-
616
- modelSchema.properties = {};
617
-
618
- // getSchemaOrRef on all children to push them into components.schemas
619
- const discriminator = getDiscriminator(program, model);
620
- // should respect needRef for derived models unless there's a discriminator in base model
621
- const derivedModels = model.derivedModels.filter((dm) => {
622
- return includeDerivedModel(dm, discriminator ? false : needRef);
623
- });
624
- if (derivedModels.length > 0) {
625
- modelSchema.children = {
626
- all: [],
627
- immediate: [],
628
- };
629
- }
630
- for (const child of derivedModels) {
631
- const childSchema = getSchemaForType(dpgContext, child, {
632
- usage,
633
- needRef: true,
634
- });
635
- for (const [name, prop] of child.properties) {
636
- if (name === discriminator?.propertyName) {
637
- const propSchema = getSchemaForType(dpgContext, prop.type, {
638
- usage,
639
- needRef: !isAnonymousModelType(prop.type),
640
- relevantProperty: prop,
641
- });
642
- childSchema.discriminatorValue = propSchema.type.replace(/"/g, "");
643
- break;
644
- }
645
- }
646
- modelSchema.children?.all?.push(childSchema);
647
- modelSchema.children?.immediate?.push(childSchema);
648
- }
649
-
650
- // Enable option `isPolyParent` and discriminator only when it has valid children
651
- if (
652
- discriminator &&
653
- modelSchema?.children?.all?.length &&
654
- modelSchema?.children?.all?.length > 0
655
- ) {
656
- if (!validateDiscriminator(program, discriminator, derivedModels)) {
657
- // appropriate diagnostic is generated in the validate function
658
- return {};
659
- }
660
-
661
- const { propertyName } = discriminator;
662
-
663
- modelSchema.discriminator = {
664
- name: propertyName,
665
- type: "string",
666
- description: `Discriminator property for ${model.name}.`,
667
- };
668
- modelSchema.discriminatorValue = propertyName;
669
- modelSchema.isPolyParent = true;
670
- }
671
-
672
- // applyExternalDocs(model, modelSchema);
673
- if (needRef) {
674
- return modelSchema;
675
- }
676
- if (isRecordModelType(model)) {
677
- modelSchema.parents = {
678
- all: [getSchemaForRecordModel(dpgContext, model, { usage })],
679
- immediate: [getSchemaForRecordModel(dpgContext, model, { usage })],
680
- };
681
- }
682
- for (const [propName, prop] of model.properties) {
683
- const restApiName = getWireName(dpgContext, prop);
684
- const name = `"${restApiName ?? propName}"`;
685
- if (!isSchemaProperty(program, prop)) {
686
- continue;
687
- }
688
-
689
- const propSchema = getSchemaForType(dpgContext, prop.type, {
690
- usage,
691
- needRef: isAnonymousModelType(prop.type) ? false : true,
692
- relevantProperty: prop,
693
- isParentRequestBody: isRequestBody,
694
- isRequestBody: false,
695
- mediaTypes: contentTypes,
696
- });
697
-
698
- if (propSchema === undefined) {
699
- continue;
700
- }
701
- if (!prop.optional) {
702
- propSchema.required = true;
703
- }
704
- const propertyDescription = getFormattedPropertyDoc(program, prop, propSchema);
705
- propSchema.usage = usage;
706
- // Use the description from ModelProperty not derived from Model Type
707
- propSchema.description = propertyDescription;
708
- modelSchema.properties[name] = propSchema;
709
- // if this property is a discriminator property, remove it to keep autorest validation happy
710
- const { propertyName } = getDiscriminator(program, model) || {};
711
- if (propertyName && name === `"${propertyName}"` && modelSchema.discriminator) {
712
- modelSchema.discriminator = {
713
- ...modelSchema.discriminator,
714
- ...{
715
- type: propSchema.typeName ?? propSchema.type,
716
- typeName: propSchema.typeName,
717
- outputTypeName: propSchema.outputTypeName,
718
- },
719
- };
720
- continue;
721
- }
722
-
723
- // Apply decorators on the property to the type's schema
724
- const newPropSchema = applyIntrinsicDecorators(program, prop, propSchema);
725
- if (newPropSchema === undefined) {
726
- continue;
727
- }
728
- // Use the description from ModelProperty not devired from Model Type
729
- newPropSchema.description = propertyDescription;
730
-
731
- // Should the property be marked as readOnly?
732
- const vis = getSdkVisibility(program, prop);
733
- if (vis && vis.includes(Visibility.Read)) {
734
- const mutability = [];
735
- if (vis.includes(Visibility.Read)) {
736
- if (vis.length > 1) {
737
- mutability.push(SchemaContext.Output);
738
- } else {
739
- newPropSchema["readOnly"] = true;
740
- }
741
- }
742
- if (vis.includes(Visibility.Create) || vis.includes(Visibility.Update)) {
743
- mutability.push(SchemaContext.Input);
744
- }
745
-
746
- if (mutability.length > 0) {
747
- newPropSchema["usage"] = mutability;
748
- }
749
- }
750
- modelSchema.properties[name] = newPropSchema;
751
- }
752
-
753
- if (model.baseModel) {
754
- if (modelSchema.parents === undefined) {
755
- modelSchema.parents = {
756
- all: [],
757
- immediate: [],
758
- };
759
- }
760
- modelSchema.parents.all?.push(
761
- getSchemaForType(dpgContext, model.baseModel, {
762
- usage,
763
- needRef: true,
764
- }),
765
- );
766
- modelSchema.parents.immediate?.push(
767
- getSchemaForType(dpgContext, model.baseModel, {
768
- usage,
769
- needRef: true,
770
- }),
771
- );
772
- }
773
- return modelSchema;
774
- }
775
-
776
- function getSdkVisibility(program: Program, type: ModelProperty): Visibility[] | undefined {
777
- const lifecycle = getLifecycleVisibilityEnum(program);
778
- const visibility = getVisibilityForClass(program, type, lifecycle);
779
- if (visibility) {
780
- const result: Visibility[] = [];
781
- if (lifecycle.members.get("Read") && visibility.has(lifecycle.members.get("Read")!)) {
782
- result.push(Visibility.Read);
783
- }
784
- if (lifecycle.members.get("Create") && visibility.has(lifecycle.members.get("Create")!)) {
785
- result.push(Visibility.Create);
786
- }
787
- if (lifecycle.members.get("Update") && visibility.has(lifecycle.members.get("Update")!)) {
788
- result.push(Visibility.Update);
789
- }
790
- if (lifecycle.members.get("Delete") && visibility.has(lifecycle.members.get("Delete")!)) {
791
- result.push(Visibility.Delete);
792
- }
793
- if (lifecycle.members.get("Query") && visibility.has(lifecycle.members.get("Query")!)) {
794
- result.push(Visibility.Query);
795
- }
796
- return result;
797
- }
798
- return undefined;
799
- }
800
- /**
801
- * Return the model name for a given model
802
- */
803
- function getModelName(dpgContext: SdkContext, model: Model) {
804
- const { program } = dpgContext;
805
-
806
- // 1. check if this is an anonymous model
807
- if (model.name === "") {
808
- return "";
809
- }
810
-
811
- // 2. check if there's a friendly name
812
- const friendlyName = getFriendlyName(program, model);
813
- if (friendlyName) {
814
- return friendlyName;
815
- }
816
-
817
- // 3. check if this is an Azure Core error model
818
- const isCoreModel = isAzureCoreErrorType(program, model);
819
- if (isCoreModel) {
820
- return model.name;
821
- }
822
-
823
- // 4. check if this is a model with template arguments
824
- let name = model.name;
825
- if (model.templateMapper?.args) {
826
- // const isPage = getPagedResult(program, model);
827
- const templateTypeNames = model.templateMapper.args
828
- .map((arg) => (arg.entityKind === "Indeterminate" ? arg.type : arg))
829
- .map((arg: any) => {
830
- switch (arg.kind) {
831
- case "Model":
832
- case "Enum":
833
- case "Union":
834
- case "Scalar":
835
- return arg.name ?? "";
836
- case "String":
837
- case "Boolean":
838
- case "Number":
839
- return arg.value ?? "";
840
- default:
841
- return "";
842
- }
843
- })
844
- .filter((arg) => arg !== "")
845
- .join(" ");
846
- name = normalizeName(`${name} ${templateTypeNames}`, NameType.Interface);
847
- }
848
- let fullNamespacePrefix = getModelNamespaceName(dpgContext, model.namespace!)
849
- .map((nsName) => {
850
- return normalizeName(nsName, NameType.Interface);
851
- })
852
- .join("");
853
- if (
854
- fullNamespacePrefix.startsWith("AzureResourceManager") ||
855
- fullNamespacePrefix.startsWith("AzureCore") ||
856
- fullNamespacePrefix.startsWith("TypeSpecRest") ||
857
- fullNamespacePrefix.startsWith("TypeSpecHttp")
858
- ) {
859
- fullNamespacePrefix = "";
860
- }
861
- // 5. check if this model should be namespaced
862
- return dpgContext.rlcOptions?.enableModelNamespace ? `${fullNamespacePrefix}${name}` : name;
863
- }
864
-
865
- // Map an typespec type to an OA schema. Returns undefined when the resulting
866
- // OA schema is just a regular object schema.
867
- function getSchemaForLiteral(type: Type): any {
868
- switch (type.kind) {
869
- case "Number":
870
- return { type: `${type.value}`, isConstant: true };
871
- case "String":
872
- return { type: `"${type.value}"`, isConstant: true };
873
- case "Boolean":
874
- return { type: `${type.value}`, isConstant: true };
875
- }
876
- if (type.kind === undefined) {
877
- if (typeof type === "string") {
878
- return { type: `"${type}"` };
879
- } else if (typeof type === "number" || typeof type === "boolean") {
880
- return { type: `${type}` };
881
- }
882
- }
883
- return undefined;
884
- }
885
- function applyIntrinsicDecorators(
886
- program: Program,
887
- type: Scalar | ModelProperty,
888
- target: any,
889
- ): any {
890
- const newTarget = { ...target };
891
- const docStr = getDoc(program, type);
892
- const isString = isStringType(program, getPropertyType(type));
893
- const isNumeric = isNumericType(program, getPropertyType(type));
894
-
895
- if (isString && !target?.documentation && docStr) {
896
- newTarget.description = docStr;
897
- }
898
-
899
- const summaryStr = getSummary(program, type);
900
- if (isString && !target.summary && summaryStr) {
901
- newTarget.summary = summaryStr;
902
- }
903
-
904
- const formatStr = getFormat(program, type);
905
- if (isString && !target.format && formatStr) {
906
- newTarget.format = formatStr;
907
- }
908
-
909
- const pattern = getPattern(program, type);
910
- if (isString && !target.pattern && pattern) {
911
- newTarget.pattern = pattern;
912
- }
913
-
914
- const minLength = getMinLength(program, type);
915
- if (isString && !target.minLength && minLength !== undefined) {
916
- newTarget.minLength = minLength;
917
- }
918
-
919
- const maxLength = getMaxLength(program, type);
920
- if (isString && !target.maxLength && maxLength !== undefined) {
921
- newTarget.maxLength = maxLength;
922
- }
923
-
924
- const minValue = getMinValue(program, type);
925
- if (isNumeric && !target.minimum && minValue !== undefined) {
926
- newTarget.minimum = minValue;
927
- }
928
-
929
- const maxValue = getMaxValue(program, type);
930
- if (isNumeric && !target.maximum && maxValue !== undefined) {
931
- newTarget.maximum = maxValue;
932
- }
933
-
934
- if (isSecret(program, type)) {
935
- newTarget.format = "password";
936
- newTarget["x-ms-secret"] = true;
937
- }
938
-
939
- return newTarget;
940
- }
941
-
942
- function getSchemaForEnumMember(program: Program, e: EnumMember) {
943
- const value = e.value ?? e.name;
944
- const type = enumMemberType(e) === "string" ? `"${value}"` : `${value}`;
945
- return { type, description: getDoc(program, e), isConstant: true };
946
- }
947
-
948
- function getSchemaForEnum(dpgContext: SdkContext, e: Enum) {
949
- const values = [];
950
- const memberValues = Array.from(e.members.values());
951
- if (memberValues.length === 0) {
952
- return {};
953
- }
954
- const type = enumMemberType(memberValues[0]!);
955
- for (const option of memberValues) {
956
- if (type !== enumMemberType(option)) {
957
- reportDiagnostic(dpgContext.program, {
958
- code: "union-unsupported",
959
- target: e,
960
- });
961
- continue;
962
- }
963
-
964
- values.push(getSchemaForType(dpgContext, option));
965
- }
966
-
967
- const schema: any = {
968
- type: "object",
969
- name: e.name,
970
- typeName: normalizeName(e.name, NameType.Interface),
971
- outputTypeName: normalizeName(e.name, NameType.Interface) + "Output",
972
- description: getDoc(dpgContext.program, e),
973
- memberType: type,
974
- };
975
-
976
- if (values.length > 0) {
977
- schema.enum = values;
978
- const unionAlias = values
979
- .map((item) => `${getTypeName(item, [SchemaContext.Input]) ?? item}`)
980
- .join(" | ");
981
- schema.alias = unionAlias;
982
- schema.outputAlias = unionAlias;
983
- }
984
- return schema;
985
- }
986
-
987
- function enumMemberType(member: EnumMember) {
988
- const memberValue = member.value;
989
- if (typeof memberValue === "number") {
990
- return "number";
991
- }
992
- return "string";
993
- }
994
- /**
995
- * Map TypeSpec intrinsic models to open api definitions
996
- */
997
- function getSchemaForArrayModel(dpgContext: SdkContext, type: Model, options?: GetSchemaOptions) {
998
- const { program } = dpgContext;
999
- const { indexer } = type;
1000
- const { usage, isParentRequestBody, mediaTypes: contentTypes } = options ?? {};
1001
- let schema: any = {};
1002
- if (!indexer) {
1003
- return schema;
1004
- }
1005
- if (isArrayModelType(type)) {
1006
- schema = {
1007
- type: "array",
1008
- items: getSchemaForType(dpgContext, indexer.value!, {
1009
- usage,
1010
- isRequestBody: false,
1011
- mediaTypes: contentTypes,
1012
- // special handling for array in formdata
1013
- isParentRequestBody: hasMediaType(KnownMediaType.MultipartFormData, contentTypes)
1014
- ? isParentRequestBody
1015
- : false,
1016
- needRef: !isAnonymousModelType(indexer.value!),
1017
- }),
1018
- description: getDoc(program, type),
1019
- };
1020
- if (
1021
- !program.checker.isStdType(indexer.value) &&
1022
- !isUnknownType(indexer.value!) &&
1023
- indexer.value?.kind &&
1024
- schema.items.name &&
1025
- !schema.items.enum
1026
- ) {
1027
- schema.typeName = `Array<${schema.items.name}>`;
1028
- if (usage && usage.includes(SchemaContext.Output)) {
1029
- schema.outputTypeName = `Array<${schema.items.name}Output>`;
1030
- }
1031
- } else {
1032
- if (schema.items.typeName) {
1033
- if (schema.items.type === "dictionary") {
1034
- schema.typeName = `${schema.items.typeName}[]`;
1035
- if (usage && usage.includes(SchemaContext.Output)) {
1036
- schema.outputTypeName = `(${schema.items.outputTypeName})[]`;
1037
- }
1038
- } else if (schema.items.type === "union") {
1039
- schema.typeName = `(${schema.items.typeName})[]`;
1040
- if (usage && usage.includes(SchemaContext.Output)) {
1041
- schema.outputTypeName = `(${schema.items.outputTypeName})[]`;
1042
- }
1043
- } else if (
1044
- schema.items.typeName.includes(BINARY_TYPE_UNION) &&
1045
- schema.items.type === "string"
1046
- ) {
1047
- schema.typeName = `(${schema.items.typeName})[]`;
1048
- if (usage && usage.includes(SchemaContext.Output)) {
1049
- schema.outputTypeName = `(${schema.items.outputTypeName})[]`;
1050
- }
1051
- } else if (isAnonymousObjectSchema(schema.items)) {
1052
- schema.typeName = `${schema.items.typeName}[]`;
1053
- if (usage && usage.includes(SchemaContext.Output)) {
1054
- schema.outputTypeName = `${schema.items.outputTypeName}[]`;
1055
- }
1056
- } else {
1057
- schema.typeName = schema.items.typeName
1058
- .split("|")
1059
- .map((typeName: string) => {
1060
- return `${typeName}[]`;
1061
- })
1062
- .join(" | ");
1063
- if (schema.items.outputTypeName && usage && usage.includes(SchemaContext.Output)) {
1064
- schema.outputTypeName = schema.items.outputTypeName
1065
- .split("|")
1066
- .map((typeName: string) => {
1067
- return `${typeName}[]`;
1068
- })
1069
- .join(" | ");
1070
- }
1071
- }
1072
- } else if (schema.items?.type?.includes("|")) {
1073
- schema.typeName = `(${schema.items.type})[]`;
1074
- } else {
1075
- schema.typeName = `${schema.items.type}[]`;
1076
- }
1077
- }
1078
- schema.usage = usage;
1079
- return schema;
1080
- }
1081
- }
1082
-
1083
- function getSchemaForRecordModel(dpgContext: SdkContext, type: Model, options?: GetSchemaOptions) {
1084
- const { program } = dpgContext;
1085
- const { indexer } = type;
1086
- const { usage } = options ?? {};
1087
- let schema: any = {};
1088
- if (!indexer) {
1089
- return schema;
1090
- }
1091
- if (isRecordModelType(type)) {
1092
- const valueType = getSchemaForType(dpgContext, indexer?.value, {
1093
- usage,
1094
- needRef: !isAnonymousModelType(indexer.value),
1095
- });
1096
- schema = {
1097
- type: "dictionary",
1098
- additionalProperties: valueType,
1099
- description: getDoc(program, type),
1100
- };
1101
- if (
1102
- !program.checker.isStdType(indexer.value) &&
1103
- !isUnknownType(indexer.value!) &&
1104
- !isUnionType(indexer.value!)
1105
- ) {
1106
- schema.typeName = `Record<string, ${valueType.typeName}>`;
1107
- schema.valueTypeName = valueType.name;
1108
- if (usage && usage.includes(SchemaContext.Output)) {
1109
- schema.outputTypeName = `Record<string, ${valueType.outputTypeName}>`;
1110
- schema.outputValueTypeName = `${valueType.outputTypeName}`;
1111
- }
1112
- } else if (isUnknownType(indexer.value!)) {
1113
- schema.typeName = `Record<string, ${valueType.typeName ?? valueType.type}>`;
1114
- if (usage && usage.includes(SchemaContext.Output)) {
1115
- schema.outputTypeName = `Record<string, ${valueType.outputTypeName ?? valueType.type}>`;
1116
- }
1117
- } else {
1118
- schema.typeName = `Record<string, ${getTypeName(valueType, [SchemaContext.Input])}>`;
1119
- schema.outputTypeName = `Record<string, ${getTypeName(valueType, [SchemaContext.Output])}>`;
1120
- }
1121
- schema.usage = usage;
1122
- return schema;
1123
- }
1124
- }
1125
-
1126
- function isUnionType(type: Type) {
1127
- return type.kind === "Union";
1128
- }
1129
-
1130
- export function isObjectOrDictType(schema: Schema) {
1131
- return (
1132
- (schema.type === "object" && (schema as ObjectSchema).properties !== undefined) ||
1133
- schema.type === "dictionary"
1134
- );
1135
- }
1136
-
1137
- export function isArrayType(schema: Schema) {
1138
- return schema.type === "array";
1139
- }
1140
-
1141
- function getSchemaForStdScalar(program: Program, type: Scalar, options?: GetSchemaOptions) {
1142
- const { relevantProperty } = options ?? {};
1143
- if (!program.checker.isStdType(type)) {
1144
- return undefined;
1145
- }
1146
-
1147
- /**
1148
- * lookup for @encode decorator
1149
- * if absent use typespec type (or default way of serializing that type)
1150
- * if present respect type provided in @encode
1151
- */
1152
- let format = undefined;
1153
- if (relevantProperty) {
1154
- const encodeData = getEncode(program, relevantProperty);
1155
- if (encodeData && isEncodeTypeEffective(type, encodeData)) {
1156
- type = encodeData.type;
1157
- format = encodeData.encoding;
1158
- }
1159
- }
1160
- const name = type.name;
1161
- const description = getSummary(program, type);
1162
- switch (name) {
1163
- case "bytes":
1164
- return { type: "string", format: "bytes", description };
1165
- case "integer":
1166
- return applyIntrinsicDecorators(program, type, {
1167
- type: "number",
1168
- });
1169
- case "int8":
1170
- return applyIntrinsicDecorators(program, type, {
1171
- type: "number",
1172
- format: "int8",
1173
- });
1174
- case "int16":
1175
- return applyIntrinsicDecorators(program, type, {
1176
- type: "number",
1177
- format: "int16",
1178
- });
1179
- case "int32":
1180
- return applyIntrinsicDecorators(program, type, {
1181
- type: "number",
1182
- format: "int32",
1183
- });
1184
- case "int64":
1185
- return applyIntrinsicDecorators(program, type, {
1186
- type: "number",
1187
- format: "int64",
1188
- });
1189
- case "safeint":
1190
- return applyIntrinsicDecorators(program, type, {
1191
- type: "number",
1192
- format: "safeint",
1193
- });
1194
- case "numeric":
1195
- return applyIntrinsicDecorators(program, type, {
1196
- type: "number",
1197
- });
1198
- case "uint8":
1199
- return applyIntrinsicDecorators(program, type, {
1200
- type: "number",
1201
- format: "uint8",
1202
- });
1203
- case "uint16":
1204
- return applyIntrinsicDecorators(program, type, {
1205
- type: "number",
1206
- format: "uint16",
1207
- });
1208
- case "uint32":
1209
- return applyIntrinsicDecorators(program, type, {
1210
- type: "number",
1211
- format: "uint32",
1212
- });
1213
- case "uint64":
1214
- return applyIntrinsicDecorators(program, type, {
1215
- type: "number",
1216
- format: "uint64",
1217
- });
1218
- case "float64":
1219
- return applyIntrinsicDecorators(program, type, {
1220
- type: "number",
1221
- format: "float64",
1222
- });
1223
- case "float32":
1224
- return applyIntrinsicDecorators(program, type, {
1225
- type: "number",
1226
- format: "float32",
1227
- });
1228
- case "float":
1229
- return applyIntrinsicDecorators(program, type, {
1230
- type: "number",
1231
- format: "float",
1232
- });
1233
- case "decimal":
1234
- reportDiagnostic(program, {
1235
- code: "decimal-to-number",
1236
- format: {
1237
- propertyName: relevantProperty?.name ?? "",
1238
- },
1239
- target: relevantProperty ?? NoTarget,
1240
- });
1241
- return applyIntrinsicDecorators(program, type, {
1242
- type: "number",
1243
- format: "decimal",
1244
- description: "decimal",
1245
- });
1246
- case "decimal128":
1247
- reportDiagnostic(program, {
1248
- code: "decimal-to-number",
1249
- format: {
1250
- propertyName: relevantProperty?.name ?? "",
1251
- },
1252
- target: relevantProperty ?? NoTarget,
1253
- });
1254
- return applyIntrinsicDecorators(program, type, {
1255
- type: "number",
1256
- format: "decimal128",
1257
- description: "decimal128",
1258
- });
1259
- case "string":
1260
- if (format === "binary") {
1261
- return {
1262
- type: "string",
1263
- format: "binary",
1264
- description,
1265
- typeName: BINARY_TYPE_UNION,
1266
- outputTypeName: "Uint8Array",
1267
- };
1268
- }
1269
- return applyIntrinsicDecorators(program, type, {
1270
- type: "string",
1271
- });
1272
- case "boolean":
1273
- return { type: "boolean", description };
1274
- case "plainDate":
1275
- return {
1276
- type: "string",
1277
- format,
1278
- description,
1279
- typeName: "string",
1280
- outputTypeName: "string",
1281
- };
1282
- case "utcDateTime":
1283
- return {
1284
- type: "string",
1285
- format,
1286
- description,
1287
- typeName: "Date | string",
1288
- outputTypeName: "string",
1289
- };
1290
- case "offsetDateTime":
1291
- return {
1292
- type: "string",
1293
- format: "date-time",
1294
- description,
1295
- typeName: "string",
1296
- outputTypeName: "string",
1297
- };
1298
- case "plainTime":
1299
- return {
1300
- type: "string",
1301
- format: "time",
1302
- description,
1303
- typeName: "string",
1304
- outputTypeName: "string",
1305
- };
1306
- case "duration":
1307
- return { type: "string", format, description };
1308
- case "url":
1309
- return { type: "string", format: "uri" };
1310
- }
1311
- }
1312
-
1313
- function isEncodeTypeEffective(type: Scalar, encodeData: EncodeData | undefined) {
1314
- if (!encodeData) {
1315
- return false;
1316
- }
1317
- const datetimeTypes = ["plaindate", "utcdatetime", "offsetdatetime", "plaintime"];
1318
- if (datetimeTypes.includes(type.name.toLowerCase()) && encodeData.type.name === "string") {
1319
- return false;
1320
- }
1321
- return true;
1322
- }
1323
-
1324
- export function getTypeName(schema: Schema, usage?: SchemaContext[]): string {
1325
- // TODO: Handle more cases
1326
- return getPriorityName(schema, usage) ?? schema.type ?? "any";
1327
- }
1328
-
1329
- export function getImportedModelName(schema: Schema, usage?: SchemaContext[]): string[] {
1330
- switch (schema.type) {
1331
- case "array": {
1332
- const ret = new Set<string>();
1333
- [(schema as ArraySchema).items]
1334
- .filter((i?: Schema) => !!i)
1335
- .forEach((i?: Schema) => getImportedModelName(i!, usage).forEach((it) => ret.add(it)));
1336
- return [...ret];
1337
- }
1338
- case "object": {
1339
- if (isAnonymousObjectSchema(schema)) {
1340
- const ret = new Set<string>();
1341
- const properties = (schema as ObjectSchema).properties ?? {};
1342
- for (const name in properties) {
1343
- if (!properties[name]) {
1344
- continue;
1345
- }
1346
- getImportedModelName(properties[name]!, usage).forEach((it) => ret.add(it));
1347
- }
1348
- return [...ret];
1349
- }
1350
- return getPriorityName(schema, usage) ? [getPriorityName(schema, usage)] : [];
1351
- }
1352
- case "dictionary": {
1353
- const ret = new Set<string>();
1354
- [(schema as DictionarySchema).additionalProperties]
1355
- .filter((i?: Schema) => !!i)
1356
- .forEach((i?: Schema) => getImportedModelName(i!, usage).forEach((it) => ret.add(it)));
1357
-
1358
- return [...ret];
1359
- }
1360
- case "union": {
1361
- const ret = new Set<string>();
1362
- ((schema as Schema).enum ?? [])
1363
- .filter((i?: Schema) => !!i)
1364
- .forEach((i?: Schema) => getImportedModelName(i!, usage).forEach((it) => ret.add(it)));
1365
-
1366
- return [...ret];
1367
- }
1368
- default:
1369
- return [];
1370
- }
1371
- }
1372
-
1373
- function getPriorityName(schema: Schema, usage?: SchemaContext[]): string {
1374
- return usage && usage.includes(SchemaContext.Input) && !usage.includes(SchemaContext.Output)
1375
- ? (schema.typeName ?? schema.name)
1376
- : (schema.outputTypeName ?? schema.typeName ?? schema.name);
1377
- }
1378
-
1379
- function getEnumStringDescription(type: any) {
1380
- if (
1381
- (type.name === "string" ||
1382
- type.alias === "string" ||
1383
- type.name === "number" ||
1384
- type.alias === "number" ||
1385
- type.name === "boolean" ||
1386
- type.alias === "boolean") &&
1387
- type.enum &&
1388
- type.enum.length > 0
1389
- ) {
1390
- return `Possible values: ${type.enum
1391
- .map((e: Schema) => {
1392
- return e.type;
1393
- })
1394
- .join(", ")}`;
1395
- }
1396
- return undefined;
1397
- }
1398
-
1399
- function getBinaryDescription(type: any) {
1400
- if (type?.typeName?.includes(BINARY_TYPE_UNION)) {
1401
- return `Value may contain any sequence of octets`;
1402
- }
1403
- return undefined;
1404
- }
1405
-
1406
- function getDecimalDescription(type: any) {
1407
- if ((type.format === "decimal" || type.format === "decimal128") && type.type === "number") {
1408
- return `NOTE: This property is represented as a 'number' in JavaScript, but it corresponds to a 'decimal' type in other languages.
1409
- Due to the inherent limitations of floating-point arithmetic in JavaScript, precision issues may arise when performing arithmetic operations.
1410
- If your application requires high precision for arithmetic operations or when round-tripping data back to other languages, consider using a library like decimal.js, which provides an arbitrary-precision Decimal type.
1411
- For simpler cases, where you need to control the number of decimal places for display purposes, you can use the 'toFixed()' method. However, be aware that 'toFixed()' returns a string and may not be suitable for all arithmetic precision requirements.
1412
- Always be cautious with direct arithmetic operations and consider implementing appropriate rounding strategies to maintain accuracy.
1413
- `;
1414
- }
1415
- return undefined;
1416
- }
1417
-
1418
- export function getFormattedPropertyDoc(
1419
- program: Program,
1420
- type: ModelProperty | Type,
1421
- schemaType: any,
1422
- sperator: string = "\n\n",
1423
- ) {
1424
- const propertyDoc = getDoc(program, type);
1425
- const enhancedDocFromType =
1426
- getEnumStringDescription(schemaType) ??
1427
- getDecimalDescription(schemaType) ??
1428
- getBinaryDescription(schemaType);
1429
- if (propertyDoc && enhancedDocFromType) {
1430
- return `${propertyDoc}${sperator}${enhancedDocFromType}`;
1431
- }
1432
- return propertyDoc ?? enhancedDocFromType;
1433
- }
1434
-
1435
- export function getBodyType(route: HttpOperation): Type | undefined {
1436
- const bodyModel = route.parameters.body?.type;
1437
- return bodyModel;
1438
- }
1439
-
1440
- export function getValueTypeValue(
1441
- value: Value,
1442
- ): string | boolean | null | number | Array<unknown> | object | undefined {
1443
- switch (value.valueKind) {
1444
- case "ArrayValue":
1445
- return value.values.map((x) => getValueTypeValue(x));
1446
- case "BooleanValue":
1447
- case "StringValue":
1448
- case "NullValue":
1449
- return value.value;
1450
- case "NumericValue":
1451
- return value.value.asNumber();
1452
- case "EnumValue":
1453
- return value.value.value ?? value.value.name;
1454
- case "ObjectValue":
1455
- return Object.fromEntries(
1456
- [...value.properties.keys()].map((x) => [
1457
- x,
1458
- getValueTypeValue(value.properties.get(x)!.value),
1459
- ]),
1460
- );
1461
- default:
1462
- // TODO: handle scalar value
1463
- return undefined;
1464
- }
1465
- }
1466
-
1467
- /**
1468
- * Predict if the default value exists in param, we would follow the rules:
1469
- * 1. If we have specific default literal in param
1470
- * 2. If we take the default api-version value into considerations
1471
- * @param program
1472
- * @param dpgContext
1473
- * @param param The param to predict
1474
- * @returns
1475
- */
1476
- export function predictDefaultValue(dpgContext: SdkContext, param?: ModelProperty) {
1477
- if (!param) {
1478
- return;
1479
- }
1480
- const program = dpgContext.program;
1481
- const specificDefault = param.defaultValue ? getValueTypeValue(param.defaultValue) : undefined;
1482
- if (specificDefault) {
1483
- if (typeof specificDefault === "object") {
1484
- reportDiagnostic(program, {
1485
- code: "default-value-object",
1486
- format: {
1487
- propertyName: param.name,
1488
- },
1489
- target: param,
1490
- });
1491
- return specificDefault.toString();
1492
- }
1493
- return specificDefault;
1494
- }
1495
- const serviceNamespace = getDefaultService(
1496
- program,
1497
- dpgContext.rlcOptions?.isModularLibrary,
1498
- )?.type;
1499
- if (!serviceNamespace) {
1500
- return;
1501
- }
1502
- const defaultApiVersion = getDefaultApiVersionString(dpgContext);
1503
- if (param && isApiVersion(dpgContext, param) && defaultApiVersion) {
1504
- return defaultApiVersion;
1505
- }
1506
- return;
1507
- }
1508
-
1509
- export function getDefaultService(
1510
- program: Program,
1511
- isModularLibrary: boolean = true,
1512
- ): Service | undefined {
1513
- const services = listServices(program);
1514
- if (!services || services.length === 0) {
1515
- reportDiagnostic(program, {
1516
- code: "no-service-defined",
1517
- target: NoTarget,
1518
- });
1519
- }
1520
- if (services.length > 1 && !isModularLibrary) {
1521
- reportDiagnostic(program, {
1522
- code: "more-than-one-service",
1523
- target: NoTarget,
1524
- });
1525
- }
1526
- return services[0];
1527
- }
1528
- /**
1529
- * Return the default api version from the program; undefined if no default
1530
- */
1531
- export function getDefaultApiVersionString(dpgContext: SdkContext): string | undefined {
1532
- const program = dpgContext.program;
1533
- const isModularLibrary = dpgContext.rlcOptions?.isModularLibrary;
1534
- return getDefaultService(program, isModularLibrary)
1535
- ? getDefaultApiVersion(dpgContext, getDefaultService(program, isModularLibrary)!.type)?.value
1536
- : undefined;
1537
- }
1538
-
1539
- export function trimUsage(model: any) {
1540
- if (typeof model !== "object") {
1541
- return model;
1542
- }
1543
- const tmpModel = Object.assign({}, model);
1544
- const tmpModelKeys = Object.keys(tmpModel).filter((item) => {
1545
- return item !== "usage";
1546
- });
1547
- const ordered = tmpModelKeys.sort().reduce((obj, key) => {
1548
- (obj as any)[key] = trimUsage(tmpModel[key]);
1549
- return obj;
1550
- }, {});
1551
- return ordered;
1552
- }
1553
-
1554
- export function isAzureCoreErrorType(program: Program, t?: Type): boolean {
1555
- if (!t || t.kind !== "Model") {
1556
- return false;
1557
- }
1558
- const effective = getEffectiveSchemaType(program, t);
1559
- if (!["error", "errorresponse", "innererror"].includes(effective.name.toLowerCase())) {
1560
- return false;
1561
- }
1562
- return isAzureCoreFoundationsNamespace(effective);
1563
- }
1564
-
1565
- function isAzureCoreFoundationsNamespace(t?: Type, skipFoundation: boolean = false): boolean {
1566
- const namespaces = (skipFoundation ? ".Azure.Core" : ".Azure.Core.Foundations").split(".");
1567
- while (
1568
- namespaces.length > 0 &&
1569
- (t?.kind === "Model" || t?.kind === "Enum" || t?.kind === "Union" || t?.kind === "Namespace") &&
1570
- t.namespace?.name === namespaces.pop()
1571
- ) {
1572
- t = t.namespace;
1573
- }
1574
- return namespaces.length == 0;
1575
- }
1576
-
1577
- // Check if the schema is an anonymous object
1578
- export function isAnonymousObjectSchema(schema: Schema) {
1579
- return schema.name === "" && schema.type === "object";
1580
- }
1581
-
1582
- // Check if the type is an anonymous model
1583
- export function isAnonymousModelType(type: Type) {
1584
- if (type.kind === "Model") {
1585
- return type.name === "";
1586
- }
1587
- return false;
1588
- }
1589
-
1590
- /**
1591
- * Get the inline signiture of the model
1592
- * @param schema object schema detail
1593
- * @param options other optional parameters
1594
- * @returns
1595
- */
1596
- export function getModelInlineSigniture(
1597
- schema: ObjectSchema,
1598
- options: {
1599
- importedModels?: Set<string>;
1600
- usage?: SchemaContext[];
1601
- multipart?: boolean;
1602
- } = {},
1603
- ) {
1604
- if (options.multipart) {
1605
- return getMultipartInlineSignature(schema, options.importedModels, options.usage);
1606
- }
1607
-
1608
- let schemaSignature = `{`;
1609
- for (const propName in schema.properties) {
1610
- const propType = schema.properties[propName]!;
1611
- const propTypeName = getTypeName(propType, options.usage);
1612
- if (!propType || !propTypeName) {
1613
- continue;
1614
- }
1615
- if (options.importedModels) {
1616
- const importNames = getImportedModelName(propType);
1617
- if (importNames) {
1618
- importNames!.forEach(options.importedModels.add, options.importedModels);
1619
- }
1620
- }
1621
- const isOptional = propType.required ? "" : "?";
1622
- schemaSignature += `${propName}${isOptional}: ${propTypeName};`;
1623
- }
1624
-
1625
- schemaSignature += `}`;
1626
- return schemaSignature;
1627
- }
1628
-
1629
- function getMultipartInlineSignature(
1630
- schema: ObjectSchema,
1631
- importedModels?: Set<string>,
1632
- usage?: SchemaContext[],
1633
- ): string {
1634
- const types = Object.entries(schema.properties ?? {})
1635
- .map(([propertyName, property]) => {
1636
- let schema: Schema;
1637
-
1638
- // Flatten arrays for file uploads
1639
- if (
1640
- isArraySchema(property) &&
1641
- property.items &&
1642
- getTypeName(property.items, usage).includes(BINARY_AND_FILE_TYPE_UNION)
1643
- ) {
1644
- schema = property.items;
1645
- } else {
1646
- schema = property;
1647
- }
1648
-
1649
- const typeName = getTypeName(schema, usage);
1650
- if (!typeName) {
1651
- return undefined;
1652
- }
1653
-
1654
- const importNames = getImportedModelName(schema);
1655
- if (importedModels && importNames) {
1656
- importNames.forEach(importedModels.add.bind(importedModels));
1657
- }
1658
-
1659
- if (typeName.includes("File")) {
1660
- return `{ name: ${propertyName}, body: ${typeName}, filename?: string, contentType?: string }`;
1661
- } else {
1662
- return `{ name: ${propertyName}, body: ${typeName} }`;
1663
- }
1664
- })
1665
- .filter(Boolean)
1666
- .join(" | ");
1667
-
1668
- return `FormData | Array<${types}>`;
1669
- }
1670
-
1671
- /**
1672
- * A "schema property" here is a property that is emitted to OpenAPI schema.
1673
- *
1674
- * Headers, parameters, status codes are not schema properties even they are
1675
- * represented as properties in typespec.
1676
- */
1677
- export function isSchemaProperty(program: Program, property: ModelProperty): boolean {
1678
- const headerInfo = getHeaderFieldName(program, property);
1679
- const queryInfo = getQueryParamName(program, property);
1680
- const pathInfo = getPathParamName(program, property);
1681
- const statusCodeInfo = isStatusCode(program, property);
1682
- const isNonVisibility = getSdkVisibility(program, property)?.includes(Visibility.None);
1683
- return !(headerInfo || queryInfo || pathInfo || statusCodeInfo || isNonVisibility);
1684
- }
1685
-
1686
- export function getEffectiveSchemaType(program: Program, type: Model | Union): Model {
1687
- // If type is an anonymous model, tries to find a named model that has the same properties
1688
- let effective: Model | undefined = undefined;
1689
- if (type.kind === "Union") {
1690
- const nonNullOptions = [...type.variants.values()]
1691
- .map((x) => x.type)
1692
- .filter((t) => !isNullType(t));
1693
- if (
1694
- nonNullOptions.length === 1 &&
1695
- nonNullOptions[0]?.kind === "Model" &&
1696
- nonNullOptions[0]?.name === ""
1697
- ) {
1698
- effective = getEffectiveModelType(program, nonNullOptions[0]);
1699
- }
1700
- return type as any;
1701
- } else if (type.name === "") {
1702
- effective = getEffectiveModelType(program, type, (property) =>
1703
- isSchemaProperty(program, property),
1704
- );
1705
- }
1706
-
1707
- if (effective?.name) {
1708
- return effective;
1709
- }
1710
- return type as Model;
1711
- }
1712
-
1713
- export function isBodyRequired(parameter: HttpOperationParameters) {
1714
- return parameter.body?.type && parameter.body?.property?.optional !== true ? true : false;
1715
- }
1716
-
1717
- export function getCollectionFormat(
1718
- context: SdkContext,
1719
- param: HttpOperationPathParameter | HttpOperationQueryParameter | HttpOperationHeaderParameter,
1720
- ): string | undefined {
1721
- const type = param.param;
1722
- const encode = getEncode(context.program, param.param);
1723
- if (type.type.kind === "Model" && isArrayModelType(type.type)) {
1724
- if (param.explode) {
1725
- return "multi";
1726
- }
1727
- switch (encode?.encoding) {
1728
- case "ArrayEncoding.pipeDelimited":
1729
- return "pipes";
1730
- case "ArrayEncoding.spaceDelimited":
1731
- return "ssv";
1732
- default:
1733
- return "csv";
1734
- }
1735
- }
1736
- return;
1737
- }