@replicated/portal-components 0.0.19 → 0.0.21

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 (244) hide show
  1. package/components/metadata/registry.json +2 -2
  2. package/components/metadata/registry.md +2 -2
  3. package/dist/actions/change-team.js +66 -7
  4. package/dist/actions/change-team.js.map +1 -1
  5. package/dist/actions/index.d.mts +3 -1
  6. package/dist/actions/index.d.ts +3 -1
  7. package/dist/actions/index.js +182 -465
  8. package/dist/actions/index.js.map +1 -1
  9. package/dist/actions/install-actions.d.mts +3 -1
  10. package/dist/actions/install-actions.d.ts +3 -1
  11. package/dist/actions/install-actions.js +58 -5
  12. package/dist/actions/install-actions.js.map +1 -1
  13. package/dist/actions/service-account.d.mts +3 -1
  14. package/dist/actions/service-account.d.ts +3 -1
  15. package/dist/actions/service-account.js +58 -5
  16. package/dist/actions/service-account.js.map +1 -1
  17. package/dist/actions/support-bundles.d.mts +3 -1
  18. package/dist/actions/support-bundles.d.ts +3 -1
  19. package/dist/actions/support-bundles.js +58 -5
  20. package/dist/actions/support-bundles.js.map +1 -1
  21. package/dist/actions/team-settings.d.mts +3 -1
  22. package/dist/actions/team-settings.d.ts +3 -1
  23. package/dist/actions/team-settings.js +91 -27
  24. package/dist/actions/team-settings.js.map +1 -1
  25. package/dist/actions/trial-signup.d.mts +24 -0
  26. package/dist/actions/trial-signup.d.ts +24 -0
  27. package/dist/actions/trial-signup.js +482 -0
  28. package/dist/actions/trial-signup.js.map +1 -0
  29. package/dist/actions/user-settings.d.mts +3 -1
  30. package/dist/actions/user-settings.d.ts +3 -1
  31. package/dist/actions/user-settings.js +58 -5
  32. package/dist/actions/user-settings.js.map +1 -1
  33. package/dist/airgap-instances.d.mts +3 -1
  34. package/dist/airgap-instances.d.ts +3 -1
  35. package/dist/airgap-instances.js +41 -112
  36. package/dist/airgap-instances.js.map +1 -1
  37. package/dist/branding-BsMSywts.d.mts +36 -0
  38. package/dist/branding-BsMSywts.d.ts +36 -0
  39. package/dist/error-page.js +10 -2
  40. package/dist/error-page.js.map +1 -1
  41. package/dist/error.js +10 -2
  42. package/dist/error.js.map +1 -1
  43. package/dist/esm/actions/change-team.js +66 -7
  44. package/dist/esm/actions/change-team.js.map +1 -1
  45. package/dist/esm/actions/index.js +181 -462
  46. package/dist/esm/actions/index.js.map +1 -1
  47. package/dist/esm/actions/install-actions.js +58 -5
  48. package/dist/esm/actions/install-actions.js.map +1 -1
  49. package/dist/esm/actions/service-account.js +58 -5
  50. package/dist/esm/actions/service-account.js.map +1 -1
  51. package/dist/esm/actions/support-bundles.js +58 -5
  52. package/dist/esm/actions/support-bundles.js.map +1 -1
  53. package/dist/esm/actions/team-settings.js +91 -27
  54. package/dist/esm/actions/team-settings.js.map +1 -1
  55. package/dist/esm/actions/trial-signup.js +478 -0
  56. package/dist/esm/actions/trial-signup.js.map +1 -0
  57. package/dist/esm/actions/user-settings.js +58 -5
  58. package/dist/esm/actions/user-settings.js.map +1 -1
  59. package/dist/esm/airgap-instances.js +40 -112
  60. package/dist/esm/airgap-instances.js.map +1 -1
  61. package/dist/esm/error-page.js +10 -2
  62. package/dist/esm/error-page.js.map +1 -1
  63. package/dist/esm/error.js +10 -2
  64. package/dist/esm/error.js.map +1 -1
  65. package/dist/esm/helm-install-wizard.js +118 -79
  66. package/dist/esm/helm-install-wizard.js.map +1 -1
  67. package/dist/esm/index.js +706 -438
  68. package/dist/esm/index.js.map +1 -1
  69. package/dist/esm/install-actions.js +40 -5
  70. package/dist/esm/install-actions.js.map +1 -1
  71. package/dist/esm/install-card.js +9 -6
  72. package/dist/esm/install-card.js.map +1 -1
  73. package/dist/esm/install-targets.js +9 -2
  74. package/dist/esm/install-targets.js.map +1 -1
  75. package/dist/esm/instance-card.js +39 -111
  76. package/dist/esm/instance-card.js.map +1 -1
  77. package/dist/esm/join-team.js +9 -3
  78. package/dist/esm/join-team.js.map +1 -1
  79. package/dist/esm/license-card.js +24 -22
  80. package/dist/esm/license-card.js.map +1 -1
  81. package/dist/esm/license-details.js +128 -334
  82. package/dist/esm/license-details.js.map +1 -1
  83. package/dist/esm/linux-install-wizard.js +95 -41
  84. package/dist/esm/linux-install-wizard.js.map +1 -1
  85. package/dist/esm/login.js +20 -4
  86. package/dist/esm/login.js.map +1 -1
  87. package/dist/esm/middleware.js +33 -0
  88. package/dist/esm/middleware.js.map +1 -0
  89. package/dist/esm/online-instance-list.js +40 -112
  90. package/dist/esm/online-instance-list.js.map +1 -1
  91. package/dist/esm/release-history-panel.js +27 -14
  92. package/dist/esm/release-history-panel.js.map +1 -1
  93. package/dist/esm/saml-callback-client.js +82 -0
  94. package/dist/esm/saml-callback-client.js.map +1 -0
  95. package/dist/esm/saml-handlers.js +138 -0
  96. package/dist/esm/saml-handlers.js.map +1 -0
  97. package/dist/esm/security-card.js +53 -38
  98. package/dist/esm/security-card.js.map +1 -1
  99. package/dist/esm/service-accounts-tab.js +800 -0
  100. package/dist/esm/service-accounts-tab.js.map +1 -0
  101. package/dist/esm/support-bundle-collection-card.js +48 -24
  102. package/dist/esm/support-bundle-collection-card.js.map +1 -1
  103. package/dist/esm/support-bundles-card.js +10 -5
  104. package/dist/esm/support-bundles-card.js.map +1 -1
  105. package/dist/esm/support-card.js +37 -5
  106. package/dist/esm/support-card.js.map +1 -1
  107. package/dist/esm/team-selection.js +5 -1
  108. package/dist/esm/team-selection.js.map +1 -1
  109. package/dist/esm/team-settings-card.js +5 -2
  110. package/dist/esm/team-settings-card.js.map +1 -1
  111. package/dist/esm/team-settings.js +7 -2
  112. package/dist/esm/team-settings.js.map +1 -1
  113. package/dist/esm/top-nav-user-menu.js +5 -1
  114. package/dist/esm/top-nav-user-menu.js.map +1 -1
  115. package/dist/esm/top-nav.js +175 -62
  116. package/dist/esm/top-nav.js.map +1 -1
  117. package/dist/esm/trial-signup.js +256 -0
  118. package/dist/esm/trial-signup.js.map +1 -0
  119. package/dist/esm/update-layout.js +175 -62
  120. package/dist/esm/update-layout.js.map +1 -1
  121. package/dist/esm/updates-card.js +15 -4
  122. package/dist/esm/updates-card.js.map +1 -1
  123. package/dist/esm/upload-support-bundle-modal.js +9 -4
  124. package/dist/esm/upload-support-bundle-modal.js.map +1 -1
  125. package/dist/esm/user-settings-card.js +5 -2
  126. package/dist/esm/user-settings-card.js.map +1 -1
  127. package/dist/esm/user-settings.js +12 -6
  128. package/dist/esm/user-settings.js.map +1 -1
  129. package/dist/esm/utils/index.js +204 -13
  130. package/dist/esm/utils/index.js.map +1 -1
  131. package/dist/fetch-license-iTyF7_GY.d.mts +81 -0
  132. package/dist/fetch-license-iTyF7_GY.d.ts +81 -0
  133. package/dist/helm-install-wizard.d.mts +11 -3
  134. package/dist/helm-install-wizard.d.ts +11 -3
  135. package/dist/helm-install-wizard.js +118 -79
  136. package/dist/helm-install-wizard.js.map +1 -1
  137. package/dist/{index-BAiVrSSR.d.mts → index-DyzJ0yKD.d.mts} +48 -50
  138. package/dist/{index-DWt-N5od.d.ts → index-sMbq94M7.d.ts} +48 -50
  139. package/dist/index.d.mts +8 -2
  140. package/dist/index.d.ts +8 -2
  141. package/dist/index.js +726 -438
  142. package/dist/index.js.map +1 -1
  143. package/dist/install-actions.d.mts +4 -2
  144. package/dist/install-actions.d.ts +4 -2
  145. package/dist/install-actions.js +40 -5
  146. package/dist/install-actions.js.map +1 -1
  147. package/dist/install-card.d.mts +2 -3
  148. package/dist/install-card.d.ts +2 -3
  149. package/dist/install-card.js +9 -6
  150. package/dist/install-card.js.map +1 -1
  151. package/dist/install-targets.js +9 -2
  152. package/dist/install-targets.js.map +1 -1
  153. package/dist/instance-card.d.mts +3 -1
  154. package/dist/instance-card.d.ts +3 -1
  155. package/dist/instance-card.js +40 -111
  156. package/dist/instance-card.js.map +1 -1
  157. package/dist/join-team.js +9 -3
  158. package/dist/join-team.js.map +1 -1
  159. package/dist/license-card.d.mts +2 -3
  160. package/dist/license-card.d.ts +2 -3
  161. package/dist/license-card.js +24 -22
  162. package/dist/license-card.js.map +1 -1
  163. package/dist/license-details.js +128 -334
  164. package/dist/license-details.js.map +1 -1
  165. package/dist/linux-install-wizard.d.mts +9 -3
  166. package/dist/linux-install-wizard.d.ts +9 -3
  167. package/dist/linux-install-wizard.js +95 -41
  168. package/dist/linux-install-wizard.js.map +1 -1
  169. package/dist/login.d.mts +4 -0
  170. package/dist/login.d.ts +4 -0
  171. package/dist/login.js +20 -4
  172. package/dist/login.js.map +1 -1
  173. package/dist/middleware.d.mts +13 -0
  174. package/dist/middleware.d.ts +13 -0
  175. package/dist/middleware.js +35 -0
  176. package/dist/middleware.js.map +1 -0
  177. package/dist/online-instance-list.d.mts +3 -1
  178. package/dist/online-instance-list.d.ts +3 -1
  179. package/dist/online-instance-list.js +41 -112
  180. package/dist/online-instance-list.js.map +1 -1
  181. package/dist/pending-installations.d.mts +3 -1
  182. package/dist/pending-installations.d.ts +3 -1
  183. package/dist/release-history-panel.js +27 -14
  184. package/dist/release-history-panel.js.map +1 -1
  185. package/dist/saml-callback-client.d.mts +36 -0
  186. package/dist/saml-callback-client.d.ts +36 -0
  187. package/dist/saml-callback-client.js +88 -0
  188. package/dist/saml-callback-client.js.map +1 -0
  189. package/dist/saml-handlers.d.mts +50 -0
  190. package/dist/saml-handlers.d.ts +50 -0
  191. package/dist/saml-handlers.js +141 -0
  192. package/dist/saml-handlers.js.map +1 -0
  193. package/dist/security-card.d.mts +3 -1
  194. package/dist/security-card.d.ts +3 -1
  195. package/dist/security-card.js +53 -38
  196. package/dist/security-card.js.map +1 -1
  197. package/dist/service-accounts-tab.d.mts +51 -0
  198. package/dist/service-accounts-tab.d.ts +51 -0
  199. package/dist/service-accounts-tab.js +802 -0
  200. package/dist/service-accounts-tab.js.map +1 -0
  201. package/dist/styles.css +375 -127
  202. package/dist/support-bundle-collection-card.d.mts +1 -1
  203. package/dist/support-bundle-collection-card.d.ts +1 -1
  204. package/dist/support-bundle-collection-card.js +47 -23
  205. package/dist/support-bundle-collection-card.js.map +1 -1
  206. package/dist/support-bundles-card.d.mts +4 -2
  207. package/dist/support-bundles-card.d.ts +4 -2
  208. package/dist/support-bundles-card.js +10 -5
  209. package/dist/support-bundles-card.js.map +1 -1
  210. package/dist/support-card.js +37 -5
  211. package/dist/support-card.js.map +1 -1
  212. package/dist/team-selection.js +5 -1
  213. package/dist/team-selection.js.map +1 -1
  214. package/dist/team-settings-card.js +5 -2
  215. package/dist/team-settings-card.js.map +1 -1
  216. package/dist/team-settings.js +7 -2
  217. package/dist/team-settings.js.map +1 -1
  218. package/dist/{top-nav-IRIn66wS.d.ts → top-nav-BUQAGoG1.d.mts} +14 -2
  219. package/dist/{top-nav-IRIn66wS.d.mts → top-nav-CEqw0KpO.d.ts} +14 -2
  220. package/dist/top-nav-user-menu.js +5 -1
  221. package/dist/top-nav-user-menu.js.map +1 -1
  222. package/dist/top-nav.d.mts +2 -1
  223. package/dist/top-nav.d.ts +2 -1
  224. package/dist/top-nav.js +175 -62
  225. package/dist/top-nav.js.map +1 -1
  226. package/dist/trial-signup.d.mts +31 -0
  227. package/dist/trial-signup.d.ts +31 -0
  228. package/dist/trial-signup.js +258 -0
  229. package/dist/trial-signup.js.map +1 -0
  230. package/dist/update-layout.js +175 -62
  231. package/dist/update-layout.js.map +1 -1
  232. package/dist/updates-card.js +15 -4
  233. package/dist/updates-card.js.map +1 -1
  234. package/dist/upload-support-bundle-modal.js +9 -4
  235. package/dist/upload-support-bundle-modal.js.map +1 -1
  236. package/dist/user-settings-card.js +5 -2
  237. package/dist/user-settings-card.js.map +1 -1
  238. package/dist/user-settings.js +12 -6
  239. package/dist/user-settings.js.map +1 -1
  240. package/dist/utils/index.d.mts +74 -16
  241. package/dist/utils/index.d.ts +74 -16
  242. package/dist/utils/index.js +215 -12
  243. package/dist/utils/index.js.map +1 -1
  244. package/package.json +37 -2
@@ -1,2 +1,4 @@
1
- export { bh as Instance, bf as SAMLConfig, bg as ServiceAccount, bi as TeamUser, b6 as createServiceAccountAction, b4 as deleteUserAction, bd as deprovisionSamlAction, b9 as fetchInstancesAction, ba as fetchSamlConfigAction, b5 as fetchServiceAccountsAction, b2 as fetchTeamUsersAction, be as getSamlFeatureEnabled, b3 as inviteUserAction, b7 as revokeServiceAccountAction, b8 as rotateServiceAccountTokenAction, bc as toggleSamlEnabledAction, bb as updateSamlConfigAction } from '../index-BAiVrSSR.mjs';
1
+ export { ba as AppFeatures, be as Instance, bc as SAMLConfig, bd as ServiceAccount, bf as TeamUser, b2 as createServiceAccountAction, b0 as deleteUserAction, b9 as deprovisionSamlAction, bb as fetchAppFeatures, b5 as fetchInstancesAction, b6 as fetchSamlConfigAction, b1 as fetchServiceAccountsAction, a_ as fetchTeamUsersAction, a$ as inviteUserAction, b3 as revokeServiceAccountAction, b4 as rotateServiceAccountTokenAction, b8 as toggleSamlEnabledAction, b7 as updateSamlConfigAction } from '../index-DyzJ0yKD.mjs';
2
+ import '../fetch-license-iTyF7_GY.mjs';
2
3
  import './change-team.mjs';
4
+ import './trial-signup.mjs';
@@ -1,2 +1,4 @@
1
- export { bh as Instance, bf as SAMLConfig, bg as ServiceAccount, bi as TeamUser, b6 as createServiceAccountAction, b4 as deleteUserAction, bd as deprovisionSamlAction, b9 as fetchInstancesAction, ba as fetchSamlConfigAction, b5 as fetchServiceAccountsAction, b2 as fetchTeamUsersAction, be as getSamlFeatureEnabled, b3 as inviteUserAction, b7 as revokeServiceAccountAction, b8 as rotateServiceAccountTokenAction, bc as toggleSamlEnabledAction, bb as updateSamlConfigAction } from '../index-DWt-N5od.js';
1
+ export { ba as AppFeatures, be as Instance, bc as SAMLConfig, bd as ServiceAccount, bf as TeamUser, b2 as createServiceAccountAction, b0 as deleteUserAction, b9 as deprovisionSamlAction, bb as fetchAppFeatures, b5 as fetchInstancesAction, b6 as fetchSamlConfigAction, b1 as fetchServiceAccountsAction, a_ as fetchTeamUsersAction, a$ as inviteUserAction, b3 as revokeServiceAccountAction, b4 as rotateServiceAccountTokenAction, b8 as toggleSamlEnabledAction, b7 as updateSamlConfigAction } from '../index-sMbq94M7.js';
2
+ import '../fetch-license-iTyF7_GY.js';
2
3
  import './change-team.js';
4
+ import './trial-signup.js';
@@ -202,8 +202,17 @@ async function handle401() {
202
202
  const { redirect } = await import('next/navigation');
203
203
  return redirect("/?expired=1");
204
204
  }
205
+ function isErrorPage(url) {
206
+ try {
207
+ const urlObj = new URL(url);
208
+ return urlObj.pathname === "/error";
209
+ } catch {
210
+ return url === "/error" || url.startsWith("/error?");
211
+ }
212
+ }
205
213
  async function handleServerError(statusCode) {
206
214
  const { redirect } = await import('next/navigation');
215
+ const { cookies: cookies2 } = await import('next/headers');
207
216
  let sourceUrl;
208
217
  try {
209
218
  const { headers } = await import('next/headers');
@@ -211,12 +220,20 @@ async function handleServerError(statusCode) {
211
220
  const referer = headersList.get("referer");
212
221
  const host = headersList.get("host");
213
222
  const pathname = headersList.get("x-invoke-path") || headersList.get("x-forwarded-path");
214
- if (referer) {
223
+ if (referer && !isErrorPage(referer)) {
215
224
  sourceUrl = referer;
216
225
  } else if (host && pathname) {
217
226
  const protocol = headersList.get("x-forwarded-proto") || "https";
218
227
  sourceUrl = `${protocol}://${host}${pathname}`;
219
228
  }
229
+ if (!sourceUrl || isErrorPage(sourceUrl)) {
230
+ const cookieStore = await cookies2();
231
+ const preservedSource = cookieStore.get("portal_error_source");
232
+ if (preservedSource?.value) {
233
+ sourceUrl = decodeURIComponent(preservedSource.value);
234
+ cookieStore.delete("portal_error_source");
235
+ }
236
+ }
220
237
  } catch (error) {
221
238
  console.debug("[portal-components] Could not determine source URL", error);
222
239
  }
@@ -296,11 +313,15 @@ var fetchCustomBrandingImpl = async () => {
296
313
  const payload = await response.json();
297
314
  const brandingObject = {
298
315
  logo: payload.logoUrl,
299
- title: payload.appName,
300
- customColor1: payload.primaryColor,
301
- customColor2: payload.secondaryColor,
316
+ title: payload.title,
317
+ primaryColor: payload.primaryColor,
318
+ secondaryColor: payload.secondaryColor,
302
319
  favicon: payload.faviconUrl,
303
- supportPortalLink: payload.supportPortalLink || ""
320
+ supportPortalLink: payload.supportPortalLink || "",
321
+ background: payload.background,
322
+ backgroundImage: payload.backgroundImage,
323
+ customColor1: payload.customColor1,
324
+ customColor2: payload.customColor2
304
325
  };
305
326
  const brandingData = buffer.Buffer.from(JSON.stringify(brandingObject)).toString("base64");
306
327
  return {
@@ -334,6 +355,38 @@ var getCustomerIdFromToken = (token) => {
334
355
  }
335
356
  return customerId.trim();
336
357
  };
358
+ async function listReleasesImpl() {
359
+ const { cookies: cookies2 } = await import('next/headers');
360
+ const sessionStore = await cookies2();
361
+ const session = sessionStore.get("portal_session");
362
+ const token = session?.value;
363
+ if (!token) {
364
+ throw new Error("List releases requires a session token");
365
+ }
366
+ const endpoint = `${getApiOrigin()}/enterprise-portal/releases`;
367
+ if (process.env.NODE_ENV !== "production") {
368
+ console.debug("[portal-components] fetching releases via %s (Enterprise Portal API)", endpoint);
369
+ }
370
+ const response = await authenticatedFetch(endpoint, {
371
+ method: "GET",
372
+ token,
373
+ headers: {
374
+ accept: "application/json"
375
+ }
376
+ });
377
+ if (!response.ok) {
378
+ throw new Error(
379
+ `List releases request failed (${response.status} ${response.statusText})`
380
+ );
381
+ }
382
+ const envelope = await response.json();
383
+ const data = envelope.data;
384
+ return {
385
+ releases: Array.isArray(data?.releases) ? data.releases : [],
386
+ totalCount: data?.totalCount || 0
387
+ };
388
+ }
389
+ traceServerAction("listReleases", listReleasesImpl);
337
390
  var fetchTeamUsers = defineServerAction({
338
391
  id: "team/fetch-users",
339
392
  description: "Fetches paginated list of team users and pending invites",
@@ -929,44 +982,55 @@ async function deprovisionSamlActionImpl() {
929
982
  return { success: true };
930
983
  }
931
984
  var deprovisionSamlAction = traceServerAction("deprovisionSamlAction", deprovisionSamlActionImpl);
932
- async function getSamlFeatureEnabledImpl() {
985
+ async function fetchAppFeaturesImpl() {
933
986
  const sessionStore = await headers.cookies();
934
987
  const session = sessionStore.get("portal_session");
935
- if (!session?.value) {
936
- return false;
937
- }
938
988
  const appSlug = process.env.PORTAL_APP_SLUG;
939
989
  if (!appSlug) {
940
- return false;
990
+ throw new Error("PORTAL_APP_SLUG is not configured");
941
991
  }
942
- try {
943
- const payload = decodeJwtPayload(session.value);
944
- const customerId = payload?.customer_id;
945
- if (!customerId) {
946
- return false;
947
- }
948
- const url = `${getApiOrigin()}/v3/metadata?app_slug=${encodeURIComponent(appSlug)}&customer_id=${encodeURIComponent(customerId)}`;
949
- const response = await fetch(url, {
950
- headers: {
951
- Accept: "application/json"
992
+ const params = new URLSearchParams({ app_slug: appSlug });
993
+ if (session?.value) {
994
+ try {
995
+ const payload = decodeJwtPayload(session.value);
996
+ const customerId = payload?.customer_id;
997
+ if (customerId) {
998
+ params.set("customer_id", customerId);
952
999
  }
953
- });
954
- const data = await response.json();
955
- return data?.enterprise_portal_saml_auth === true;
956
- } catch {
957
- return false;
1000
+ } catch {
1001
+ }
1002
+ }
1003
+ const url = `${getApiOrigin()}/enterprise-portal/public/app-features?${params.toString()}`;
1004
+ const response = await fetch(url, {
1005
+ headers: {
1006
+ Accept: "application/json"
1007
+ }
1008
+ });
1009
+ if (!response.ok) {
1010
+ throw new Error(`Failed to fetch app features: ${response.status} ${response.statusText}`);
958
1011
  }
1012
+ const data = await response.json();
1013
+ return {
1014
+ epEnabled: data.ep_enabled ?? false,
1015
+ trialSignupEnabled: data.trial_signup_enabled ?? false,
1016
+ trialExpirationDays: data.trial_expiration_days ?? 30,
1017
+ licenseType: data.license_type ?? "trial",
1018
+ termsAndConditionsUrl: data.terms_and_conditions_url ?? "",
1019
+ epSecurityCenterEnabled: data.ep_security_center_enabled ?? false,
1020
+ epSamlAuthEnabled: data.ep_saml_auth_enabled ?? false,
1021
+ epHideSupportBundleUploadEnabled: data.ep_hide_support_bundle_upload_enabled ?? false
1022
+ };
959
1023
  }
960
- var getSamlFeatureEnabled = traceServerAction("getSamlFeatureEnabled", getSamlFeatureEnabledImpl);
1024
+ var fetchAppFeatures = traceServerAction("fetchAppFeatures", fetchAppFeaturesImpl);
961
1025
 
962
1026
  exports.createServiceAccountAction = createServiceAccountAction;
963
1027
  exports.deleteUserAction = deleteUserAction;
964
1028
  exports.deprovisionSamlAction = deprovisionSamlAction;
1029
+ exports.fetchAppFeatures = fetchAppFeatures;
965
1030
  exports.fetchInstancesAction = fetchInstancesAction;
966
1031
  exports.fetchSamlConfigAction = fetchSamlConfigAction;
967
1032
  exports.fetchServiceAccountsAction = fetchServiceAccountsAction;
968
1033
  exports.fetchTeamUsersAction = fetchTeamUsersAction;
969
- exports.getSamlFeatureEnabled = getSamlFeatureEnabled;
970
1034
  exports.inviteUserAction = inviteUserAction;
971
1035
  exports.revokeServiceAccountAction = revokeServiceAccountAction;
972
1036
  exports.rotateServiceAccountTokenAction = rotateServiceAccountTokenAction;