@microsoft/typespec-msgraph 0.0.1-Preview.2 → 0.0.1-Preview.20

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 (602) hide show
  1. package/dist/src/components/acceptable-media-types-annotation.d.ts +3 -4
  2. package/dist/src/components/acceptable-media-types-annotation.d.ts.map +1 -1
  3. package/dist/src/components/acceptable-media-types-annotation.js +2 -6
  4. package/dist/src/components/acceptable-media-types-annotation.js.map +1 -1
  5. package/dist/src/components/alternate-keys-annotation.d.ts +4 -4
  6. package/dist/src/components/alternate-keys-annotation.d.ts.map +1 -1
  7. package/dist/src/components/alternate-keys-annotation.js +9 -16
  8. package/dist/src/components/alternate-keys-annotation.js.map +1 -1
  9. package/dist/src/components/annotations.d.ts +12 -0
  10. package/dist/src/components/annotations.d.ts.map +1 -0
  11. package/dist/src/components/annotations.js +84 -0
  12. package/dist/src/components/annotations.js.map +1 -0
  13. package/dist/src/components/common-elements.d.ts +16 -74
  14. package/dist/src/components/common-elements.d.ts.map +1 -1
  15. package/dist/src/components/common-elements.js +12 -26
  16. package/dist/src/components/common-elements.js.map +1 -1
  17. package/dist/src/components/computed-annotation.d.ts +3 -4
  18. package/dist/src/components/computed-annotation.d.ts.map +1 -1
  19. package/dist/src/components/computed-annotation.js +4 -10
  20. package/dist/src/components/computed-annotation.js.map +1 -1
  21. package/dist/src/components/count-restrictions-annotation.d.ts +3 -4
  22. package/dist/src/components/count-restrictions-annotation.d.ts.map +1 -1
  23. package/dist/src/components/count-restrictions-annotation.js +4 -13
  24. package/dist/src/components/count-restrictions-annotation.js.map +1 -1
  25. package/dist/src/components/delta-annotation.d.ts +6 -0
  26. package/dist/src/components/delta-annotation.d.ts.map +1 -0
  27. package/dist/src/components/delta-annotation.js +18 -0
  28. package/dist/src/components/delta-annotation.js.map +1 -0
  29. package/dist/src/components/description-annotation.d.ts +3 -4
  30. package/dist/src/components/description-annotation.d.ts.map +1 -1
  31. package/dist/src/components/description-annotation.js +5 -11
  32. package/dist/src/components/description-annotation.js.map +1 -1
  33. package/dist/src/components/entity-container-element.d.ts +21 -0
  34. package/dist/src/components/entity-container-element.d.ts.map +1 -0
  35. package/dist/src/components/entity-container-element.js +28 -0
  36. package/dist/src/components/entity-container-element.js.map +1 -0
  37. package/dist/src/components/enum-type-element.d.ts +6 -0
  38. package/dist/src/components/enum-type-element.d.ts.map +1 -0
  39. package/dist/src/components/enum-type-element.js +20 -0
  40. package/dist/src/components/enum-type-element.js.map +1 -0
  41. package/dist/src/components/expand-restrictions-annotation.d.ts +4 -5
  42. package/dist/src/components/expand-restrictions-annotation.d.ts.map +1 -1
  43. package/dist/src/components/expand-restrictions-annotation.js +9 -30
  44. package/dist/src/components/expand-restrictions-annotation.js.map +1 -1
  45. package/dist/src/components/filter-restrictions-annotation.d.ts +6 -0
  46. package/dist/src/components/filter-restrictions-annotation.d.ts.map +1 -0
  47. package/dist/src/components/filter-restrictions-annotation.js +10 -0
  48. package/dist/src/components/filter-restrictions-annotation.js.map +1 -0
  49. package/dist/src/components/immutable-annotation.d.ts +5 -0
  50. package/dist/src/components/immutable-annotation.d.ts.map +1 -0
  51. package/dist/src/components/immutable-annotation.js +6 -0
  52. package/dist/src/components/immutable-annotation.js.map +1 -0
  53. package/dist/src/components/index.d.ts +2 -14
  54. package/dist/src/components/index.d.ts.map +1 -1
  55. package/dist/src/components/index.js +9 -14
  56. package/dist/src/components/index.js.map +1 -1
  57. package/dist/src/components/insert-restrictions-annotation.d.ts +6 -0
  58. package/dist/src/components/insert-restrictions-annotation.d.ts.map +1 -0
  59. package/dist/src/components/insert-restrictions-annotation.js +10 -0
  60. package/dist/src/components/insert-restrictions-annotation.js.map +1 -0
  61. package/dist/src/components/is-url-annotation.d.ts +5 -0
  62. package/dist/src/components/is-url-annotation.d.ts.map +1 -0
  63. package/dist/src/components/is-url-annotation.js +6 -0
  64. package/dist/src/components/is-url-annotation.js.map +1 -0
  65. package/dist/src/components/open-property-type-constraint-annotation-element.d.ts +5 -0
  66. package/dist/src/components/open-property-type-constraint-annotation-element.d.ts.map +1 -0
  67. package/dist/src/components/open-property-type-constraint-annotation-element.js +7 -0
  68. package/dist/src/components/open-property-type-constraint-annotation-element.js.map +1 -0
  69. package/dist/src/components/operation-element.d.ts +6 -0
  70. package/dist/src/components/operation-element.d.ts.map +1 -0
  71. package/dist/src/components/operation-element.js +83 -0
  72. package/dist/src/components/operation-element.js.map +1 -0
  73. package/dist/src/components/permissions-annotation.d.ts +3 -4
  74. package/dist/src/components/permissions-annotation.d.ts.map +1 -1
  75. package/dist/src/components/permissions-annotation.js +2 -10
  76. package/dist/src/components/permissions-annotation.js.map +1 -1
  77. package/dist/src/components/property-element.d.ts +4 -4
  78. package/dist/src/components/property-element.d.ts.map +1 -1
  79. package/dist/src/components/property-element.js +20 -32
  80. package/dist/src/components/property-element.js.map +1 -1
  81. package/dist/src/components/reference-target-element.d.ts +9 -0
  82. package/dist/src/components/reference-target-element.d.ts.map +1 -0
  83. package/dist/src/components/reference-target-element.js +3 -0
  84. package/dist/src/components/reference-target-element.js.map +1 -0
  85. package/dist/src/components/revisions-annotation.d.ts +4 -5
  86. package/dist/src/components/revisions-annotation.d.ts.map +1 -1
  87. package/dist/src/components/revisions-annotation.js +8 -51
  88. package/dist/src/components/revisions-annotation.js.map +1 -1
  89. package/dist/src/components/schema-element.d.ts +6 -0
  90. package/dist/src/components/schema-element.d.ts.map +1 -0
  91. package/dist/src/components/schema-element.js +44 -0
  92. package/dist/src/components/schema-element.js.map +1 -0
  93. package/dist/src/components/search-restrictions-annotation.d.ts +3 -4
  94. package/dist/src/components/search-restrictions-annotation.d.ts.map +1 -1
  95. package/dist/src/components/search-restrictions-annotation.js +4 -13
  96. package/dist/src/components/search-restrictions-annotation.js.map +1 -1
  97. package/dist/src/components/select-supported-annotation.d.ts +5 -0
  98. package/dist/src/components/select-supported-annotation.d.ts.map +1 -0
  99. package/dist/src/components/select-supported-annotation.js +6 -0
  100. package/dist/src/components/select-supported-annotation.js.map +1 -0
  101. package/dist/src/components/skip-supported-annotation.d.ts +3 -4
  102. package/dist/src/components/skip-supported-annotation.d.ts.map +1 -1
  103. package/dist/src/components/skip-supported-annotation.js +2 -11
  104. package/dist/src/components/skip-supported-annotation.js.map +1 -1
  105. package/dist/src/components/sort-restrictions-annotation.d.ts +4 -5
  106. package/dist/src/components/sort-restrictions-annotation.d.ts.map +1 -1
  107. package/dist/src/components/sort-restrictions-annotation.js +9 -30
  108. package/dist/src/components/sort-restrictions-annotation.js.map +1 -1
  109. package/dist/src/components/structured-type-element.d.ts +7 -4
  110. package/dist/src/components/structured-type-element.d.ts.map +1 -1
  111. package/dist/src/components/structured-type-element.js +26 -66
  112. package/dist/src/components/structured-type-element.js.map +1 -1
  113. package/dist/src/components/term-element.d.ts +9 -0
  114. package/dist/src/components/term-element.d.ts.map +1 -0
  115. package/dist/src/components/term-element.js +8 -0
  116. package/dist/src/components/term-element.js.map +1 -0
  117. package/dist/src/components/top-supported-annotation.d.ts +3 -4
  118. package/dist/src/components/top-supported-annotation.d.ts.map +1 -1
  119. package/dist/src/components/top-supported-annotation.js +3 -10
  120. package/dist/src/components/top-supported-annotation.js.map +1 -1
  121. package/dist/src/components/update-restrictions-annotation.d.ts +6 -0
  122. package/dist/src/components/update-restrictions-annotation.d.ts.map +1 -0
  123. package/dist/src/components/update-restrictions-annotation.js +8 -0
  124. package/dist/src/components/update-restrictions-annotation.js.map +1 -0
  125. package/dist/src/decorators/abstract.d.ts.map +1 -1
  126. package/dist/src/decorators/abstract.js +0 -6
  127. package/dist/src/decorators/abstract.js.map +1 -1
  128. package/dist/src/decorators/action.d.ts +10 -0
  129. package/dist/src/decorators/action.d.ts.map +1 -0
  130. package/dist/src/decorators/action.js +16 -0
  131. package/dist/src/decorators/action.js.map +1 -0
  132. package/dist/src/decorators/{handlers/custom/additional-query-parameters.d.ts → additional-query-parameters.d.ts} +3 -1
  133. package/dist/src/decorators/additional-query-parameters.d.ts.map +1 -0
  134. package/dist/src/decorators/additional-query-parameters.js +21 -0
  135. package/dist/src/decorators/additional-query-parameters.js.map +1 -0
  136. package/dist/src/decorators/address-url-msa.d.ts +12 -0
  137. package/dist/src/decorators/address-url-msa.d.ts.map +1 -0
  138. package/dist/src/decorators/address-url-msa.js +19 -0
  139. package/dist/src/decorators/address-url-msa.js.map +1 -0
  140. package/dist/src/decorators/address-url.d.ts +18 -0
  141. package/dist/src/decorators/address-url.d.ts.map +1 -0
  142. package/dist/src/decorators/address-url.js +21 -0
  143. package/dist/src/decorators/address-url.js.map +1 -0
  144. package/dist/src/decorators/ags-attribute.d.ts +17 -0
  145. package/dist/src/decorators/ags-attribute.d.ts.map +1 -0
  146. package/dist/src/decorators/ags-attribute.js +153 -0
  147. package/dist/src/decorators/ags-attribute.js.map +1 -0
  148. package/dist/src/decorators/allowed-values.d.ts +15 -0
  149. package/dist/src/decorators/allowed-values.d.ts.map +1 -0
  150. package/dist/src/decorators/allowed-values.js +37 -0
  151. package/dist/src/decorators/allowed-values.js.map +1 -0
  152. package/dist/src/decorators/complex.d.ts +2 -0
  153. package/dist/src/decorators/complex.d.ts.map +1 -1
  154. package/dist/src/decorators/complex.js +2 -6
  155. package/dist/src/decorators/complex.js.map +1 -1
  156. package/dist/src/decorators/computed.d.ts +2 -0
  157. package/dist/src/decorators/computed.d.ts.map +1 -1
  158. package/dist/src/decorators/computed.js +2 -0
  159. package/dist/src/decorators/computed.js.map +1 -1
  160. package/dist/src/decorators/count.d.ts +2 -0
  161. package/dist/src/decorators/count.d.ts.map +1 -1
  162. package/dist/src/decorators/count.js +2 -0
  163. package/dist/src/decorators/count.js.map +1 -1
  164. package/dist/src/decorators/delta-collection.d.ts +8 -0
  165. package/dist/src/decorators/delta-collection.d.ts.map +1 -0
  166. package/dist/src/decorators/delta-collection.js +12 -0
  167. package/dist/src/decorators/delta-collection.js.map +1 -0
  168. package/dist/src/decorators/delta.d.ts +10 -0
  169. package/dist/src/decorators/delta.d.ts.map +1 -0
  170. package/dist/src/decorators/delta.js +14 -0
  171. package/dist/src/decorators/delta.js.map +1 -0
  172. package/dist/src/decorators/entity.d.ts +2 -0
  173. package/dist/src/decorators/entity.d.ts.map +1 -1
  174. package/dist/src/decorators/entity.js +2 -6
  175. package/dist/src/decorators/entity.js.map +1 -1
  176. package/dist/src/decorators/expand.d.ts +1 -0
  177. package/dist/src/decorators/expand.d.ts.map +1 -1
  178. package/dist/src/decorators/expand.js +5 -1
  179. package/dist/src/decorators/expand.js.map +1 -1
  180. package/dist/src/decorators/experimental.d.ts +9 -0
  181. package/dist/src/decorators/experimental.d.ts.map +1 -0
  182. package/dist/src/decorators/experimental.js +13 -0
  183. package/dist/src/decorators/experimental.js.map +1 -0
  184. package/dist/src/decorators/filter.d.ts +13 -0
  185. package/dist/src/decorators/filter.d.ts.map +1 -0
  186. package/dist/src/decorators/filter.js +29 -0
  187. package/dist/src/decorators/filter.js.map +1 -0
  188. package/dist/src/decorators/flags.d.ts +9 -0
  189. package/dist/src/decorators/flags.d.ts.map +1 -0
  190. package/dist/src/decorators/flags.js +13 -0
  191. package/dist/src/decorators/flags.js.map +1 -0
  192. package/dist/src/decorators/function.d.ts +15 -0
  193. package/dist/src/decorators/function.d.ts.map +1 -0
  194. package/dist/src/decorators/function.js +19 -0
  195. package/dist/src/decorators/function.js.map +1 -0
  196. package/dist/src/decorators/global-operation.d.ts +9 -0
  197. package/dist/src/decorators/global-operation.d.ts.map +1 -0
  198. package/dist/src/decorators/global-operation.js +13 -0
  199. package/dist/src/decorators/global-operation.js.map +1 -0
  200. package/dist/src/decorators/graph-deprecated.d.ts +11 -0
  201. package/dist/src/decorators/graph-deprecated.d.ts.map +1 -0
  202. package/dist/src/decorators/graph-deprecated.js +19 -0
  203. package/dist/src/decorators/graph-deprecated.js.map +1 -0
  204. package/dist/src/decorators/graph-route.d.ts +18 -0
  205. package/dist/src/decorators/graph-route.d.ts.map +1 -0
  206. package/dist/src/decorators/graph-route.js +109 -0
  207. package/dist/src/decorators/graph-route.js.map +1 -0
  208. package/dist/src/decorators/immutable.d.ts +8 -0
  209. package/dist/src/decorators/immutable.d.ts.map +1 -0
  210. package/dist/src/decorators/immutable.js +12 -0
  211. package/dist/src/decorators/immutable.js.map +1 -0
  212. package/dist/src/decorators/index.d.ts +35 -1
  213. package/dist/src/decorators/index.d.ts.map +1 -1
  214. package/dist/src/decorators/index.js +35 -1
  215. package/dist/src/decorators/index.js.map +1 -1
  216. package/dist/src/decorators/is-owner.d.ts +10 -0
  217. package/dist/src/decorators/is-owner.d.ts.map +1 -0
  218. package/dist/src/decorators/is-owner.js +17 -0
  219. package/dist/src/decorators/is-owner.js.map +1 -0
  220. package/dist/src/decorators/limited-charset.d.ts +9 -0
  221. package/dist/src/decorators/limited-charset.d.ts.map +1 -0
  222. package/dist/src/decorators/limited-charset.js +13 -0
  223. package/dist/src/decorators/limited-charset.js.map +1 -0
  224. package/dist/src/decorators/media.d.ts +10 -0
  225. package/dist/src/decorators/media.d.ts.map +1 -0
  226. package/dist/src/decorators/media.js +16 -0
  227. package/dist/src/decorators/media.js.map +1 -0
  228. package/dist/src/decorators/open.d.ts.map +1 -1
  229. package/dist/src/decorators/open.js +0 -6
  230. package/dist/src/decorators/open.js.map +1 -1
  231. package/dist/src/decorators/{routed-interfaces.d.ts → operation-parameters.d.ts} +3 -11
  232. package/dist/src/decorators/operation-parameters.d.ts.map +1 -0
  233. package/dist/src/decorators/operation-parameters.js +15 -0
  234. package/dist/src/decorators/operation-parameters.js.map +1 -0
  235. package/dist/src/decorators/order-by.d.ts +2 -0
  236. package/dist/src/decorators/order-by.d.ts.map +1 -1
  237. package/dist/src/decorators/order-by.js +2 -0
  238. package/dist/src/decorators/order-by.js.map +1 -1
  239. package/dist/src/decorators/ownerless.d.ts +8 -0
  240. package/dist/src/decorators/ownerless.d.ts.map +1 -0
  241. package/dist/src/decorators/ownerless.js +12 -0
  242. package/dist/src/decorators/ownerless.js.map +1 -0
  243. package/dist/src/decorators/paged-collection.d.ts +8 -0
  244. package/dist/src/decorators/paged-collection.d.ts.map +1 -0
  245. package/dist/src/decorators/paged-collection.js +12 -0
  246. package/dist/src/decorators/paged-collection.js.map +1 -0
  247. package/dist/src/decorators/partial.d.ts +12 -0
  248. package/dist/src/decorators/partial.d.ts.map +1 -0
  249. package/dist/src/decorators/partial.js +18 -0
  250. package/dist/src/decorators/partial.js.map +1 -0
  251. package/dist/src/decorators/passthrough-address-url-msa.d.ts +11 -0
  252. package/dist/src/decorators/passthrough-address-url-msa.d.ts.map +1 -0
  253. package/dist/src/decorators/passthrough-address-url-msa.js +17 -0
  254. package/dist/src/decorators/passthrough-address-url-msa.js.map +1 -0
  255. package/dist/src/decorators/passthrough-address-url.d.ts +11 -0
  256. package/dist/src/decorators/passthrough-address-url.d.ts.map +1 -0
  257. package/dist/src/decorators/passthrough-address-url.js +17 -0
  258. package/dist/src/decorators/passthrough-address-url.js.map +1 -0
  259. package/dist/src/decorators/private-preview-definition.d.ts +2 -0
  260. package/dist/src/decorators/private-preview-definition.d.ts.map +1 -1
  261. package/dist/src/decorators/private-preview-definition.js +2 -0
  262. package/dist/src/decorators/private-preview-definition.js.map +1 -1
  263. package/dist/src/decorators/private-preview.d.ts +2 -0
  264. package/dist/src/decorators/private-preview.d.ts.map +1 -1
  265. package/dist/src/decorators/private-preview.js +2 -10
  266. package/dist/src/decorators/private-preview.js.map +1 -1
  267. package/dist/src/decorators/privileged.d.ts +9 -0
  268. package/dist/src/decorators/privileged.d.ts.map +1 -0
  269. package/dist/src/decorators/privileged.js +13 -0
  270. package/dist/src/decorators/privileged.js.map +1 -0
  271. package/dist/src/decorators/public-namespace.d.ts +12 -0
  272. package/dist/src/decorators/public-namespace.d.ts.map +1 -0
  273. package/dist/src/decorators/public-namespace.js +21 -0
  274. package/dist/src/decorators/public-namespace.js.map +1 -0
  275. package/dist/src/decorators/reference-target.d.ts +16 -0
  276. package/dist/src/decorators/reference-target.d.ts.map +1 -0
  277. package/dist/src/decorators/reference-target.js +58 -0
  278. package/dist/src/decorators/reference-target.js.map +1 -0
  279. package/dist/src/decorators/required-for-create.d.ts +12 -0
  280. package/dist/src/decorators/required-for-create.d.ts.map +1 -0
  281. package/dist/src/decorators/required-for-create.js +16 -0
  282. package/dist/src/decorators/required-for-create.js.map +1 -0
  283. package/dist/src/decorators/return-source.d.ts +9 -0
  284. package/dist/src/decorators/return-source.d.ts.map +1 -0
  285. package/dist/src/decorators/return-source.js +26 -0
  286. package/dist/src/decorators/return-source.js.map +1 -0
  287. package/dist/src/decorators/search.d.ts +2 -0
  288. package/dist/src/decorators/search.d.ts.map +1 -1
  289. package/dist/src/decorators/search.js +2 -0
  290. package/dist/src/decorators/search.js.map +1 -1
  291. package/dist/src/decorators/select.d.ts +9 -0
  292. package/dist/src/decorators/select.d.ts.map +1 -0
  293. package/dist/src/decorators/select.js +13 -0
  294. package/dist/src/decorators/select.js.map +1 -0
  295. package/dist/src/decorators/skip.d.ts +2 -0
  296. package/dist/src/decorators/skip.d.ts.map +1 -1
  297. package/dist/src/decorators/skip.js +2 -0
  298. package/dist/src/decorators/skip.js.map +1 -1
  299. package/dist/src/decorators/term.d.ts +13 -0
  300. package/dist/src/decorators/term.d.ts.map +1 -0
  301. package/dist/src/decorators/term.js +14 -0
  302. package/dist/src/decorators/term.js.map +1 -0
  303. package/dist/src/decorators/top.d.ts +2 -0
  304. package/dist/src/decorators/top.d.ts.map +1 -1
  305. package/dist/src/decorators/top.js +2 -0
  306. package/dist/src/decorators/top.js.map +1 -1
  307. package/dist/src/decorators/workload-name-msa.d.ts +9 -0
  308. package/dist/src/decorators/workload-name-msa.d.ts.map +1 -0
  309. package/dist/src/decorators/workload-name-msa.js +13 -0
  310. package/dist/src/decorators/workload-name-msa.js.map +1 -0
  311. package/dist/src/decorators/workload-name.d.ts +9 -0
  312. package/dist/src/decorators/workload-name.d.ts.map +1 -0
  313. package/dist/src/decorators/workload-name.js +13 -0
  314. package/dist/src/decorators/workload-name.js.map +1 -0
  315. package/dist/src/decorators/workload-namespace.d.ts +10 -0
  316. package/dist/src/decorators/workload-namespace.d.ts.map +1 -0
  317. package/dist/src/decorators/workload-namespace.js +19 -0
  318. package/dist/src/decorators/workload-namespace.js.map +1 -0
  319. package/dist/src/dom/error-interceptor.d.ts +2 -0
  320. package/dist/src/dom/error-interceptor.d.ts.map +1 -0
  321. package/dist/src/dom/error-interceptor.js +13 -0
  322. package/dist/src/dom/error-interceptor.js.map +1 -0
  323. package/dist/src/dom/reconciler.js.map +1 -1
  324. package/dist/src/dom/renderer.d.ts +1 -0
  325. package/dist/src/dom/renderer.d.ts.map +1 -1
  326. package/dist/src/dom/renderer.js +1 -0
  327. package/dist/src/dom/renderer.js.map +1 -1
  328. package/dist/src/emitter.d.ts +2 -1
  329. package/dist/src/emitter.d.ts.map +1 -1
  330. package/dist/src/emitter.js +28 -3
  331. package/dist/src/emitter.js.map +1 -1
  332. package/dist/src/entities/address-url.d.ts +8 -0
  333. package/dist/src/entities/address-url.d.ts.map +1 -0
  334. package/dist/src/entities/address-url.js +47 -0
  335. package/dist/src/entities/address-url.js.map +1 -0
  336. package/dist/src/entities/annotations.d.ts +48 -0
  337. package/dist/src/entities/annotations.d.ts.map +1 -0
  338. package/dist/src/entities/annotations.js +166 -0
  339. package/dist/src/entities/annotations.js.map +1 -0
  340. package/dist/src/entities/entity-container.d.ts +33 -0
  341. package/dist/src/entities/entity-container.d.ts.map +1 -0
  342. package/dist/src/entities/entity-container.js +56 -0
  343. package/dist/src/entities/entity-container.js.map +1 -0
  344. package/dist/src/entities/enum.d.ts +19 -0
  345. package/dist/src/entities/enum.d.ts.map +1 -0
  346. package/dist/src/entities/enum.js +27 -0
  347. package/dist/src/entities/enum.js.map +1 -0
  348. package/dist/src/entities/model.d.ts +62 -0
  349. package/dist/src/entities/model.d.ts.map +1 -0
  350. package/dist/src/entities/model.js +266 -0
  351. package/dist/src/entities/model.js.map +1 -0
  352. package/dist/src/entities/ms-graph-route.d.ts +13 -0
  353. package/dist/src/entities/ms-graph-route.d.ts.map +1 -0
  354. package/dist/src/entities/ms-graph-route.js +70 -0
  355. package/dist/src/entities/ms-graph-route.js.map +1 -0
  356. package/dist/src/entities/namespace.d.ts +29 -0
  357. package/dist/src/entities/namespace.d.ts.map +1 -0
  358. package/dist/src/entities/namespace.js +218 -0
  359. package/dist/src/entities/namespace.js.map +1 -0
  360. package/dist/src/entities/operation.d.ts +36 -0
  361. package/dist/src/entities/operation.d.ts.map +1 -0
  362. package/dist/src/entities/operation.js +146 -0
  363. package/dist/src/entities/operation.js.map +1 -0
  364. package/dist/src/entities/property.d.ts +3 -0
  365. package/dist/src/entities/property.d.ts.map +1 -0
  366. package/dist/src/entities/property.js +57 -0
  367. package/dist/src/entities/property.js.map +1 -0
  368. package/dist/src/entities/revision-definition.d.ts +10 -0
  369. package/dist/src/entities/revision-definition.d.ts.map +1 -0
  370. package/dist/src/entities/revision-definition.js +42 -0
  371. package/dist/src/entities/revision-definition.js.map +1 -0
  372. package/dist/src/entities/term.d.ts +8 -0
  373. package/dist/src/entities/term.d.ts.map +1 -0
  374. package/dist/src/entities/term.js +14 -0
  375. package/dist/src/entities/term.js.map +1 -0
  376. package/dist/src/index.d.ts +1 -3
  377. package/dist/src/index.d.ts.map +1 -1
  378. package/dist/src/index.js +1 -3
  379. package/dist/src/index.js.map +1 -1
  380. package/dist/src/lib.d.ts +128 -106
  381. package/dist/src/lib.d.ts.map +1 -1
  382. package/dist/src/lib.js +70 -10
  383. package/dist/src/lib.js.map +1 -1
  384. package/dist/src/linter.d.ts +1 -2
  385. package/dist/src/linter.d.ts.map +1 -1
  386. package/dist/src/linter.js +16 -34
  387. package/dist/src/linter.js.map +1 -1
  388. package/dist/src/rules/abstract.d.ts +2 -1
  389. package/dist/src/rules/abstract.d.ts.map +1 -1
  390. package/dist/src/rules/abstract.js +8 -8
  391. package/dist/src/rules/abstract.js.map +1 -1
  392. package/dist/src/rules/address-url.d.ts +19 -0
  393. package/dist/src/rules/address-url.d.ts.map +1 -0
  394. package/dist/src/rules/address-url.js +161 -0
  395. package/dist/src/rules/address-url.js.map +1 -0
  396. package/dist/src/rules/allowed-values.d.ts +7 -0
  397. package/dist/src/rules/allowed-values.d.ts.map +1 -0
  398. package/dist/src/rules/allowed-values.js +59 -0
  399. package/dist/src/rules/allowed-values.js.map +1 -0
  400. package/dist/src/rules/alternate-key.d.ts +4 -3
  401. package/dist/src/rules/alternate-key.d.ts.map +1 -1
  402. package/dist/src/rules/alternate-key.js +23 -23
  403. package/dist/src/rules/alternate-key.js.map +1 -1
  404. package/dist/src/rules/collection-navigation-properties-not-nullable.d.ts +3 -0
  405. package/dist/src/rules/collection-navigation-properties-not-nullable.d.ts.map +1 -0
  406. package/dist/src/rules/collection-navigation-properties-not-nullable.js +28 -0
  407. package/dist/src/rules/collection-navigation-properties-not-nullable.js.map +1 -0
  408. package/dist/src/rules/complex.d.ts +3 -0
  409. package/dist/src/rules/complex.d.ts.map +1 -0
  410. package/dist/src/rules/complex.js +27 -0
  411. package/dist/src/rules/complex.js.map +1 -0
  412. package/dist/src/rules/computed.d.ts +2 -3
  413. package/dist/src/rules/computed.d.ts.map +1 -1
  414. package/dist/src/rules/computed.js +14 -16
  415. package/dist/src/rules/computed.js.map +1 -1
  416. package/dist/src/rules/contains.d.ts +2 -1
  417. package/dist/src/rules/contains.d.ts.map +1 -1
  418. package/dist/src/rules/contains.js +9 -8
  419. package/dist/src/rules/contains.js.map +1 -1
  420. package/dist/src/rules/count.d.ts +2 -1
  421. package/dist/src/rules/count.d.ts.map +1 -1
  422. package/dist/src/rules/count.js +12 -9
  423. package/dist/src/rules/count.js.map +1 -1
  424. package/dist/src/rules/delta.d.ts +8 -0
  425. package/dist/src/rules/delta.d.ts.map +1 -0
  426. package/dist/src/rules/delta.js +204 -0
  427. package/dist/src/rules/delta.js.map +1 -0
  428. package/dist/src/rules/disallowed-typespec-decorators.d.ts +3 -0
  429. package/dist/src/rules/disallowed-typespec-decorators.d.ts.map +1 -0
  430. package/dist/src/rules/disallowed-typespec-decorators.js +37 -0
  431. package/dist/src/rules/disallowed-typespec-decorators.js.map +1 -0
  432. package/dist/src/rules/entity.d.ts +6 -1
  433. package/dist/src/rules/entity.d.ts.map +1 -1
  434. package/dist/src/rules/entity.js +177 -11
  435. package/dist/src/rules/entity.js.map +1 -1
  436. package/dist/src/rules/enum.d.ts +4 -0
  437. package/dist/src/rules/enum.d.ts.map +1 -0
  438. package/dist/src/rules/enum.js +29 -0
  439. package/dist/src/rules/enum.js.map +1 -0
  440. package/dist/src/rules/expand.d.ts +3 -2
  441. package/dist/src/rules/expand.d.ts.map +1 -1
  442. package/dist/src/rules/expand.js +29 -23
  443. package/dist/src/rules/expand.js.map +1 -1
  444. package/dist/src/rules/extends-on-same-type.d.ts +3 -0
  445. package/dist/src/rules/extends-on-same-type.d.ts.map +1 -0
  446. package/dist/src/rules/extends-on-same-type.js +39 -0
  447. package/dist/src/rules/extends-on-same-type.js.map +1 -0
  448. package/dist/src/rules/filter.d.ts +7 -0
  449. package/dist/src/rules/filter.d.ts.map +1 -0
  450. package/dist/src/rules/filter.js +160 -0
  451. package/dist/src/rules/filter.js.map +1 -0
  452. package/dist/src/rules/function.d.ts +3 -0
  453. package/dist/src/rules/function.d.ts.map +1 -0
  454. package/dist/src/rules/function.js +26 -0
  455. package/dist/src/rules/function.js.map +1 -0
  456. package/dist/src/rules/global-operation.d.ts +4 -0
  457. package/dist/src/rules/global-operation.d.ts.map +1 -0
  458. package/dist/src/rules/global-operation.js +60 -0
  459. package/dist/src/rules/global-operation.js.map +1 -0
  460. package/dist/src/rules/graph-deprecated.d.ts +8 -0
  461. package/dist/src/rules/graph-deprecated.d.ts.map +1 -0
  462. package/dist/src/rules/graph-deprecated.js +152 -0
  463. package/dist/src/rules/graph-deprecated.js.map +1 -0
  464. package/dist/src/rules/graph-route.d.ts +14 -0
  465. package/dist/src/rules/graph-route.d.ts.map +1 -0
  466. package/dist/src/rules/graph-route.js +225 -0
  467. package/dist/src/rules/graph-route.js.map +1 -0
  468. package/dist/src/rules/index.d.ts +25 -7
  469. package/dist/src/rules/index.d.ts.map +1 -1
  470. package/dist/src/rules/index.js +25 -162
  471. package/dist/src/rules/index.js.map +1 -1
  472. package/dist/src/rules/limited-charset.d.ts +3 -0
  473. package/dist/src/rules/limited-charset.d.ts.map +1 -0
  474. package/dist/src/rules/limited-charset.js +42 -0
  475. package/dist/src/rules/limited-charset.js.map +1 -0
  476. package/dist/src/rules/media.d.ts +10 -0
  477. package/dist/src/rules/media.d.ts.map +1 -0
  478. package/dist/src/rules/media.js +122 -0
  479. package/dist/src/rules/media.js.map +1 -0
  480. package/dist/src/rules/model.d.ts +4 -0
  481. package/dist/src/rules/model.d.ts.map +1 -0
  482. package/dist/src/rules/model.js +36 -0
  483. package/dist/src/rules/model.js.map +1 -0
  484. package/dist/src/rules/namespace.d.ts +6 -0
  485. package/dist/src/rules/namespace.d.ts.map +1 -0
  486. package/dist/src/rules/namespace.js +110 -0
  487. package/dist/src/rules/namespace.js.map +1 -0
  488. package/dist/src/rules/open.d.ts +2 -1
  489. package/dist/src/rules/open.d.ts.map +1 -1
  490. package/dist/src/rules/open.js +9 -8
  491. package/dist/src/rules/open.js.map +1 -1
  492. package/dist/src/rules/operation-inside-interface.d.ts +4 -0
  493. package/dist/src/rules/operation-inside-interface.d.ts.map +1 -0
  494. package/dist/src/rules/operation-inside-interface.js +62 -0
  495. package/dist/src/rules/operation-inside-interface.js.map +1 -0
  496. package/dist/src/rules/order-by.d.ts +3 -2
  497. package/dist/src/rules/order-by.d.ts.map +1 -1
  498. package/dist/src/rules/order-by.js +25 -24
  499. package/dist/src/rules/order-by.js.map +1 -1
  500. package/dist/src/rules/ownerless.d.ts +11 -0
  501. package/dist/src/rules/ownerless.d.ts.map +1 -0
  502. package/dist/src/rules/ownerless.js +171 -0
  503. package/dist/src/rules/ownerless.js.map +1 -0
  504. package/dist/src/rules/partial.d.ts +7 -0
  505. package/dist/src/rules/partial.d.ts.map +1 -0
  506. package/dist/src/rules/partial.js +52 -0
  507. package/dist/src/rules/partial.js.map +1 -0
  508. package/dist/src/rules/record-t.d.ts +5 -0
  509. package/dist/src/rules/record-t.d.ts.map +1 -0
  510. package/dist/src/rules/record-t.js +78 -0
  511. package/dist/src/rules/record-t.js.map +1 -0
  512. package/dist/src/rules/reference-target.d.ts +8 -0
  513. package/dist/src/rules/reference-target.d.ts.map +1 -0
  514. package/dist/src/rules/reference-target.js +118 -0
  515. package/dist/src/rules/reference-target.js.map +1 -0
  516. package/dist/src/rules/references.d.ts +2 -1
  517. package/dist/src/rules/references.d.ts.map +1 -1
  518. package/dist/src/rules/references.js +9 -8
  519. package/dist/src/rules/references.js.map +1 -1
  520. package/dist/src/rules/required-for-create.d.ts +3 -0
  521. package/dist/src/rules/required-for-create.d.ts.map +1 -0
  522. package/dist/src/rules/required-for-create.js +42 -0
  523. package/dist/src/rules/required-for-create.js.map +1 -0
  524. package/dist/src/rules/return-source.d.ts +3 -0
  525. package/dist/src/rules/return-source.d.ts.map +1 -0
  526. package/dist/src/rules/return-source.js +27 -0
  527. package/dist/src/rules/return-source.js.map +1 -0
  528. package/dist/src/rules/search.d.ts +2 -1
  529. package/dist/src/rules/search.d.ts.map +1 -1
  530. package/dist/src/rules/search.js +12 -9
  531. package/dist/src/rules/search.js.map +1 -1
  532. package/dist/src/rules/skip.d.ts +2 -1
  533. package/dist/src/rules/skip.d.ts.map +1 -1
  534. package/dist/src/rules/skip.js +12 -9
  535. package/dist/src/rules/skip.js.map +1 -1
  536. package/dist/src/rules/top.d.ts +2 -1
  537. package/dist/src/rules/top.d.ts.map +1 -1
  538. package/dist/src/rules/top.js +12 -9
  539. package/dist/src/rules/top.js.map +1 -1
  540. package/dist/src/testing/index.d.ts +1 -0
  541. package/dist/src/testing/index.d.ts.map +1 -1
  542. package/dist/src/testing/index.js +21 -0
  543. package/dist/src/testing/index.js.map +1 -1
  544. package/dist/src/utils.d.ts +59 -2
  545. package/dist/src/utils.d.ts.map +1 -1
  546. package/dist/src/utils.js +535 -12
  547. package/dist/src/utils.js.map +1 -1
  548. package/dist/src/validate.d.ts +3 -0
  549. package/dist/src/validate.d.ts.map +1 -0
  550. package/dist/src/validate.js +81 -0
  551. package/dist/src/validate.js.map +1 -0
  552. package/lib/bodies.tsp +71 -0
  553. package/lib/decorators.tsp +350 -40
  554. package/lib/deployment.tsp +18 -0
  555. package/lib/lib.tsp +9 -23
  556. package/lib/msgraph.tsp +5 -0
  557. package/lib/porcelain.tsp +190 -0
  558. package/lib/responses.tsp +59 -0
  559. package/lib/shared-models.tsp +25 -0
  560. package/package.json +42 -32
  561. package/dist/src/components/program-context.d.ts +0 -4
  562. package/dist/src/components/program-context.d.ts.map +0 -1
  563. package/dist/src/components/program-context.js +0 -3
  564. package/dist/src/components/program-context.js.map +0 -1
  565. package/dist/src/csdl.d.ts +0 -8
  566. package/dist/src/csdl.d.ts.map +0 -1
  567. package/dist/src/csdl.js +0 -298
  568. package/dist/src/csdl.js.map +0 -1
  569. package/dist/src/decorators/attribute-builder.d.ts +0 -2
  570. package/dist/src/decorators/attribute-builder.d.ts.map +0 -1
  571. package/dist/src/decorators/attribute-builder.js +0 -166
  572. package/dist/src/decorators/attribute-builder.js.map +0 -1
  573. package/dist/src/decorators/attributes.d.ts +0 -57
  574. package/dist/src/decorators/attributes.d.ts.map +0 -1
  575. package/dist/src/decorators/attributes.js +0 -50
  576. package/dist/src/decorators/attributes.js.map +0 -1
  577. package/dist/src/decorators/handlers/custom/additional-query-parameters.d.ts.map +0 -1
  578. package/dist/src/decorators/handlers/custom/additional-query-parameters.js +0 -36
  579. package/dist/src/decorators/handlers/custom/additional-query-parameters.js.map +0 -1
  580. package/dist/src/decorators/handlers/custom/ags-attribute.d.ts +0 -7
  581. package/dist/src/decorators/handlers/custom/ags-attribute.d.ts.map +0 -1
  582. package/dist/src/decorators/handlers/custom/ags-attribute.js +0 -36
  583. package/dist/src/decorators/handlers/custom/ags-attribute.js.map +0 -1
  584. package/dist/src/decorators/handlers/custom/index.d.ts +0 -3
  585. package/dist/src/decorators/handlers/custom/index.d.ts.map +0 -1
  586. package/dist/src/decorators/handlers/custom/index.js +0 -3
  587. package/dist/src/decorators/handlers/custom/index.js.map +0 -1
  588. package/dist/src/decorators/handlers/index.d.ts +0 -30
  589. package/dist/src/decorators/handlers/index.d.ts.map +0 -1
  590. package/dist/src/decorators/handlers/index.js +0 -121
  591. package/dist/src/decorators/handlers/index.js.map +0 -1
  592. package/dist/src/decorators/has-stream.d.ts +0 -11
  593. package/dist/src/decorators/has-stream.d.ts.map +0 -1
  594. package/dist/src/decorators/has-stream.js +0 -30
  595. package/dist/src/decorators/has-stream.js.map +0 -1
  596. package/dist/src/decorators/routed-interfaces.d.ts.map +0 -1
  597. package/dist/src/decorators/routed-interfaces.js +0 -43
  598. package/dist/src/decorators/routed-interfaces.js.map +0 -1
  599. package/dist/src/rules/has-stream.d.ts +0 -2
  600. package/dist/src/rules/has-stream.d.ts.map +0 -1
  601. package/dist/src/rules/has-stream.js +0 -29
  602. package/dist/src/rules/has-stream.js.map +0 -1
package/dist/src/utils.js CHANGED
@@ -1,5 +1,17 @@
1
- import { getNamespaceFullName, isArrayModelType, } from "@typespec/compiler";
2
- import { getEntity, isEntity } from "./decorators/index.js";
1
+ import { getLocationContext, getNamespaceFullName, isArrayModelType, walkPropertiesInherited, } from "@typespec/compiler";
2
+ import { getEntity, getExpand, getFilter, getGraphRoutePaths, getPublicNamespaceName, getWorkloadNamespaceName, hasPublicNamespace, hasWorkloadNamespace, isComplex, isContains, isDelta, isEntity, isExpand, isFilter, isPartial, isReferences } from "./decorators/index.js";
3
+ import { getOperationVerb } from "@typespec/http";
4
+ // schema namespace is workloadNamespace if its defined or publicNamespace if its defined
5
+ export function hasSchemaNamespace(program, namespace) {
6
+ return hasWorkloadNamespace(program, namespace) || hasPublicNamespace(program, namespace);
7
+ }
8
+ // schema namespace is workloadNamespace if its defined, publicNamespace if its defined or the defined namespace name
9
+ export function getSchemaNamespaceName(program, namespace) {
10
+ if (hasWorkloadNamespace(program, namespace)) {
11
+ return getWorkloadNamespaceName(program, namespace);
12
+ }
13
+ return getPublicNamespaceName(program, namespace);
14
+ }
3
15
  export function getNameForType(program, type) {
4
16
  switch (type.kind) {
5
17
  case "Union":
@@ -25,6 +37,9 @@ export function getNameForType(program, type) {
25
37
  export function getNameForModelType(program, type) {
26
38
  switch (type.name) {
27
39
  case "string":
40
+ case "url":
41
+ case "graphUrl":
42
+ case "webUrl":
28
43
  return "Edm.String";
29
44
  case "bytes":
30
45
  return "Collection(Edm.Byte)";
@@ -46,12 +61,20 @@ export function getNameForModelType(program, type) {
46
61
  return "Edm.TimeOfDay";
47
62
  case "zonedDateTime":
48
63
  return "Edm.DateTimeOffset";
64
+ case "offsetDateTime":
65
+ return "Edm.DateTimeOffset";
66
+ case "utcDateTime":
67
+ return "Edm.DateTimeOffset";
49
68
  case "duration":
50
69
  return "Edm.Duration";
51
70
  case "boolean":
52
71
  return "Edm.Boolean";
53
72
  case "stream":
54
73
  return "Edm.Stream";
74
+ case "guid":
75
+ return "Edm.Guid";
76
+ case "unknown":
77
+ return "Edm.Untyped";
55
78
  default:
56
79
  break;
57
80
  }
@@ -60,21 +83,89 @@ export function getNameForModelType(program, type) {
60
83
  }
61
84
  return `Collection(${getPropertyTypeName(program, type.indexer.value)})`;
62
85
  }
86
+ export function getCSDLPrimitiveType(typespecType) {
87
+ switch (typespecType) {
88
+ case "string":
89
+ return "String";
90
+ case "int8":
91
+ return "Byte";
92
+ case "int16":
93
+ return "Int16";
94
+ case "int32":
95
+ return "Int32";
96
+ case "int64":
97
+ return "Int64";
98
+ case "integer":
99
+ return "Int64";
100
+ case "float32":
101
+ return "Single";
102
+ case "float64":
103
+ return "Double";
104
+ case "decimal":
105
+ return "Decimal";
106
+ case "guid":
107
+ return "Guid";
108
+ case "plainDate":
109
+ return "Date";
110
+ case "plainTime":
111
+ return "TimeOfDay";
112
+ case "zonedDateTime":
113
+ return "DateTimeOffset";
114
+ case "duration":
115
+ return "Duration";
116
+ case "boolean":
117
+ return "Bool";
118
+ case "stream":
119
+ return "Stream";
120
+ default:
121
+ return typespecType;
122
+ }
123
+ }
124
+ export function isDictionaryType(program, type) {
125
+ var _a;
126
+ if (type.kind === "Model" && getLocationContext(program, type).type === "project") {
127
+ const indexer = (_a = type.indexer) === null || _a === void 0 ? void 0 : _a.value;
128
+ if (indexer) {
129
+ return true;
130
+ }
131
+ }
132
+ return false;
133
+ }
134
+ export function generateDictionaryBaseType(program, model) {
135
+ if (getLocationContext(program, model).type === "library") {
136
+ return undefined;
137
+ }
138
+ if (isDictionaryType(program, model)) {
139
+ return "Org.OData.Core.V1.Dictionary";
140
+ }
141
+ return undefined;
142
+ }
63
143
  export function getIdForType(program, type) {
64
144
  switch (type.kind) {
65
145
  case "Namespace":
66
- return getNamespaceFullName(type);
146
+ if (hasWorkloadNamespace(program, type)) {
147
+ return getWorkloadNamespaceName(program, type);
148
+ }
149
+ else if (hasPublicNamespace(program, type)) {
150
+ return getPublicNamespaceName(program, type);
151
+ }
152
+ else {
153
+ return getNamespaceFullName(type);
154
+ }
67
155
  case "Model":
68
156
  case "Enum":
69
157
  case "Operation":
70
158
  case "Interface":
71
- return `${getNamespaceFullName(type.namespace)}.${type.name}`;
159
+ return `${getIdForType(program, type.namespace)}.${type.name}`;
72
160
  case "String":
73
161
  case "Number":
74
162
  case "Boolean":
75
163
  return `${type.value}`;
76
164
  case "Union":
77
165
  return getIdForUnion(program, type);
166
+ case "Scalar":
167
+ case "Intrinsic":
168
+ return getNameForModelType(program, type);
78
169
  default:
79
170
  return type.kind;
80
171
  }
@@ -87,37 +178,106 @@ export function getNavigationTypeId(program, getOperation) {
87
178
  }
88
179
  return getIdForType(program, returnType.templateArguments[0]);
89
180
  }
181
+ export function getInterfacesOfKinds(program, navigationSources, kinds) {
182
+ const interfaces = new Map();
183
+ navigationSources.forEach((theInterface) => {
184
+ if (!getSourceInterfaces(theInterface).some((s) => kinds.includes(s.name))) {
185
+ // if source interfaces DO NOT have the kinds.
186
+ return;
187
+ }
188
+ const graphRoutePaths = getGraphRoutePaths(program, theInterface);
189
+ if (!graphRoutePaths || !graphRoutePaths.length) {
190
+ return;
191
+ }
192
+ graphRoutePaths.forEach((graphRoute) => {
193
+ // skip two-segment resources as they are collections
194
+ if (isRouteIndexOfACollection(theInterface, graphRoute)) {
195
+ return;
196
+ }
197
+ processGraphRoute(program, graphRoute, interfaces, theInterface);
198
+ });
199
+ });
200
+ return interfaces;
201
+ }
202
+ export function isRouteIndexOfACollection(theInterface, graphRoute) {
203
+ if (theInterface === undefined) {
204
+ return false;
205
+ }
206
+ const pathSegments = graphRoute.split("/");
207
+ const lastSegment = pathSegments[pathSegments.length - 1].replace(/\{[\w-]+\}/g, "");
208
+ if (lastSegment === "" && getSourceInterfaces(theInterface).some((s) => s.name === "Resource")) {
209
+ return true;
210
+ }
211
+ return false;
212
+ }
213
+ // Generate an interface for a resource that has a root path and an index like /users/{id}. Note that this is a collection.
214
+ // Resources with two-segment paths like /users/{id} are essentially collections
215
+ // This applies to deeply nested resources as well e.g. /cars/{carId}/wheels/{wheelId}
216
+ export function getCollectionIndexInterfaces(program, navigationSources) {
217
+ const interfaces = new Map();
218
+ navigationSources.forEach((theInterface) => {
219
+ const graphRoutePaths = getGraphRoutePaths(program, theInterface);
220
+ if (!graphRoutePaths || !graphRoutePaths.length) {
221
+ return;
222
+ }
223
+ graphRoutePaths.forEach((graphRoute) => {
224
+ if (isRouteIndexOfACollection(theInterface, graphRoute)) {
225
+ processGraphRoute(program, graphRoute, interfaces, theInterface);
226
+ }
227
+ });
228
+ });
229
+ return interfaces;
230
+ }
231
+ function processGraphRoute(program, graphRoute, interfaces, theInterface) {
232
+ const path = removeRoutePathParams(graphRoute);
233
+ if (!path) {
234
+ return;
235
+ }
236
+ let operations = [...theInterface.operations.values()].map((operation) => ({ theOperation: operation, verb: getOperationVerb(program, operation), graphRoute: graphRoute }));
237
+ if (interfaces.has(path)) {
238
+ const existing = interfaces.get(path);
239
+ operations = [...operations, ...existing.operations];
240
+ }
241
+ interfaces.set(path, {
242
+ theInterface: theInterface,
243
+ operations: operations,
244
+ path: graphRoute
245
+ });
246
+ }
90
247
  export function getPropertyTypeName(program, type) {
91
248
  var _a;
92
249
  if (type.kind === "Union") {
93
250
  const unionTypes = extractTypesFromUnion(type);
94
- const nonNullTypes = unionTypes.filter((t) => !isNullType(program, t));
251
+ const nonNullTypes = unionTypes.filter((t) => !isNullType(t));
95
252
  if (!nonNullTypes.length) {
96
253
  return "undefined.";
97
254
  }
98
- return getPropertyTypeName(program, nonNullTypes[0]);
255
+ return removeReferencePrefixFromType(getPropertyTypeName(program, nonNullTypes[0]));
99
256
  }
100
257
  if ((type.kind === "Model" || type.kind === "Scalar") && ((_a = type.namespace) === null || _a === void 0 ? void 0 : _a.name) === "TypeSpec") {
101
- return getNameForType(program, type);
258
+ return removeReferencePrefixFromType(getNameForType(program, type));
102
259
  }
103
- return getIdForType(program, type);
260
+ return removeReferencePrefixFromType(getIdForType(program, type));
261
+ }
262
+ export function removeReferencePrefixFromType(typeName) {
263
+ return typeName.replace(/^reference\./, "");
104
264
  }
105
265
  export function isTypeNullable(program, type) {
106
266
  if (type.kind !== "Union") {
107
267
  return false;
108
268
  }
109
269
  const unionTypes = extractTypesFromUnion(type);
110
- return unionTypes.some((t) => isNullType(program, t));
270
+ return unionTypes.some((t) => isNullType(t));
111
271
  }
112
272
  function getIdForUnion(program, unionType) {
113
273
  const unionTypes = extractTypesFromUnion(unionType);
114
- const nonNullTypes = unionTypes.filter((t) => !isNullType(program, t));
274
+ const nonNullTypes = unionTypes.filter((t) => !isNullType(t));
115
275
  if (!nonNullTypes.length) {
116
276
  return "undefined.";
117
277
  }
118
278
  return getIdForType(program, nonNullTypes[0]);
119
279
  }
120
- function isNullType(program, type) {
280
+ export function isNullType(type) {
121
281
  return type.kind === "Intrinsic" && type.name === "null";
122
282
  }
123
283
  export function extractTypesFromUnion(type) {
@@ -130,6 +290,26 @@ export function getSingletonTypeId(program, singletonType, getOperation) {
130
290
  }
131
291
  return getOperation && getNavigationTypeId(program, getOperation);
132
292
  }
293
+ /**
294
+ * Returns whether a type matches Graph's definition of a collection
295
+ * @param program
296
+ * @param type
297
+ */
298
+ export function isTypeCollection(Program, type) {
299
+ let modelTypes = [];
300
+ if (type.kind === "Union") {
301
+ const extracted = (extractTypesFromUnion(type).filter((t) => t.kind === "Model"));
302
+ modelTypes = modelTypes.concat(extracted);
303
+ }
304
+ else if (type.kind === "Model") {
305
+ modelTypes.push(type);
306
+ }
307
+ if (modelTypes.length === 0) {
308
+ return false;
309
+ }
310
+ return modelTypes.some((t) => t.kind === "Model" &&
311
+ (t.name === "Array" || t.name.includes("Collection")));
312
+ }
133
313
  /**
134
314
  * Imported from typespec-azure
135
315
  * Returns the full namespace name for the given type, if available.
@@ -167,11 +347,24 @@ export function isExcludedCoreType(program, type) {
167
347
  // https://github.com/Azure/typespec-azure/issues/801#issuecomment-1194454247
168
348
  //
169
349
  const nsName = getNamespaceName(program, type);
170
- const excludedNamespaces = ["TypeSpec", "TypeSpec"];
350
+ const excludedNamespaces = ["TypeSpec", "MsGraph"];
351
+ return excludedNamespaces.find((ns) => nsName.startsWith(ns)) !== undefined;
352
+ }
353
+ export function isExcludedLibraryType(program, type) {
354
+ const nsName = getNamespaceName(program, type);
355
+ const excludedNamespaces = ["TypeSpec", "MsGraph"];
171
356
  return excludedNamespaces.find((ns) => nsName.startsWith(ns)) !== undefined;
172
357
  }
173
358
  export function isNavigationProperty(program, property) {
174
359
  let propertyType = property.type;
360
+ if (propertyType.kind === "Union") {
361
+ const unionTypes = extractTypesFromUnion(propertyType);
362
+ const nonNullTypes = unionTypes.filter((t) => !isNullType(t));
363
+ if (!nonNullTypes.length) {
364
+ return false;
365
+ }
366
+ propertyType = nonNullTypes[0];
367
+ }
175
368
  if (propertyType.kind !== "Model") {
176
369
  return false;
177
370
  }
@@ -183,4 +376,334 @@ export function isNavigationProperty(program, property) {
183
376
  }
184
377
  return isEntity(program, propertyType);
185
378
  }
379
+ export function isNavigationSource(theInterface) {
380
+ return findNavigationSource(theInterface) !== undefined;
381
+ }
382
+ export function isTopLevelNavigationSource(program, theInterface) {
383
+ return removeRoutePathParams(theInterface.path).split("/").length === 1;
384
+ }
385
+ // Get the type returned by all operations in an interface representing a navigation source.
386
+ // This is the 'T' in Collection<T> and friends.
387
+ export function getInterfaceNavigationSourceType(program, theInterface) {
388
+ var _a;
389
+ const navSource = findNavigationSource(theInterface);
390
+ if (navSource === undefined) {
391
+ return undefined;
392
+ }
393
+ else {
394
+ return (_a = navSource.templateMapper) === null || _a === void 0 ? void 0 : _a.args[0];
395
+ }
396
+ }
397
+ // Get the type returned by all operations in an interface representing a navigation source.
398
+ export function getNavigationSourceType(program, operation) {
399
+ return getInterfaceNavigationSourceType(program, operation.interface);
400
+ }
401
+ function findNavigationSource(theInterface) {
402
+ for (const baseInterface of getSourceInterfaces(theInterface)) {
403
+ if (baseInterface.name === "Resource" || baseInterface.name === "Collection") {
404
+ return baseInterface;
405
+ }
406
+ else {
407
+ const baseBase = findNavigationSource(baseInterface);
408
+ if (baseBase !== undefined) {
409
+ return baseBase;
410
+ }
411
+ }
412
+ }
413
+ return undefined;
414
+ }
415
+ /**
416
+ * Removes route path params from a route path
417
+ *
418
+ * Examples:
419
+ * - user/{id}/manager -> user/manager
420
+ * - user/{id}/friends/{friendId}/hobbies -> user/friends/hobbies
421
+ * - user/{user-id}/friends/{friend-id}/hobbies -> user/friends/hobbies
422
+ */
423
+ export function removeRoutePathParams(routePath) {
424
+ return routePath.replace(/\/\{[\w-]+\}/g, "");
425
+ }
426
+ export function isSameNamespace(program, model, baseModel) {
427
+ if (!baseModel) {
428
+ return false;
429
+ }
430
+ return getNamespaceName(program, model) === getNamespaceName(program, baseModel);
431
+ }
432
+ export function isTypeDefinedInExternalLibrary(program, type) {
433
+ const locationContext = getLocationContext(program, type);
434
+ return locationContext.type === "library";
435
+ }
436
+ /**
437
+ * Recursively get all source interfaces of an interface
438
+ * @param theInterface
439
+ * @returns an array of all source interfaces
440
+ */
441
+ export function getSourceInterfaces(theInterface) {
442
+ return [...theInterface.sourceInterfaces, ...[...theInterface.sourceInterfaces.values()].flatMap(getSourceInterfaces)];
443
+ }
444
+ export function getStructuralProperties(program, model) {
445
+ const structuralProperties = getStructuralPropertyNames(program, model);
446
+ const propertiesOfTypeModel = getPropertiesOfTypeModel(program, model);
447
+ const nestedPropertyNames = getNestedPropertyNames(program, propertiesOfTypeModel);
448
+ return [...new Set([...structuralProperties, ...nestedPropertyNames])].filter(path => path !== model.name);
449
+ }
450
+ function getStructuralPropertyNames(program, model) {
451
+ const allProperties = walkPropertiesInherited(model);
452
+ const structuralPropertyNames = [...allProperties] // gets only reachable ones per the function
453
+ .filter((property) => !isContains(program, property) && !isReferences(program, property))
454
+ .map(property => property.name.trim());
455
+ return structuralPropertyNames;
456
+ }
457
+ function getPropertiesOfTypeModel(program, model) {
458
+ const allProperties = walkPropertiesInherited(model);
459
+ const propertiesOfTypeModel = [];
460
+ for (const property of allProperties) {
461
+ const type = getModelStructuredTypeFromProperty(program, property);
462
+ if (type) {
463
+ propertiesOfTypeModel.push(type);
464
+ }
465
+ }
466
+ return propertiesOfTypeModel;
467
+ }
468
+ function getModelStructuredTypeFromProperty(program, property) {
469
+ // Skip navigation properties
470
+ if (isContains(program, property) || isReferences(program, property)) {
471
+ return null;
472
+ }
473
+ const type = property.type;
474
+ if (type.kind === "Model") {
475
+ // Skip array-typed properties
476
+ if (type.name === "Array") {
477
+ return null;
478
+ }
479
+ return {
480
+ name: property.name,
481
+ model: type
482
+ };
483
+ }
484
+ if (type.kind === "Union") {
485
+ const nonNullUnionTypes = extractTypesFromUnion(type).filter(t => !isNullType(t));
486
+ if (nonNullUnionTypes[0].kind === "Model") {
487
+ return {
488
+ name: property.name,
489
+ model: nonNullUnionTypes[0]
490
+ };
491
+ }
492
+ }
493
+ return null;
494
+ }
495
+ function getNestedPropertyNames(program, propertyModels, prefix = "") {
496
+ const names = [];
497
+ if (prefix && hasRepeatedItem(prefix)) {
498
+ return names;
499
+ }
500
+ for (const propertyModel of propertyModels) {
501
+ const propertyModelPrefix = prefix + propertyModel.name + "/";
502
+ const nestedPropertyModels = getNestedPropertyModels(program, propertyModel);
503
+ nestedPropertyModels.forEach(m => {
504
+ const name = propertyModelPrefix + m.name;
505
+ if (!hasRepeatedItem(name)) {
506
+ names.push(name);
507
+ }
508
+ });
509
+ names.push(...getNestedPropertyNames(program, nestedPropertyModels, propertyModelPrefix));
510
+ }
511
+ return names;
512
+ }
513
+ function getNestedPropertyModels(program, propertyModel) {
514
+ const propertyModels = [];
515
+ if (!propertyModel.model.properties) {
516
+ return propertyModels;
517
+ }
518
+ propertyModel.model.properties.forEach((property, name) => {
519
+ const model = getPropertyModel(program, property);
520
+ if (model !== null) {
521
+ propertyModels.push({ name: name, model: model });
522
+ }
523
+ });
524
+ return propertyModels;
525
+ }
526
+ function getPropertyModel(program, property) {
527
+ if (isContains(program, property) || isReferences(program, property)) {
528
+ return null;
529
+ }
530
+ let type = property.type;
531
+ if (type.kind === "Union") {
532
+ const nonNullUnionTypes = extractTypesFromUnion(type).filter(t => !isNullType(t));
533
+ type = nonNullUnionTypes[0];
534
+ }
535
+ if (type.kind === "Model") {
536
+ if (type.name === "Array") {
537
+ if (type.indexer.value.kind !== "Model") {
538
+ return null;
539
+ }
540
+ type = type.indexer.value;
541
+ }
542
+ }
543
+ return type;
544
+ }
545
+ /**
546
+ * This function checks if a path is repeating.
547
+ * For example, if we have a tsp with this structure:
548
+ * @complex model inner {
549
+ innerName: string;
550
+ otherInnerName: string;
551
+ circularReferenceProp: outer;
552
+ }
553
+
554
+ @complex model outer {
555
+ inner: inner | null;
556
+ }
557
+
558
+ If our root (interface navigation type) is outer, some of the possible paths would be
559
+ - outer/inner/innerName
560
+ - outer/inner/otherInnerName
561
+ For circularReferenceProp property, we run the risk of having a path like the one below which would cause an infinite loop:
562
+ - outer/inner/circularReferenceProp/inner/circularReferenceProp
563
+ * @param slashSeparatedString
564
+ * @returns
565
+ */
566
+ function hasRepeatedItem(slashSeparatedString) {
567
+ const items = slashSeparatedString.split('/');
568
+ const uniqueItems = new Set(items);
569
+ return items.length !== uniqueItems.size;
570
+ }
571
+ export function isInterfaceBindingTypeOwned(program, $interface) {
572
+ const interfaceBindingType = getInterfaceNavigationSourceType(program, $interface);
573
+ if (interfaceBindingType) {
574
+ if (isPartial(program, interfaceBindingType)) {
575
+ return false;
576
+ }
577
+ }
578
+ return true;
579
+ }
580
+ export function getNestedComplexTypes(program, model, nestedModels = new Set()) {
581
+ nestedModels.add(model);
582
+ const modelProperties = model.properties;
583
+ if (modelProperties.size === 0) {
584
+ return nestedModels;
585
+ }
586
+ for (const property of modelProperties.values()) {
587
+ if (property.type.kind === "Model" && isComplex(program, property.type)) {
588
+ if (!nestedModels.has(property.type)) {
589
+ getNestedComplexTypes(program, property.type, nestedModels);
590
+ }
591
+ }
592
+ if (property.type.kind === "Union") {
593
+ const nonNullTypes = extractTypesFromUnion(property.type).filter((t) => !isNullType(t));
594
+ if (nonNullTypes.length > 0 && nonNullTypes[0].kind === "Model" && isComplex(program, nonNullTypes[0])) {
595
+ if (!nestedModels.has(nonNullTypes[0])) {
596
+ getNestedComplexTypes(program, nonNullTypes[0], nestedModels);
597
+ }
598
+ }
599
+ }
600
+ if (property.type.kind === "Model" && isArrayModelType(program, property.type)) {
601
+ const indexer = property.type.indexer.value;
602
+ if (indexer.kind === "Model" && isComplex(program, indexer)) {
603
+ if (!nestedModels.has(indexer)) {
604
+ getNestedComplexTypes(program, indexer, nestedModels);
605
+ }
606
+ }
607
+ }
608
+ }
609
+ return nestedModels;
610
+ }
611
+ // This function gets filterable and expandable properties
612
+ export function getDeltaProperties(program, entity) {
613
+ const operations = entity.operations;
614
+ let hasDelta = false;
615
+ let filterProps;
616
+ let expandProps;
617
+ for (const [_, operation] of operations) {
618
+ // Get filterable and expandable properties as defined by @filter and @expand on the @delta operation
619
+ if (isDelta(program, operation)) {
620
+ hasDelta = true;
621
+ filterProps = getFilterableProperties(program, operation);
622
+ expandProps = getExpandableProperties(program, operation);
623
+ break;
624
+ }
625
+ }
626
+ // If the delta operation exists and the filter properties are not set, get the filter properties from the get operation
627
+ if (hasDelta && !filterProps) {
628
+ filterProps = [...getFilterablePropertiesFromGetOperation(program, operations)];
629
+ }
630
+ // If the delta operation exists and the expand properties are not set, get the expand properties from the get operation
631
+ if (hasDelta && !expandProps) {
632
+ expandProps = [...getExpandablePropertiesFromGetOperation(program, operations)];
633
+ }
634
+ if (hasDelta) {
635
+ return {
636
+ FilterProperties: filterProps,
637
+ ExpandProperties: expandProps,
638
+ };
639
+ }
640
+ return undefined;
641
+ }
642
+ function getFilterableProperties(program, operation) {
643
+ if (isFilter(program, operation)) {
644
+ const filterProps = getFilter(program, operation);
645
+ return filterProps;
646
+ }
647
+ return undefined;
648
+ }
649
+ function getExpandableProperties(program, operation) {
650
+ if (isExpand(program, operation)) {
651
+ return getExpand(program, operation);
652
+ }
653
+ return undefined;
654
+ }
655
+ // check this
656
+ function getFilterablePropertiesFromGetOperation(program, operationsMap) {
657
+ const operations = [...operationsMap.values()];
658
+ if (operations.some(theOperation => isFilter(program, theOperation))) {
659
+ for (const operation of operations) {
660
+ if (operation.name === "get") {
661
+ if (isFilter(program, operation)) {
662
+ return getFilter(program, operation);
663
+ }
664
+ }
665
+ }
666
+ }
667
+ return [];
668
+ }
669
+ function getExpandablePropertiesFromGetOperation(program, operationsMap) {
670
+ const operations = [...operationsMap.values()];
671
+ if (operations.some(theOperation => isExpand(program, theOperation))) {
672
+ for (const operation of operations) {
673
+ if (operation.name === "get") {
674
+ if (isExpand(program, operation)) {
675
+ return getExpand(program, operation);
676
+ }
677
+ }
678
+ }
679
+ }
680
+ return [];
681
+ }
682
+ export function isCollection(theInterfaces) {
683
+ return theInterfaces.some(theInterface => theInterface.name === "Collection");
684
+ }
685
+ export function isUnion(type) {
686
+ return type.kind === "Union";
687
+ }
688
+ export function filterMapByIdenticalValues(inputMap) {
689
+ var _a;
690
+ const resultMap = new Map();
691
+ const valueToKeys = new Map();
692
+ // Iterate over the input map
693
+ for (const [key, value] of inputMap.entries()) {
694
+ if (!valueToKeys.has(value)) {
695
+ valueToKeys.set(value, [key]);
696
+ }
697
+ else {
698
+ (_a = valueToKeys.get(value)) === null || _a === void 0 ? void 0 : _a.push(key);
699
+ }
700
+ }
701
+ // Add keys with identical values to the result map
702
+ for (const [value, keys] of valueToKeys.entries()) {
703
+ if (keys.length > 1) {
704
+ keys.forEach((key) => resultMap.set(key, value));
705
+ }
706
+ }
707
+ return resultMap;
708
+ }
186
709
  //# sourceMappingURL=utils.js.map