@atlaskit/teams-client 4.0.0

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 (457) hide show
  1. package/CHANGELOG.md +1061 -0
  2. package/LICENSE.md +11 -0
  3. package/README.md +9 -0
  4. package/client/package.json +15 -0
  5. package/dist/cjs/common/types.js +8 -0
  6. package/dist/cjs/common/utils/ari.js +31 -0
  7. package/dist/cjs/common/utils/error/index.js +182 -0
  8. package/dist/cjs/common/utils/filter-null.js +9 -0
  9. package/dist/cjs/common/utils/http.js +119 -0
  10. package/dist/cjs/common/utils/index.js +37 -0
  11. package/dist/cjs/common/utils/permissions/constants.js +68 -0
  12. package/dist/cjs/common/utils/permissions/has-permission.js +42 -0
  13. package/dist/cjs/common/utils/permissions/index.js +31 -0
  14. package/dist/cjs/common/utils/permissions/types.js +11 -0
  15. package/dist/cjs/common/utils/sort-teams.js +52 -0
  16. package/dist/cjs/common/utils/status-code-handlers-provider.js +30 -0
  17. package/dist/cjs/common/utils/team.js +19 -0
  18. package/dist/cjs/common/utils/ufo/constants.js +22 -0
  19. package/dist/cjs/common/utils/ufo/index.js +69 -0
  20. package/dist/cjs/common/utils/ufo/utils.js +26 -0
  21. package/dist/cjs/index.js +166 -0
  22. package/dist/cjs/mocks/endpoints.js +267 -0
  23. package/dist/cjs/mocks/generate-data.js +115 -0
  24. package/dist/cjs/mocks/index.js +61 -0
  25. package/dist/cjs/mocks/invitations.js +21 -0
  26. package/dist/cjs/mocks/responses.js +480 -0
  27. package/dist/cjs/mocks/team-link.js +26 -0
  28. package/dist/cjs/mocks/team.js +150 -0
  29. package/dist/cjs/mocks/user.js +102 -0
  30. package/dist/cjs/mocks/with-faker.js +16 -0
  31. package/dist/cjs/services/agg-client/index.js +137 -0
  32. package/dist/cjs/services/agg-client/mocks/index.js +71 -0
  33. package/dist/cjs/services/agg-client/types.js +10 -0
  34. package/dist/cjs/services/agg-client/utils/queries/team-membership-query.js +8 -0
  35. package/dist/cjs/services/agg-client/utils/queries/user-query.js +12 -0
  36. package/dist/cjs/services/agg-client/utils/user-type.js +18 -0
  37. package/dist/cjs/services/base-client/index.js +94 -0
  38. package/dist/cjs/services/collaborationgraph-client/index.js +58 -0
  39. package/dist/cjs/services/constants.js +13 -0
  40. package/dist/cjs/services/directory-client/index.js +241 -0
  41. package/dist/cjs/services/graphql-client/index.js +12 -0
  42. package/dist/cjs/services/graphql-client/main.js +69 -0
  43. package/dist/cjs/services/graphql-client/types.js +5 -0
  44. package/dist/cjs/services/graphql-client/utils/index.js +157 -0
  45. package/dist/cjs/services/hooks/use-teams-client-setup.js +44 -0
  46. package/dist/cjs/services/identity-client/index.js +171 -0
  47. package/dist/cjs/services/identity-client/utils.js +183 -0
  48. package/dist/cjs/services/index.js +18 -0
  49. package/dist/cjs/services/invitations-client/index.js +168 -0
  50. package/dist/cjs/services/invitations-client/types.js +1 -0
  51. package/dist/cjs/services/invitations-client/utils/index.js +115 -0
  52. package/dist/cjs/services/invitations-client/utils/types.js +5 -0
  53. package/dist/cjs/services/legion-client/index.js +1160 -0
  54. package/dist/cjs/services/legion-client/types.js +5 -0
  55. package/dist/cjs/services/main.js +1941 -0
  56. package/dist/cjs/services/mutability-client/index.js +97 -0
  57. package/dist/cjs/services/mutability-client/types.js +1 -0
  58. package/dist/cjs/services/object-resolver-client/index.js +60 -0
  59. package/dist/cjs/services/object-resolver-client/types.js +17 -0
  60. package/dist/cjs/services/object-resolver-client/utils.js +67 -0
  61. package/dist/cjs/services/perms-client/index.js +48 -0
  62. package/dist/cjs/services/public-api-client/generated/data-contracts.js +1 -0
  63. package/dist/cjs/services/public-api-client/index.js +264 -0
  64. package/dist/cjs/services/rest-client/index.js +381 -0
  65. package/dist/cjs/services/rest-client/utils/cookie.js +23 -0
  66. package/dist/cjs/services/rest-client/utils/parse-error-message.js +62 -0
  67. package/dist/cjs/services/rest-client/utils/parse-response.js +20 -0
  68. package/dist/cjs/services/rest-client/utils/strip-uuid.js +10 -0
  69. package/dist/cjs/services/sentry/constants.js +15 -0
  70. package/dist/cjs/services/sentry/index.js +67 -0
  71. package/dist/cjs/services/sentry/main.js +196 -0
  72. package/dist/cjs/services/sentry/types.js +5 -0
  73. package/dist/cjs/services/sentry/utils/get-sentry-config.js +45 -0
  74. package/dist/cjs/services/sentry/utils/initialise-sentry.js +55 -0
  75. package/dist/cjs/services/sentry/utils/sentry-client.js +121 -0
  76. package/dist/cjs/services/sentry/utils/use-teams-sentry-client-setup.js +40 -0
  77. package/dist/cjs/services/teams-in-slack-client/index.js +103 -0
  78. package/dist/cjs/services/types.js +1 -0
  79. package/dist/cjs/services/use-query-light/index.js +25 -0
  80. package/dist/cjs/services/use-query-light/main.js +232 -0
  81. package/dist/cjs/services/use-query-light/types.js +52 -0
  82. package/dist/cjs/services/user-info-provider/index.js +18 -0
  83. package/dist/cjs/services/user-info-provider/main.js +72 -0
  84. package/dist/cjs/services/user-preferences-client/index.js +98 -0
  85. package/dist/cjs/types/config.js +1 -0
  86. package/dist/cjs/types/index.js +19 -0
  87. package/dist/cjs/types/links.js +22 -0
  88. package/dist/cjs/types/media.js +1 -0
  89. package/dist/cjs/types/membership.js +24 -0
  90. package/dist/cjs/types/slack.js +1 -0
  91. package/dist/cjs/types/team.js +5 -0
  92. package/dist/cjs/types/user.js +10 -0
  93. package/dist/es2019/common/types.js +2 -0
  94. package/dist/es2019/common/utils/ari.js +21 -0
  95. package/dist/es2019/common/utils/error/index.js +142 -0
  96. package/dist/es2019/common/utils/filter-null.js +3 -0
  97. package/dist/es2019/common/utils/http.js +82 -0
  98. package/dist/es2019/common/utils/index.js +2 -0
  99. package/dist/es2019/common/utils/permissions/constants.js +59 -0
  100. package/dist/es2019/common/utils/permissions/has-permission.js +33 -0
  101. package/dist/es2019/common/utils/permissions/index.js +2 -0
  102. package/dist/es2019/common/utils/permissions/types.js +5 -0
  103. package/dist/es2019/common/utils/sort-teams.js +45 -0
  104. package/dist/es2019/common/utils/status-code-handlers-provider.js +25 -0
  105. package/dist/es2019/common/utils/team.js +6 -0
  106. package/dist/es2019/common/utils/ufo/constants.js +12 -0
  107. package/dist/es2019/common/utils/ufo/index.js +43 -0
  108. package/dist/es2019/common/utils/ufo/utils.js +18 -0
  109. package/dist/es2019/index.js +19 -0
  110. package/dist/es2019/mocks/endpoints.js +250 -0
  111. package/dist/es2019/mocks/generate-data.js +96 -0
  112. package/dist/es2019/mocks/index.js +2 -0
  113. package/dist/es2019/mocks/invitations.js +11 -0
  114. package/dist/es2019/mocks/responses.js +478 -0
  115. package/dist/es2019/mocks/team-link.js +14 -0
  116. package/dist/es2019/mocks/team.js +127 -0
  117. package/dist/es2019/mocks/user.js +79 -0
  118. package/dist/es2019/mocks/with-faker.js +8 -0
  119. package/dist/es2019/services/agg-client/index.js +70 -0
  120. package/dist/es2019/services/agg-client/mocks/index.js +64 -0
  121. package/dist/es2019/services/agg-client/types.js +4 -0
  122. package/dist/es2019/services/agg-client/utils/queries/team-membership-query.js +36 -0
  123. package/dist/es2019/services/agg-client/utils/queries/user-query.js +39 -0
  124. package/dist/es2019/services/agg-client/utils/user-type.js +13 -0
  125. package/dist/es2019/services/base-client/index.js +66 -0
  126. package/dist/es2019/services/collaborationgraph-client/index.js +37 -0
  127. package/dist/es2019/services/constants.js +7 -0
  128. package/dist/es2019/services/directory-client/index.js +155 -0
  129. package/dist/es2019/services/graphql-client/index.js +1 -0
  130. package/dist/es2019/services/graphql-client/main.js +23 -0
  131. package/dist/es2019/services/graphql-client/types.js +1 -0
  132. package/dist/es2019/services/graphql-client/utils/index.js +76 -0
  133. package/dist/es2019/services/hooks/use-teams-client-setup.js +40 -0
  134. package/dist/es2019/services/identity-client/index.js +53 -0
  135. package/dist/es2019/services/identity-client/utils.js +167 -0
  136. package/dist/es2019/services/index.js +1 -0
  137. package/dist/es2019/services/invitations-client/index.js +65 -0
  138. package/dist/es2019/services/invitations-client/types.js +0 -0
  139. package/dist/es2019/services/invitations-client/utils/index.js +101 -0
  140. package/dist/es2019/services/invitations-client/utils/types.js +1 -0
  141. package/dist/es2019/services/legion-client/index.js +484 -0
  142. package/dist/es2019/services/legion-client/types.js +1 -0
  143. package/dist/es2019/services/main.js +541 -0
  144. package/dist/es2019/services/mutability-client/index.js +49 -0
  145. package/dist/es2019/services/mutability-client/types.js +0 -0
  146. package/dist/es2019/services/object-resolver-client/index.js +21 -0
  147. package/dist/es2019/services/object-resolver-client/types.js +12 -0
  148. package/dist/es2019/services/object-resolver-client/utils.js +53 -0
  149. package/dist/es2019/services/perms-client/index.js +25 -0
  150. package/dist/es2019/services/public-api-client/generated/data-contracts.js +0 -0
  151. package/dist/es2019/services/public-api-client/index.js +120 -0
  152. package/dist/es2019/services/rest-client/index.js +177 -0
  153. package/dist/es2019/services/rest-client/utils/cookie.js +13 -0
  154. package/dist/es2019/services/rest-client/utils/parse-error-message.js +20 -0
  155. package/dist/es2019/services/rest-client/utils/parse-response.js +14 -0
  156. package/dist/es2019/services/rest-client/utils/strip-uuid.js +4 -0
  157. package/dist/es2019/services/sentry/constants.js +10 -0
  158. package/dist/es2019/services/sentry/index.js +2 -0
  159. package/dist/es2019/services/sentry/main.js +107 -0
  160. package/dist/es2019/services/sentry/types.js +1 -0
  161. package/dist/es2019/services/sentry/utils/get-sentry-config.js +37 -0
  162. package/dist/es2019/services/sentry/utils/initialise-sentry.js +23 -0
  163. package/dist/es2019/services/sentry/utils/sentry-client.js +57 -0
  164. package/dist/es2019/services/sentry/utils/use-teams-sentry-client-setup.js +14 -0
  165. package/dist/es2019/services/teams-in-slack-client/index.js +32 -0
  166. package/dist/es2019/services/types.js +0 -0
  167. package/dist/es2019/services/use-query-light/index.js +2 -0
  168. package/dist/es2019/services/use-query-light/main.js +162 -0
  169. package/dist/es2019/services/use-query-light/types.js +27 -0
  170. package/dist/es2019/services/user-info-provider/index.js +1 -0
  171. package/dist/es2019/services/user-info-provider/main.js +44 -0
  172. package/dist/es2019/services/user-preferences-client/index.js +19 -0
  173. package/dist/es2019/types/config.js +0 -0
  174. package/dist/es2019/types/index.js +2 -0
  175. package/dist/es2019/types/links.js +16 -0
  176. package/dist/es2019/types/media.js +0 -0
  177. package/dist/es2019/types/membership.js +16 -0
  178. package/dist/es2019/types/slack.js +0 -0
  179. package/dist/es2019/types/team.js +1 -0
  180. package/dist/es2019/types/user.js +4 -0
  181. package/dist/esm/common/types.js +2 -0
  182. package/dist/esm/common/utils/ari.js +25 -0
  183. package/dist/esm/common/utils/error/index.js +176 -0
  184. package/dist/esm/common/utils/filter-null.js +3 -0
  185. package/dist/esm/common/utils/http.js +109 -0
  186. package/dist/esm/common/utils/index.js +2 -0
  187. package/dist/esm/common/utils/permissions/constants.js +61 -0
  188. package/dist/esm/common/utils/permissions/has-permission.js +34 -0
  189. package/dist/esm/common/utils/permissions/index.js +2 -0
  190. package/dist/esm/common/utils/permissions/types.js +5 -0
  191. package/dist/esm/common/utils/sort-teams.js +46 -0
  192. package/dist/esm/common/utils/status-code-handlers-provider.js +23 -0
  193. package/dist/esm/common/utils/team.js +12 -0
  194. package/dist/esm/common/utils/ufo/constants.js +15 -0
  195. package/dist/esm/common/utils/ufo/index.js +62 -0
  196. package/dist/esm/common/utils/ufo/utils.js +20 -0
  197. package/dist/esm/index.js +19 -0
  198. package/dist/esm/mocks/endpoints.js +261 -0
  199. package/dist/esm/mocks/generate-data.js +106 -0
  200. package/dist/esm/mocks/index.js +2 -0
  201. package/dist/esm/mocks/invitations.js +14 -0
  202. package/dist/esm/mocks/responses.js +473 -0
  203. package/dist/esm/mocks/team-link.js +19 -0
  204. package/dist/esm/mocks/team.js +143 -0
  205. package/dist/esm/mocks/user.js +95 -0
  206. package/dist/esm/mocks/with-faker.js +10 -0
  207. package/dist/esm/services/agg-client/index.js +130 -0
  208. package/dist/esm/services/agg-client/mocks/index.js +64 -0
  209. package/dist/esm/services/agg-client/types.js +4 -0
  210. package/dist/esm/services/agg-client/utils/queries/team-membership-query.js +2 -0
  211. package/dist/esm/services/agg-client/utils/queries/user-query.js +5 -0
  212. package/dist/esm/services/agg-client/utils/user-type.js +12 -0
  213. package/dist/esm/services/base-client/index.js +87 -0
  214. package/dist/esm/services/collaborationgraph-client/index.js +51 -0
  215. package/dist/esm/services/constants.js +7 -0
  216. package/dist/esm/services/directory-client/index.js +234 -0
  217. package/dist/esm/services/graphql-client/index.js +1 -0
  218. package/dist/esm/services/graphql-client/main.js +62 -0
  219. package/dist/esm/services/graphql-client/types.js +1 -0
  220. package/dist/esm/services/graphql-client/utils/index.js +149 -0
  221. package/dist/esm/services/hooks/use-teams-client-setup.js +39 -0
  222. package/dist/esm/services/identity-client/index.js +164 -0
  223. package/dist/esm/services/identity-client/utils.js +174 -0
  224. package/dist/esm/services/index.js +1 -0
  225. package/dist/esm/services/invitations-client/index.js +163 -0
  226. package/dist/esm/services/invitations-client/types.js +0 -0
  227. package/dist/esm/services/invitations-client/utils/index.js +108 -0
  228. package/dist/esm/services/invitations-client/utils/types.js +1 -0
  229. package/dist/esm/services/legion-client/index.js +1154 -0
  230. package/dist/esm/services/legion-client/types.js +1 -0
  231. package/dist/esm/services/main.js +1936 -0
  232. package/dist/esm/services/mutability-client/index.js +90 -0
  233. package/dist/esm/services/mutability-client/types.js +0 -0
  234. package/dist/esm/services/object-resolver-client/index.js +53 -0
  235. package/dist/esm/services/object-resolver-client/types.js +12 -0
  236. package/dist/esm/services/object-resolver-client/utils.js +61 -0
  237. package/dist/esm/services/perms-client/index.js +42 -0
  238. package/dist/esm/services/public-api-client/generated/data-contracts.js +0 -0
  239. package/dist/esm/services/public-api-client/index.js +260 -0
  240. package/dist/esm/services/rest-client/index.js +373 -0
  241. package/dist/esm/services/rest-client/utils/cookie.js +14 -0
  242. package/dist/esm/services/rest-client/utils/parse-error-message.js +55 -0
  243. package/dist/esm/services/rest-client/utils/parse-response.js +14 -0
  244. package/dist/esm/services/rest-client/utils/strip-uuid.js +4 -0
  245. package/dist/esm/services/sentry/constants.js +10 -0
  246. package/dist/esm/services/sentry/index.js +2 -0
  247. package/dist/esm/services/sentry/main.js +186 -0
  248. package/dist/esm/services/sentry/types.js +1 -0
  249. package/dist/esm/services/sentry/utils/get-sentry-config.js +38 -0
  250. package/dist/esm/services/sentry/utils/initialise-sentry.js +48 -0
  251. package/dist/esm/services/sentry/utils/sentry-client.js +108 -0
  252. package/dist/esm/services/sentry/utils/use-teams-sentry-client-setup.js +33 -0
  253. package/dist/esm/services/teams-in-slack-client/index.js +96 -0
  254. package/dist/esm/services/types.js +0 -0
  255. package/dist/esm/services/use-query-light/index.js +2 -0
  256. package/dist/esm/services/use-query-light/main.js +225 -0
  257. package/dist/esm/services/use-query-light/types.js +45 -0
  258. package/dist/esm/services/user-info-provider/index.js +1 -0
  259. package/dist/esm/services/user-info-provider/main.js +66 -0
  260. package/dist/esm/services/user-preferences-client/index.js +91 -0
  261. package/dist/esm/types/config.js +0 -0
  262. package/dist/esm/types/index.js +2 -0
  263. package/dist/esm/types/links.js +16 -0
  264. package/dist/esm/types/media.js +0 -0
  265. package/dist/esm/types/membership.js +17 -0
  266. package/dist/esm/types/slack.js +0 -0
  267. package/dist/esm/types/team.js +1 -0
  268. package/dist/esm/types/user.js +4 -0
  269. package/dist/types/common/types.d.ts +4 -0
  270. package/dist/types/common/utils/ari.d.ts +7 -0
  271. package/dist/types/common/utils/error/index.d.ts +91 -0
  272. package/dist/types/common/utils/filter-null.d.ts +1 -0
  273. package/dist/types/common/utils/http.d.ts +31 -0
  274. package/dist/types/common/utils/index.d.ts +2 -0
  275. package/dist/types/common/utils/permissions/constants.d.ts +23 -0
  276. package/dist/types/common/utils/permissions/has-permission.d.ts +31 -0
  277. package/dist/types/common/utils/permissions/index.d.ts +3 -0
  278. package/dist/types/common/utils/permissions/types.d.ts +7 -0
  279. package/dist/types/common/utils/sort-teams.d.ts +2 -0
  280. package/dist/types/common/utils/status-code-handlers-provider.d.ts +17 -0
  281. package/dist/types/common/utils/team.d.ts +5 -0
  282. package/dist/types/common/utils/ufo/constants.d.ts +5 -0
  283. package/dist/types/common/utils/ufo/index.d.ts +6 -0
  284. package/dist/types/common/utils/ufo/utils.d.ts +11 -0
  285. package/dist/types/index.d.ts +15 -0
  286. package/dist/types/mocks/endpoints.d.ts +22 -0
  287. package/dist/types/mocks/generate-data.d.ts +16 -0
  288. package/dist/types/mocks/index.d.ts +2 -0
  289. package/dist/types/mocks/invitations.d.ts +11 -0
  290. package/dist/types/mocks/responses.d.ts +75 -0
  291. package/dist/types/mocks/team-link.d.ts +7 -0
  292. package/dist/types/mocks/team.d.ts +14 -0
  293. package/dist/types/mocks/user.d.ts +15 -0
  294. package/dist/types/mocks/with-faker.d.ts +11 -0
  295. package/dist/types/services/agg-client/index.d.ts +12 -0
  296. package/dist/types/services/agg-client/mocks/index.d.ts +49 -0
  297. package/dist/types/services/agg-client/types.d.ts +13 -0
  298. package/dist/types/services/agg-client/utils/queries/team-membership-query.d.ts +33 -0
  299. package/dist/types/services/agg-client/utils/queries/user-query.d.ts +31 -0
  300. package/dist/types/services/agg-client/utils/user-type.d.ts +7 -0
  301. package/dist/types/services/base-client/index.d.ts +37 -0
  302. package/dist/types/services/collaborationgraph-client/index.d.ts +37 -0
  303. package/dist/types/services/constants.d.ts +2 -0
  304. package/dist/types/services/directory-client/index.d.ts +53 -0
  305. package/dist/types/services/graphql-client/index.d.ts +1 -0
  306. package/dist/types/services/graphql-client/main.d.ts +8 -0
  307. package/dist/types/services/graphql-client/types.d.ts +19 -0
  308. package/dist/types/services/graphql-client/utils/index.d.ts +3 -0
  309. package/dist/types/services/hooks/use-teams-client-setup.d.ts +12 -0
  310. package/dist/types/services/identity-client/index.d.ts +33 -0
  311. package/dist/types/services/identity-client/utils.d.ts +81 -0
  312. package/dist/types/services/index.d.ts +1 -0
  313. package/dist/types/services/invitations-client/index.d.ts +11 -0
  314. package/dist/types/services/invitations-client/types.d.ts +67 -0
  315. package/dist/types/services/invitations-client/utils/index.d.ts +7 -0
  316. package/dist/types/services/invitations-client/utils/types.d.ts +7 -0
  317. package/dist/types/services/legion-client/index.d.ts +133 -0
  318. package/dist/types/services/legion-client/types.d.ts +107 -0
  319. package/dist/types/services/main.d.ts +316 -0
  320. package/dist/types/services/mutability-client/index.d.ts +8 -0
  321. package/dist/types/services/mutability-client/types.d.ts +5 -0
  322. package/dist/types/services/object-resolver-client/index.d.ts +8 -0
  323. package/dist/types/services/object-resolver-client/types.d.ts +38 -0
  324. package/dist/types/services/object-resolver-client/utils.d.ts +18 -0
  325. package/dist/types/services/perms-client/index.d.ts +16 -0
  326. package/dist/types/services/public-api-client/generated/data-contracts.d.ts +112 -0
  327. package/dist/types/services/public-api-client/index.d.ts +41 -0
  328. package/dist/types/services/rest-client/index.d.ts +40 -0
  329. package/dist/types/services/rest-client/utils/cookie.d.ts +5 -0
  330. package/dist/types/services/rest-client/utils/parse-error-message.d.ts +1 -0
  331. package/dist/types/services/rest-client/utils/parse-response.d.ts +1 -0
  332. package/dist/types/services/rest-client/utils/strip-uuid.d.ts +1 -0
  333. package/dist/types/services/sentry/constants.d.ts +5 -0
  334. package/dist/types/services/sentry/index.d.ts +3 -0
  335. package/dist/types/services/sentry/main.d.ts +36 -0
  336. package/dist/types/services/sentry/types.d.ts +36 -0
  337. package/dist/types/services/sentry/utils/get-sentry-config.d.ts +2 -0
  338. package/dist/types/services/sentry/utils/initialise-sentry.d.ts +2 -0
  339. package/dist/types/services/sentry/utils/sentry-client.d.ts +9 -0
  340. package/dist/types/services/sentry/utils/use-teams-sentry-client-setup.d.ts +2 -0
  341. package/dist/types/services/teams-in-slack-client/index.d.ts +27 -0
  342. package/dist/types/services/types.d.ts +10 -0
  343. package/dist/types/services/use-query-light/index.d.ts +3 -0
  344. package/dist/types/services/use-query-light/main.d.ts +4 -0
  345. package/dist/types/services/use-query-light/types.d.ts +57 -0
  346. package/dist/types/services/user-info-provider/index.d.ts +1 -0
  347. package/dist/types/services/user-info-provider/main.d.ts +14 -0
  348. package/dist/types/services/user-preferences-client/index.d.ts +9 -0
  349. package/dist/types/types/config.d.ts +7 -0
  350. package/dist/types/types/index.d.ts +10 -0
  351. package/dist/types/types/links.d.ts +31 -0
  352. package/dist/types/types/media.d.ts +6 -0
  353. package/dist/types/types/membership.d.ts +35 -0
  354. package/dist/types/types/slack.d.ts +7 -0
  355. package/dist/types/types/team.d.ts +117 -0
  356. package/dist/types/types/user.d.ts +41 -0
  357. package/dist/types-ts4.5/common/types.d.ts +4 -0
  358. package/dist/types-ts4.5/common/utils/ari.d.ts +7 -0
  359. package/dist/types-ts4.5/common/utils/error/index.d.ts +91 -0
  360. package/dist/types-ts4.5/common/utils/filter-null.d.ts +1 -0
  361. package/dist/types-ts4.5/common/utils/http.d.ts +31 -0
  362. package/dist/types-ts4.5/common/utils/index.d.ts +2 -0
  363. package/dist/types-ts4.5/common/utils/permissions/constants.d.ts +23 -0
  364. package/dist/types-ts4.5/common/utils/permissions/has-permission.d.ts +31 -0
  365. package/dist/types-ts4.5/common/utils/permissions/index.d.ts +3 -0
  366. package/dist/types-ts4.5/common/utils/permissions/types.d.ts +26 -0
  367. package/dist/types-ts4.5/common/utils/sort-teams.d.ts +2 -0
  368. package/dist/types-ts4.5/common/utils/status-code-handlers-provider.d.ts +17 -0
  369. package/dist/types-ts4.5/common/utils/team.d.ts +5 -0
  370. package/dist/types-ts4.5/common/utils/ufo/constants.d.ts +64 -0
  371. package/dist/types-ts4.5/common/utils/ufo/index.d.ts +6 -0
  372. package/dist/types-ts4.5/common/utils/ufo/utils.d.ts +11 -0
  373. package/dist/types-ts4.5/index.d.ts +15 -0
  374. package/dist/types-ts4.5/mocks/endpoints.d.ts +22 -0
  375. package/dist/types-ts4.5/mocks/generate-data.d.ts +16 -0
  376. package/dist/types-ts4.5/mocks/index.d.ts +2 -0
  377. package/dist/types-ts4.5/mocks/invitations.d.ts +11 -0
  378. package/dist/types-ts4.5/mocks/responses.d.ts +75 -0
  379. package/dist/types-ts4.5/mocks/team-link.d.ts +7 -0
  380. package/dist/types-ts4.5/mocks/team.d.ts +14 -0
  381. package/dist/types-ts4.5/mocks/user.d.ts +15 -0
  382. package/dist/types-ts4.5/mocks/with-faker.d.ts +11 -0
  383. package/dist/types-ts4.5/services/agg-client/index.d.ts +12 -0
  384. package/dist/types-ts4.5/services/agg-client/mocks/index.d.ts +49 -0
  385. package/dist/types-ts4.5/services/agg-client/types.d.ts +13 -0
  386. package/dist/types-ts4.5/services/agg-client/utils/queries/team-membership-query.d.ts +33 -0
  387. package/dist/types-ts4.5/services/agg-client/utils/queries/user-query.d.ts +31 -0
  388. package/dist/types-ts4.5/services/agg-client/utils/user-type.d.ts +7 -0
  389. package/dist/types-ts4.5/services/base-client/index.d.ts +37 -0
  390. package/dist/types-ts4.5/services/collaborationgraph-client/index.d.ts +37 -0
  391. package/dist/types-ts4.5/services/constants.d.ts +2 -0
  392. package/dist/types-ts4.5/services/directory-client/index.d.ts +53 -0
  393. package/dist/types-ts4.5/services/graphql-client/index.d.ts +1 -0
  394. package/dist/types-ts4.5/services/graphql-client/main.d.ts +8 -0
  395. package/dist/types-ts4.5/services/graphql-client/types.d.ts +19 -0
  396. package/dist/types-ts4.5/services/graphql-client/utils/index.d.ts +3 -0
  397. package/dist/types-ts4.5/services/hooks/use-teams-client-setup.d.ts +12 -0
  398. package/dist/types-ts4.5/services/identity-client/index.d.ts +33 -0
  399. package/dist/types-ts4.5/services/identity-client/utils.d.ts +81 -0
  400. package/dist/types-ts4.5/services/index.d.ts +1 -0
  401. package/dist/types-ts4.5/services/invitations-client/index.d.ts +11 -0
  402. package/dist/types-ts4.5/services/invitations-client/types.d.ts +67 -0
  403. package/dist/types-ts4.5/services/invitations-client/utils/index.d.ts +7 -0
  404. package/dist/types-ts4.5/services/invitations-client/utils/types.d.ts +7 -0
  405. package/dist/types-ts4.5/services/legion-client/index.d.ts +133 -0
  406. package/dist/types-ts4.5/services/legion-client/types.d.ts +107 -0
  407. package/dist/types-ts4.5/services/main.d.ts +316 -0
  408. package/dist/types-ts4.5/services/mutability-client/index.d.ts +8 -0
  409. package/dist/types-ts4.5/services/mutability-client/types.d.ts +5 -0
  410. package/dist/types-ts4.5/services/object-resolver-client/index.d.ts +8 -0
  411. package/dist/types-ts4.5/services/object-resolver-client/types.d.ts +38 -0
  412. package/dist/types-ts4.5/services/object-resolver-client/utils.d.ts +18 -0
  413. package/dist/types-ts4.5/services/perms-client/index.d.ts +16 -0
  414. package/dist/types-ts4.5/services/public-api-client/generated/data-contracts.d.ts +112 -0
  415. package/dist/types-ts4.5/services/public-api-client/index.d.ts +41 -0
  416. package/dist/types-ts4.5/services/rest-client/index.d.ts +40 -0
  417. package/dist/types-ts4.5/services/rest-client/utils/cookie.d.ts +5 -0
  418. package/dist/types-ts4.5/services/rest-client/utils/parse-error-message.d.ts +1 -0
  419. package/dist/types-ts4.5/services/rest-client/utils/parse-response.d.ts +1 -0
  420. package/dist/types-ts4.5/services/rest-client/utils/strip-uuid.d.ts +1 -0
  421. package/dist/types-ts4.5/services/sentry/constants.d.ts +5 -0
  422. package/dist/types-ts4.5/services/sentry/index.d.ts +3 -0
  423. package/dist/types-ts4.5/services/sentry/main.d.ts +36 -0
  424. package/dist/types-ts4.5/services/sentry/types.d.ts +36 -0
  425. package/dist/types-ts4.5/services/sentry/utils/get-sentry-config.d.ts +2 -0
  426. package/dist/types-ts4.5/services/sentry/utils/initialise-sentry.d.ts +2 -0
  427. package/dist/types-ts4.5/services/sentry/utils/sentry-client.d.ts +9 -0
  428. package/dist/types-ts4.5/services/sentry/utils/use-teams-sentry-client-setup.d.ts +2 -0
  429. package/dist/types-ts4.5/services/teams-in-slack-client/index.d.ts +27 -0
  430. package/dist/types-ts4.5/services/types.d.ts +10 -0
  431. package/dist/types-ts4.5/services/use-query-light/index.d.ts +3 -0
  432. package/dist/types-ts4.5/services/use-query-light/main.d.ts +7 -0
  433. package/dist/types-ts4.5/services/use-query-light/types.d.ts +57 -0
  434. package/dist/types-ts4.5/services/user-info-provider/index.d.ts +1 -0
  435. package/dist/types-ts4.5/services/user-info-provider/main.d.ts +14 -0
  436. package/dist/types-ts4.5/services/user-preferences-client/index.d.ts +9 -0
  437. package/dist/types-ts4.5/types/config.d.ts +7 -0
  438. package/dist/types-ts4.5/types/index.d.ts +10 -0
  439. package/dist/types-ts4.5/types/links.d.ts +31 -0
  440. package/dist/types-ts4.5/types/media.d.ts +6 -0
  441. package/dist/types-ts4.5/types/membership.d.ts +35 -0
  442. package/dist/types-ts4.5/types/slack.d.ts +7 -0
  443. package/dist/types-ts4.5/types/team.d.ts +117 -0
  444. package/dist/types-ts4.5/types/user.d.ts +51 -0
  445. package/mocks/package.json +15 -0
  446. package/package.json +111 -0
  447. package/permissions/package.json +15 -0
  448. package/public/package.json +15 -0
  449. package/report.api.md +1210 -0
  450. package/scripts/generate-docs.ts +31 -0
  451. package/scripts/utils.ts +269 -0
  452. package/sentry/package.json +15 -0
  453. package/types/package.json +15 -0
  454. package/ufo/package.json +15 -0
  455. package/use-query-light/package.json +15 -0
  456. package/user-info-provider/package.json +15 -0
  457. package/utils/package.json +15 -0
@@ -0,0 +1,142 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ var _GraphQLError;
3
+ export let ErrorCategory = /*#__PURE__*/function (ErrorCategory) {
4
+ ErrorCategory["NotFound"] = "NotFound";
5
+ ErrorCategory["NotPermitted"] = "NotPermitted";
6
+ ErrorCategory["MalformedInput"] = "MalformedInput";
7
+ ErrorCategory["Internal"] = "Internal";
8
+ return ErrorCategory;
9
+ }({});
10
+ export let StatusCode = /*#__PURE__*/function (StatusCode) {
11
+ StatusCode[StatusCode["UNAUTHORIZED"] = 401] = "UNAUTHORIZED";
12
+ StatusCode[StatusCode["FORBIDDEN"] = 403] = "FORBIDDEN";
13
+ StatusCode[StatusCode["TIMEOUT"] = 408] = "TIMEOUT";
14
+ StatusCode[StatusCode["GONE"] = 410] = "GONE";
15
+ StatusCode[StatusCode["PAYLOAD_TOO_LARGE"] = 413] = "PAYLOAD_TOO_LARGE";
16
+ return StatusCode;
17
+ }({});
18
+ export function isAuthError(error) {
19
+ return isErrorStatusCode(StatusCode.UNAUTHORIZED, error) || isErrorStatusCode(StatusCode.FORBIDDEN, error);
20
+ }
21
+ export function isErrorStatusCode(statusCode, error) {
22
+ var _error$message;
23
+ if (!error) {
24
+ return false;
25
+ }
26
+ if (error['status'] === statusCode ||
27
+ // error can be `ProperNetworkError` from `packages/graphql-client/src/links/error.ts`
28
+ error['statusCode'] === statusCode) {
29
+ return true;
30
+ }
31
+ const reg = new RegExp(`status (code)?.*(${statusCode})`);
32
+ return !!(error !== null && error !== void 0 && (_error$message = error.message) !== null && _error$message !== void 0 && _error$message.match(reg));
33
+ }
34
+ export function doesErrorContainStatus(statusCode, message) {
35
+ const reg = new RegExp(`status .*(${statusCode})`);
36
+ return reg.test(message);
37
+ }
38
+ export let TeamErrorType = /*#__PURE__*/function (TeamErrorType) {
39
+ TeamErrorType["TEAM_NOT_ACTIVE"] = "Team must be active";
40
+ return TeamErrorType;
41
+ }({});
42
+ // Extending new custom Error types with `Object.setPrototypeOf`
43
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf
44
+
45
+ class CommonError extends Error {
46
+ constructor(message) {
47
+ super(message);
48
+ this.name = this.constructor.name;
49
+ this.message = message || 'UnknownError';
50
+ this.stack = new Error(message).stack || '';
51
+ }
52
+ }
53
+ export class DefaultError extends CommonError {
54
+ constructor({
55
+ message
56
+ }) {
57
+ super(message || 'UnknownError');
58
+ Object.setPrototypeOf(this, DefaultError.prototype);
59
+ }
60
+ }
61
+
62
+ /**
63
+ * These errors will not fail UFO experiences
64
+ */
65
+ export class SLOIgnoreError extends CommonError {
66
+ constructor({
67
+ message
68
+ }) {
69
+ super(`SentryIgnore: ${message || 'UnknownError'}`);
70
+ Object.setPrototypeOf(this, SLOIgnoreError.prototype);
71
+ }
72
+ }
73
+ // Http Errors
74
+ export class HttpError extends CommonError {
75
+ constructor({
76
+ message,
77
+ status,
78
+ traceId,
79
+ path
80
+ }) {
81
+ super(message);
82
+ Object.setPrototypeOf(this, HttpError.prototype);
83
+ this.status = status;
84
+ this.traceId = traceId;
85
+ this.path = path;
86
+ }
87
+ }
88
+
89
+ /**
90
+ * These errors will not fail UFO experiences
91
+ */
92
+ export class SLOIgnoreHttpError extends HttpError {
93
+ constructor(props) {
94
+ super(props);
95
+ Object.setPrototypeOf(this, SLOIgnoreHttpError.prototype);
96
+ }
97
+ }
98
+
99
+ // Graphql Errors
100
+
101
+ export class GraphQLError extends CommonError {
102
+ // tslint:disable-line no-any
103
+
104
+ constructor({
105
+ message,
106
+ category = 'default',
107
+ fields
108
+ }) {
109
+ super(message);
110
+ Object.setPrototypeOf(this, GraphQLError.prototype);
111
+ this.category = category;
112
+ if (fields) {
113
+ this.fields = fields;
114
+ }
115
+ }
116
+ }
117
+ _GraphQLError = GraphQLError;
118
+ _defineProperty(GraphQLError, "from", rawErrors => {
119
+ const firstError = rawErrors[0];
120
+ const errorData = {
121
+ category: firstError.category,
122
+ message: firstError.message
123
+ };
124
+ if (firstError.fields) {
125
+ errorData.fields = firstError.fields.reduce((obj, item) => {
126
+ obj[item.field] = item.message;
127
+ return obj;
128
+ }, {});
129
+ }
130
+ return new _GraphQLError(errorData);
131
+ });
132
+ export function isNetworkError(error) {
133
+ return error && !!error.message && (
134
+ // Firefox
135
+ error.message.includes('NetworkError') ||
136
+ // Chrome
137
+ error.message.startsWith('Failed to fetch') || error.message.includes('GraphQL error: Failed to fetch') ||
138
+ // cancel by users or unknown reason
139
+ error.message.includes('GraphQL error: The operation was aborted') || error.message.includes('GraphQL error: cancelled') || error.message.includes('Abgebrochen') || error.message.includes('отменено') || error.message.includes('Сетевое соединение потеряно.') || error.message.includes('anulowane') || error.message.includes('annulé') || error.message.includes('已取消') || error.message.includes('cancelado') || error.message.includes('キャンセルしました') || error.message.includes('cancelled') || error.message.includes('Network error') ||
140
+ // GraphQL-wrapping network error
141
+ !!(error['graphQLErrors'] && error['networkError']));
142
+ }
@@ -0,0 +1,3 @@
1
+ export function filterNull(x) {
2
+ return !!x;
3
+ }
@@ -0,0 +1,82 @@
1
+ export const EXPONENTIAL_BACKOFF_RETRY_POLICY = {
2
+ INITIAL_DELAY: 200,
3
+ MAX_RETRIES: 5,
4
+ JITTER: true
5
+ };
6
+
7
+ /**
8
+ * Checks whether a status code is a 5xx HTTP code.
9
+ * @param {number} status HTTP status code
10
+ */
11
+ export function is5xx(status) {
12
+ return 500 <= status && status <= 599;
13
+ }
14
+ export function isFetchResponse(data) {
15
+ if (!data || !data.hasOwnProperty('response')) {
16
+ return false;
17
+ }
18
+ return data.response instanceof Response;
19
+ }
20
+
21
+ // tslint:disable-next-line no-any
22
+
23
+ // tslint:disable-next-line no-any
24
+ const defaultRetryIfCallback = a => !a;
25
+ const defaultOptions = {
26
+ initial: 200,
27
+ jitter: false,
28
+ max: 5,
29
+ retryIf: defaultRetryIfCallback
30
+ };
31
+ /**
32
+ * Transparently wrap a function so that it is retried until it succeeds or reaches a max retry limit.
33
+ * The returned function has the same signature as the wrapped function.
34
+ *
35
+ * Modified from https://jsfiddle.net/pajtai/pLka0ow9/
36
+ */
37
+ export function withExponentialBackoff(toTry, hofOptions = defaultOptions) {
38
+ const {
39
+ initial,
40
+ jitter,
41
+ max,
42
+ retryIf
43
+ } = hofOptions;
44
+
45
+ // Initialize max retry decrementing counter (range of max...0)
46
+ let attemptsRemaining = max;
47
+
48
+ // Initialize delay. This will exponentially increase each retry (delay = intial * 2^n)
49
+ let delay = initial;
50
+
51
+ /**
52
+ * This function calls itself recursively until `retryIf` evaluates false or the retry limit is reached.
53
+ * The functioned-to-be-retried is called on each recursion.
54
+ */
55
+ return async function tryWithExponentialBackoff(...args) {
56
+ // "An attempt was made"
57
+ const result = await toTry(...args);
58
+ --attemptsRemaining;
59
+
60
+ // If tried function was unsuccessful and there are still retries remaining, retry!
61
+ if (retryIf && retryIf(result) && attemptsRemaining > 0) {
62
+ // Wait for delay
63
+ await new Promise(resolve => setTimeout(resolve, jitter ? Math.random() * delay : delay));
64
+
65
+ // Exponentially increase delay
66
+ delay *= 2;
67
+
68
+ // Initiate retry
69
+ return tryWithExponentialBackoff(...args);
70
+ }
71
+
72
+ // Return result of tried function if it is successful or if the retry limit
73
+ // was reached regardless of success.
74
+ return result;
75
+ };
76
+ }
77
+ export const fetchWithExponentialBackoff = withExponentialBackoff((url, init) => fetch(url, init), {
78
+ initial: EXPONENTIAL_BACKOFF_RETRY_POLICY.INITIAL_DELAY,
79
+ jitter: EXPONENTIAL_BACKOFF_RETRY_POLICY.JITTER,
80
+ max: EXPONENTIAL_BACKOFF_RETRY_POLICY.MAX_RETRIES,
81
+ retryIf: response => is5xx(response.status)
82
+ });
@@ -0,0 +1,2 @@
1
+ export { sortMembersByType } from './sort-teams';
2
+ export { isInvited, isMember, isNonMember, isRequestingJoin } from './team';
@@ -0,0 +1,59 @@
1
+ import { fg } from '@atlaskit/platform-feature-flags';
2
+ export const allPermissions = (defaultPermission, isMember) => ({
3
+ ADD_MEMBER_TO_TEAM: defaultPermission,
4
+ JOIN_TEAM: defaultPermission,
5
+ REQUEST_TO_JOIN: defaultPermission,
6
+ CANCEL_JOIN_REQUEST: defaultPermission,
7
+ APPROVE_JOIN_REQUEST: defaultPermission,
8
+ REJECT_JOIN_REQUEST: defaultPermission,
9
+ REMOVE_MEMBER_FROM_TEAM: defaultPermission,
10
+ CANCEL_INVITE: defaultPermission,
11
+ LEAVE_TEAM: defaultPermission && isMember,
12
+ EDIT_DESCRIPTION: defaultPermission,
13
+ EDIT_TEAM_NAME: defaultPermission,
14
+ EDIT_PROFILE_HEADER: defaultPermission,
15
+ EDIT_TEAM_LINK: defaultPermission,
16
+ DELETE_TEAM: defaultPermission,
17
+ EDIT_TEAM_SETTINGS: defaultPermission,
18
+ EDIT_TEAM_MEMBERSHIP: defaultPermission,
19
+ REMOVE_AGENT_FROM_TEAM: defaultPermission,
20
+ ADD_AGENT_TO_TEAM: defaultPermission
21
+ });
22
+ export const vanityActions = ['EDIT_DESCRIPTION', 'EDIT_TEAM_NAME', 'EDIT_PROFILE_HEADER', 'EDIT_TEAM_LINK'];
23
+ export const openPermissions = permission => ({
24
+ JOIN_TEAM: permission === 'FULL_READ' || permission === 'FULL_WRITE',
25
+ REQUEST_TO_JOIN: false,
26
+ CANCEL_JOIN_REQUEST: false,
27
+ APPROVE_JOIN_REQUEST: false,
28
+ REJECT_JOIN_REQUEST: false
29
+ });
30
+ export const inviteOnlyPermissions = permission => ({
31
+ REQUEST_TO_JOIN: permission === 'FULL_READ',
32
+ CANCEL_JOIN_REQUEST: permission === 'FULL_READ'
33
+ });
34
+ export const SCIMSyncTeamPermissions = (isMember, isOrgAdmin) => ({
35
+ EDIT_DESCRIPTION: isMember || isOrgAdmin,
36
+ EDIT_TEAM_SETTINGS: isMember || isOrgAdmin,
37
+ EDIT_TEAM_LINK: isMember || isOrgAdmin,
38
+ EDIT_TEAM_NAME: (isMember || isOrgAdmin) && fg('enable_edit_team_name_external_type_teams')
39
+ });
40
+ export const getPermissionMap = (settings, permission, isMember, isOrgAdmin) => {
41
+ if (settings === 'OPEN') {
42
+ return {
43
+ ...allPermissions(permission === 'FULL_WRITE', isMember),
44
+ ...openPermissions(permission)
45
+ };
46
+ }
47
+ if (settings === 'MEMBER_INVITE') {
48
+ return {
49
+ ...allPermissions(permission === 'FULL_WRITE', isMember),
50
+ ...inviteOnlyPermissions(permission)
51
+ };
52
+ } else if (settings === 'EXTERNAL') {
53
+ return {
54
+ ...allPermissions(false, isMember),
55
+ ...SCIMSyncTeamPermissions(isMember, isOrgAdmin)
56
+ };
57
+ }
58
+ return allPermissions(false, false);
59
+ };
@@ -0,0 +1,33 @@
1
+ import { isMember } from '../team';
2
+ import { getPermissionMap, vanityActions } from './constants';
3
+ export function hasPermission(action, settings, permission, isPeopleBrowseEnabled, currentUserMembership, teamVisibilityPermissions) {
4
+ if (!isPeopleBrowseEnabled && !vanityActions.includes(action)) {
5
+ return false;
6
+ }
7
+ const isMemberOfTeam = isMember(currentUserMembership);
8
+ const isOrgAdmin = Boolean(teamVisibilityPermissions === null || teamVisibilityPermissions === void 0 ? void 0 : teamVisibilityPermissions.canAdminTeams);
9
+ return userCan(action, {
10
+ membershipSettings: settings,
11
+ teamPermission: permission,
12
+ isMemberOfTeam,
13
+ isOrgAdmin
14
+ });
15
+ }
16
+ /**
17
+ * Determines if a user has permission perform a given action on a team
18
+ */
19
+ export function userCan(action, options) {
20
+ return getPermissionMap(options.membershipSettings, options.teamPermission, options.isMemberOfTeam, options.isOrgAdmin)[action];
21
+ }
22
+
23
+ /**
24
+ * @deprecated Use `userCan` instead, it gives better visibility into the option mappings
25
+ */
26
+ export function hasPermissionForAction(action, settings, permission, isMemberOfTeam, isOrgAdmin = false) {
27
+ return userCan(action, {
28
+ membershipSettings: settings,
29
+ teamPermission: permission,
30
+ isMemberOfTeam,
31
+ isOrgAdmin
32
+ });
33
+ }
@@ -0,0 +1,2 @@
1
+ export { hasPermission, hasPermissionForAction, userCan } from './has-permission';
2
+ export { AllTeamActions } from './types';
@@ -0,0 +1,5 @@
1
+ export const AllTeamActions = ['ADD_MEMBER_TO_TEAM', 'JOIN_TEAM', 'REQUEST_TO_JOIN', 'CANCEL_JOIN_REQUEST', 'APPROVE_JOIN_REQUEST', 'REJECT_JOIN_REQUEST', 'REMOVE_MEMBER_FROM_TEAM', 'CANCEL_INVITE', 'LEAVE_TEAM', 'REMOVE_AGENT_FROM_TEAM', 'ADD_AGENT_TO_TEAM',
2
+ // Visual
3
+ 'EDIT_TEAM_NAME', 'EDIT_DESCRIPTION', 'EDIT_PROFILE_HEADER', 'EDIT_TEAM_LINK', 'EDIT_TEAM_SETTINGS', 'EDIT_TEAM_MEMBERSHIP',
4
+ // Serious
5
+ 'DELETE_TEAM'];
@@ -0,0 +1,45 @@
1
+ var MemberType = /*#__PURE__*/function (MemberType) {
2
+ MemberType[MemberType["CURRENT_USER"] = 0] = "CURRENT_USER";
3
+ MemberType[MemberType["MEMBER"] = 1] = "MEMBER";
4
+ MemberType[MemberType["INVITED"] = 2] = "INVITED";
5
+ MemberType[MemberType["INACTIVE"] = 3] = "INACTIVE";
6
+ MemberType[MemberType["DELETED"] = 4] = "DELETED";
7
+ return MemberType;
8
+ }(MemberType || {});
9
+ const checkType = (member, currentAccountId) => {
10
+ var _member$user, _member$user2;
11
+ if (member.membershipId.memberId === currentAccountId) {
12
+ return MemberType.CURRENT_USER;
13
+ } else if (member && member.state === 'INVITED') {
14
+ return MemberType.INVITED;
15
+ } else if (((_member$user = member.user) === null || _member$user === void 0 ? void 0 : _member$user.status) === 'inactive') {
16
+ return MemberType.INACTIVE;
17
+ } else if (((_member$user2 = member.user) === null || _member$user2 === void 0 ? void 0 : _member$user2.status) === 'closed') {
18
+ return MemberType.DELETED;
19
+ } else {
20
+ return MemberType.MEMBER;
21
+ }
22
+ };
23
+ export const sortMembersByType = (members, currentAccountId) => {
24
+ const newMembers = members.map(member => ({
25
+ member,
26
+ type: checkType(member, currentAccountId)
27
+ }));
28
+ newMembers.sort(({
29
+ member: memberA,
30
+ type: typeA
31
+ }, {
32
+ member: memberB,
33
+ type: typeB
34
+ }) => {
35
+ if (typeA === typeB) {
36
+ var _memberA$user, _memberB$user;
37
+ return ((_memberA$user = memberA.user) === null || _memberA$user === void 0 ? void 0 : _memberA$user.fullName.localeCompare(((_memberB$user = memberB.user) === null || _memberB$user === void 0 ? void 0 : _memberB$user.fullName) || '')) || 0;
38
+ } else {
39
+ return typeA - typeB;
40
+ }
41
+ });
42
+ return newMembers.map(({
43
+ member
44
+ }) => member);
45
+ };
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Our REST clients are initialised when their module loads which makes it tricky for them to consume the `statusCodeHandlers` prop passed to App from the host application.
3
+ * This is a temporary measure to enable the clients to consume `statusCodeHandlers`.
4
+ * The long term solution is to replace our REST clients with Apollo client custom resolvers
5
+ * This will unify all remote data handling under the apollo-client module which is able to easily receive `statusCodeHandlers` as it is initialised within the React portion of our app.
6
+ */
7
+
8
+ export const statusCodeHandlersProvider = {
9
+ handlers: {},
10
+ get() {
11
+ return statusCodeHandlersProvider.handlers;
12
+ },
13
+ setHandlers(handlers) {
14
+ statusCodeHandlersProvider.handlers = handlers;
15
+ }
16
+ };
17
+ export function handleResponse(response) {
18
+ const {
19
+ status
20
+ } = response;
21
+ const handler = statusCodeHandlersProvider.get()[status];
22
+ if (typeof handler === 'function') {
23
+ handler(response);
24
+ }
25
+ }
@@ -0,0 +1,6 @@
1
+ export function isInvited(member) {
2
+ return !!member && member.state === 'INVITED';
3
+ }
4
+ export const isNonMember = member => !member || member.state === 'ALUMNI';
5
+ export const isRequestingJoin = member => !!member && member.state === 'REQUESTING_TO_JOIN';
6
+ export const isMember = member => !!member && member.state === 'FULL_MEMBER';
@@ -0,0 +1,12 @@
1
+ import { ExperiencePerformanceTypes, ExperienceTypes } from '@atlaskit/ufo';
2
+ import { TeamsUFOExperience } from './index';
3
+ const TeamsClientExperienceKeyList = ['getAllTeams', 'getTeamById', 'updateTeamById', 'querySettings', 'queryFeatureFlags', 'queryTeamMemberships', 'queryUser', 'inviteUsersToTeam', 'getMyTeamMembership', 'getTeamLinksByTeamId', 'createTeamLink', 'updateTeamLink', 'deleteTeamLink', 'reorderTeamLink', 'acceptTeamInvitation', 'declineTeamInvitation', 'selfJoinTeam', 'cancelJoinRequest', 'acceptJoinRequest', 'declineJoinRequest', 'deleteTeamMembership', 'revokeTeamInvite', 'deleteTeam', 'isSingleFullMemberTeam', 'createTeam', 'createExternalTeam', 'getProfileWithMutability', 'getIsSiteAdmin', 'addUsersToTeam', 'removeTeamMemberships', 'getRecommendedProducts', 'joinOrRequestDefaultAccessToProductsBulk', 'getReadMediaToken', 'getWriteUserMediaToken', 'updateUserHeaderImage', 'getWriteTeamMediaToken', 'getSoftDeletedTeamById', 'restoreTeam', 'getUserInSiteUserBase', 'getLinkedTeamsBulk', 'getTeamProfileDetails', 'getUserContainers', 'getPermissions', 'getUserManageConfig', 'getMyAvatarUploadedStatus', 'deleteUserAvatar', 'getTeamLinkIcons', 'getTeamInSlack', 'getOrgScope', 'restoreTeamToSyncedGroup', 'getTeamAndGroupDiff', 'linkExistingTeamToGroup', 'fetchUserAvatarInfo', 'getOrgEligibilityForManagedTeams', 'updateUser', 'updateUserAvatar', 'disconnectTeamInSlack', 'updateTeamInSlack'];
4
+ export const TEAMS_CLIENT_EXPERIENCES = new Map([...TeamsClientExperienceKeyList.map(key => [key,
5
+ // camelCase to kebab-case
6
+ new TeamsUFOExperience(`teams-client-${key.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()}`, {
7
+ type: ExperienceTypes.Operation,
8
+ performanceType: ExperiencePerformanceTypes.Custom,
9
+ platform: {
10
+ component: 'people'
11
+ }
12
+ })])]);
@@ -0,0 +1,43 @@
1
+ import { UFOExperience } from '@atlaskit/ufo';
2
+ import { isAuthError, isErrorStatusCode, isNetworkError, StatusCode } from '../error';
3
+ import { createErrorMetadata, isIgnoredError } from './utils';
4
+ export class TeamsUFOExperience extends UFOExperience {
5
+ abortWithError(error, reason) {
6
+ return super.abort({
7
+ metadata: {
8
+ error: createErrorMetadata(error),
9
+ reason
10
+ }
11
+ });
12
+ }
13
+ failWithError(error) {
14
+ if (error instanceof Error) {
15
+ if (isAuthError(error)) {
16
+ return this.abortWithError(error, 'Abort due to user unauthenticated');
17
+ }
18
+ if (isErrorStatusCode(StatusCode.GONE, error)) {
19
+ return this.abortWithError(error, 'Abort due to unavailable resource');
20
+ }
21
+ if (isIgnoredError(error)) {
22
+ return this.abortWithError(error, 'Abort due to an error in ignore list');
23
+ }
24
+ if (isNetworkError(error)) {
25
+ return this.abortWithError(error, 'Abort due to network error');
26
+ }
27
+ return super.failure({
28
+ metadata: {
29
+ error: createErrorMetadata(error),
30
+ packageVersion: "4.0.0",
31
+ packageName: "@atlaskit/teams-client"
32
+ }
33
+ });
34
+ }
35
+ return super.failure({
36
+ metadata: {
37
+ error: 'unknown error',
38
+ packageVersion: "4.0.0",
39
+ packageName: "@atlaskit/teams-client"
40
+ }
41
+ });
42
+ }
43
+ }
@@ -0,0 +1,18 @@
1
+ import { HttpError } from '../error';
2
+ export const createErrorMetadata = error => ({
3
+ error: {
4
+ name: error.name,
5
+ message: error.message,
6
+ stack: error.stack,
7
+ traceId: error instanceof HttpError ? error.traceId : undefined,
8
+ status: error instanceof HttpError ? error.status : undefined
9
+ }
10
+ });
11
+ const ignoredErrors = ['SLOIgnoreError', 'SLOIgnoreHttpError'];
12
+ export const isIgnoredError = error => {
13
+ const errorName = error === null || error === void 0 ? void 0 : error.constructor.name;
14
+ if (!errorName) {
15
+ return false;
16
+ }
17
+ return ignoredErrors.includes(errorName);
18
+ };
@@ -0,0 +1,19 @@
1
+ export { HttpError } from './common/utils/error';
2
+ export { isTeamMembershipWithUser } from './types/membership';
3
+
4
+ // /client
5
+ export { teamsClient, TeamsClient } from './services';
6
+ export { useTeamsClientSetup, useTeamsClientSetupNext } from './services/hooks/use-teams-client-setup';
7
+
8
+ // /permissions
9
+ export { AllTeamActions, hasPermission } from './common/utils/permissions';
10
+ // /sentry
11
+ export { initialiseSentry } from './services/sentry/utils/initialise-sentry';
12
+ export { logException, logInfoMessage } from './services/sentry/main';
13
+ // /user-info-provider
14
+ export { userInfoProvider, UserInfoProvider } from './services/user-info-provider';
15
+
16
+ // /utils
17
+ export { sortMembersByType, isInvited, isMember, isNonMember, isRequestingJoin } from './common/utils';
18
+ export { toUserARI, toUserId, toTeamARI, toTeamId } from './common/utils/ari';
19
+ export { useLazyQueryLight, useQueryLight, UseQueryLightError } from './services/use-query-light';