@contember/react-identity 1.3.0-alpha.14

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 (178) hide show
  1. package/dist/development/components/HasRole.cjs +24 -0
  2. package/dist/development/components/HasRole.cjs.map +1 -0
  3. package/dist/development/components/HasRole.js +24 -0
  4. package/dist/development/components/HasRole.js.map +1 -0
  5. package/dist/development/components/IdentityProvider.cjs +27 -0
  6. package/dist/development/components/IdentityProvider.cjs.map +1 -0
  7. package/dist/development/components/IdentityProvider.js +27 -0
  8. package/dist/development/components/IdentityProvider.js.map +1 -0
  9. package/dist/development/components/IdentityState.cjs +9 -0
  10. package/dist/development/components/IdentityState.cjs.map +1 -0
  11. package/dist/development/components/IdentityState.js +9 -0
  12. package/dist/development/components/IdentityState.js.map +1 -0
  13. package/dist/development/components/LogoutTrigger.cjs +12 -0
  14. package/dist/development/components/LogoutTrigger.cjs.map +1 -0
  15. package/dist/development/components/LogoutTrigger.js +12 -0
  16. package/dist/development/components/LogoutTrigger.js.map +1 -0
  17. package/dist/development/environment/IdentityEnvironmentExtension.cjs +13 -0
  18. package/dist/development/environment/IdentityEnvironmentExtension.cjs.map +1 -0
  19. package/dist/development/environment/IdentityEnvironmentExtension.js +13 -0
  20. package/dist/development/environment/IdentityEnvironmentExtension.js.map +1 -0
  21. package/dist/development/environment/ProjectEnvironmentExtension.cjs +13 -0
  22. package/dist/development/environment/ProjectEnvironmentExtension.cjs.map +1 -0
  23. package/dist/development/environment/ProjectEnvironmentExtension.js +13 -0
  24. package/dist/development/environment/ProjectEnvironmentExtension.js.map +1 -0
  25. package/dist/development/hooks/useFetchIdentity.cjs +51 -0
  26. package/dist/development/hooks/useFetchIdentity.cjs.map +1 -0
  27. package/dist/development/hooks/useFetchIdentity.js +51 -0
  28. package/dist/development/hooks/useFetchIdentity.js.map +1 -0
  29. package/dist/development/hooks/useLogout.cjs +10 -0
  30. package/dist/development/hooks/useLogout.cjs.map +1 -0
  31. package/dist/development/hooks/useLogout.js +10 -0
  32. package/dist/development/hooks/useLogout.js.map +1 -0
  33. package/dist/development/hooks/useProjectUserRoles.cjs +21 -0
  34. package/dist/development/hooks/useProjectUserRoles.cjs.map +1 -0
  35. package/dist/development/hooks/useProjectUserRoles.js +21 -0
  36. package/dist/development/hooks/useProjectUserRoles.js.map +1 -0
  37. package/dist/development/index.cjs +25 -0
  38. package/dist/development/index.cjs.map +1 -0
  39. package/dist/development/index.js +25 -0
  40. package/dist/development/index.js.map +1 -0
  41. package/dist/development/internal/contexts.cjs +13 -0
  42. package/dist/development/internal/contexts.cjs.map +1 -0
  43. package/dist/development/internal/contexts.js +13 -0
  44. package/dist/development/internal/contexts.js.map +1 -0
  45. package/dist/development/internal/hooks/useFetchMe.cjs +32 -0
  46. package/dist/development/internal/hooks/useFetchMe.cjs.map +1 -0
  47. package/dist/development/internal/hooks/useFetchMe.js +15 -0
  48. package/dist/development/internal/hooks/useFetchMe.js.map +1 -0
  49. package/dist/development/internal/hooks/useLogoutInternal.cjs +35 -0
  50. package/dist/development/internal/hooks/useLogoutInternal.cjs.map +1 -0
  51. package/dist/development/internal/hooks/useLogoutInternal.js +35 -0
  52. package/dist/development/internal/hooks/useLogoutInternal.js.map +1 -0
  53. package/dist/development/internal/hooks/useSignOut.cjs +30 -0
  54. package/dist/development/internal/hooks/useSignOut.cjs.map +1 -0
  55. package/dist/development/internal/hooks/useSignOut.js +13 -0
  56. package/dist/development/internal/hooks/useSignOut.js.map +1 -0
  57. package/dist/production/components/HasRole.cjs +24 -0
  58. package/dist/production/components/HasRole.cjs.map +1 -0
  59. package/dist/production/components/HasRole.js +24 -0
  60. package/dist/production/components/HasRole.js.map +1 -0
  61. package/dist/production/components/IdentityProvider.cjs +27 -0
  62. package/dist/production/components/IdentityProvider.cjs.map +1 -0
  63. package/dist/production/components/IdentityProvider.js +27 -0
  64. package/dist/production/components/IdentityProvider.js.map +1 -0
  65. package/dist/production/components/IdentityState.cjs +9 -0
  66. package/dist/production/components/IdentityState.cjs.map +1 -0
  67. package/dist/production/components/IdentityState.js +9 -0
  68. package/dist/production/components/IdentityState.js.map +1 -0
  69. package/dist/production/components/LogoutTrigger.cjs +12 -0
  70. package/dist/production/components/LogoutTrigger.cjs.map +1 -0
  71. package/dist/production/components/LogoutTrigger.js +12 -0
  72. package/dist/production/components/LogoutTrigger.js.map +1 -0
  73. package/dist/production/environment/IdentityEnvironmentExtension.cjs +13 -0
  74. package/dist/production/environment/IdentityEnvironmentExtension.cjs.map +1 -0
  75. package/dist/production/environment/IdentityEnvironmentExtension.js +13 -0
  76. package/dist/production/environment/IdentityEnvironmentExtension.js.map +1 -0
  77. package/dist/production/environment/ProjectEnvironmentExtension.cjs +13 -0
  78. package/dist/production/environment/ProjectEnvironmentExtension.cjs.map +1 -0
  79. package/dist/production/environment/ProjectEnvironmentExtension.js +13 -0
  80. package/dist/production/environment/ProjectEnvironmentExtension.js.map +1 -0
  81. package/dist/production/hooks/useFetchIdentity.cjs +51 -0
  82. package/dist/production/hooks/useFetchIdentity.cjs.map +1 -0
  83. package/dist/production/hooks/useFetchIdentity.js +51 -0
  84. package/dist/production/hooks/useFetchIdentity.js.map +1 -0
  85. package/dist/production/hooks/useLogout.cjs +10 -0
  86. package/dist/production/hooks/useLogout.cjs.map +1 -0
  87. package/dist/production/hooks/useLogout.js +10 -0
  88. package/dist/production/hooks/useLogout.js.map +1 -0
  89. package/dist/production/hooks/useProjectUserRoles.cjs +21 -0
  90. package/dist/production/hooks/useProjectUserRoles.cjs.map +1 -0
  91. package/dist/production/hooks/useProjectUserRoles.js +21 -0
  92. package/dist/production/hooks/useProjectUserRoles.js.map +1 -0
  93. package/dist/production/index.cjs +25 -0
  94. package/dist/production/index.cjs.map +1 -0
  95. package/dist/production/index.js +25 -0
  96. package/dist/production/index.js.map +1 -0
  97. package/dist/production/internal/contexts.cjs +13 -0
  98. package/dist/production/internal/contexts.cjs.map +1 -0
  99. package/dist/production/internal/contexts.js +13 -0
  100. package/dist/production/internal/contexts.js.map +1 -0
  101. package/dist/production/internal/hooks/useFetchMe.cjs +32 -0
  102. package/dist/production/internal/hooks/useFetchMe.cjs.map +1 -0
  103. package/dist/production/internal/hooks/useFetchMe.js +15 -0
  104. package/dist/production/internal/hooks/useFetchMe.js.map +1 -0
  105. package/dist/production/internal/hooks/useLogoutInternal.cjs +35 -0
  106. package/dist/production/internal/hooks/useLogoutInternal.cjs.map +1 -0
  107. package/dist/production/internal/hooks/useLogoutInternal.js +35 -0
  108. package/dist/production/internal/hooks/useLogoutInternal.js.map +1 -0
  109. package/dist/production/internal/hooks/useSignOut.cjs +30 -0
  110. package/dist/production/internal/hooks/useSignOut.cjs.map +1 -0
  111. package/dist/production/internal/hooks/useSignOut.js +13 -0
  112. package/dist/production/internal/hooks/useSignOut.js.map +1 -0
  113. package/dist/types/components/HasRole.d.ts +11 -0
  114. package/dist/types/components/HasRole.d.ts.map +1 -0
  115. package/dist/types/components/IdentityProvider.d.ts +6 -0
  116. package/dist/types/components/IdentityProvider.d.ts.map +1 -0
  117. package/dist/types/components/IdentityState.d.ts +8 -0
  118. package/dist/types/components/IdentityState.d.ts.map +1 -0
  119. package/dist/types/components/LogoutTrigger.d.ts +5 -0
  120. package/dist/types/components/LogoutTrigger.d.ts.map +1 -0
  121. package/dist/types/components/index.d.ts +5 -0
  122. package/dist/types/components/index.d.ts.map +1 -0
  123. package/dist/types/environment/IdentityEnvironmentExtension.d.ts +6 -0
  124. package/dist/types/environment/IdentityEnvironmentExtension.d.ts.map +1 -0
  125. package/dist/types/environment/ProjectEnvironmentExtension.d.ts +5 -0
  126. package/dist/types/environment/ProjectEnvironmentExtension.d.ts.map +1 -0
  127. package/dist/types/environment/index.d.ts +3 -0
  128. package/dist/types/environment/index.d.ts.map +1 -0
  129. package/dist/types/hooks/index.d.ts +5 -0
  130. package/dist/types/hooks/index.d.ts.map +1 -0
  131. package/dist/types/hooks/useFetchIdentity.d.ts +6 -0
  132. package/dist/types/hooks/useFetchIdentity.d.ts.map +1 -0
  133. package/dist/types/hooks/useLogout.d.ts +4 -0
  134. package/dist/types/hooks/useLogout.d.ts.map +1 -0
  135. package/dist/types/hooks/useProjectUserRoles.d.ts +3 -0
  136. package/dist/types/hooks/useProjectUserRoles.d.ts.map +1 -0
  137. package/dist/types/index.d.ts +5 -0
  138. package/dist/types/index.d.ts.map +1 -0
  139. package/dist/types/internal/contexts.d.ts +7 -0
  140. package/dist/types/internal/contexts.d.ts.map +1 -0
  141. package/dist/types/internal/hooks/useFetchMe.d.ts +94 -0
  142. package/dist/types/internal/hooks/useFetchMe.d.ts.map +1 -0
  143. package/dist/types/internal/hooks/useLogoutInternal.d.ts +4 -0
  144. package/dist/types/internal/hooks/useLogoutInternal.d.ts.map +1 -0
  145. package/dist/types/internal/hooks/useSignOut.d.ts +26 -0
  146. package/dist/types/internal/hooks/useSignOut.d.ts.map +1 -0
  147. package/dist/types/tsconfig.tsbuildinfo +1 -0
  148. package/dist/types/types/Identity.d.ts +19 -0
  149. package/dist/types/types/Identity.d.ts.map +1 -0
  150. package/dist/types/types/IdentityMethods.d.ts +5 -0
  151. package/dist/types/types/IdentityMethods.d.ts.map +1 -0
  152. package/dist/types/types/IdentityStateValue.d.ts +2 -0
  153. package/dist/types/types/IdentityStateValue.d.ts.map +1 -0
  154. package/dist/types/types/index.d.ts +4 -0
  155. package/dist/types/types/index.d.ts.map +1 -0
  156. package/package.json +58 -0
  157. package/src/components/HasRole.tsx +33 -0
  158. package/src/components/IdentityProvider.tsx +40 -0
  159. package/src/components/IdentityState.tsx +14 -0
  160. package/src/components/LogoutTrigger.tsx +10 -0
  161. package/src/components/index.ts +4 -0
  162. package/src/environment/IdentityEnvironmentExtension.ts +12 -0
  163. package/src/environment/ProjectEnvironmentExtension.tsx +10 -0
  164. package/src/environment/index.ts +2 -0
  165. package/src/hooks/index.ts +8 -0
  166. package/src/hooks/useFetchIdentity.ts +54 -0
  167. package/src/hooks/useLogout.ts +7 -0
  168. package/src/hooks/useProjectUserRoles.tsx +21 -0
  169. package/src/index.ts +4 -0
  170. package/src/internal/contexts.ts +8 -0
  171. package/src/internal/hooks/useFetchMe.ts +21 -0
  172. package/src/internal/hooks/useLogoutInternal.ts +35 -0
  173. package/src/internal/hooks/useSignOut.ts +13 -0
  174. package/src/tsconfig.json +12 -0
  175. package/src/types/Identity.ts +20 -0
  176. package/src/types/IdentityMethods.ts +4 -0
  177. package/src/types/IdentityStateValue.ts +6 -0
  178. package/src/types/index.ts +3 -0
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const TenantApi = require("@contember/react-client-tenant");
4
+ const react = require("react");
5
+ function _interopNamespaceDefault(e) {
6
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
7
+ if (e) {
8
+ for (const k in e) {
9
+ if (k !== "default") {
10
+ const d = Object.getOwnPropertyDescriptor(e, k);
11
+ Object.defineProperty(n, k, d.get ? d : {
12
+ enumerable: true,
13
+ get: () => e[k]
14
+ });
15
+ }
16
+ }
17
+ }
18
+ n.default = e;
19
+ return Object.freeze(n);
20
+ }
21
+ const TenantApi__namespace = /* @__PURE__ */ _interopNamespaceDefault(TenantApi);
22
+ const identityFragment = TenantApi__namespace.identity$$.person(TenantApi__namespace.person$$).projects(
23
+ TenantApi__namespace.identityProjectRelation$.project(TenantApi__namespace.project$$).memberships(TenantApi__namespace.membership$$.variables(TenantApi__namespace.variableEntry$$))
24
+ ).permissions(TenantApi__namespace.identityGlobalPermissions$$);
25
+ const useFetchMe = () => {
26
+ const executor = TenantApi__namespace.useTenantApi();
27
+ return react.useCallback(async () => {
28
+ return (await executor(TenantApi__namespace.query$.me(identityFragment))).me;
29
+ }, [executor]);
30
+ };
31
+ exports.useFetchMe = useFetchMe;
32
+ //# sourceMappingURL=useFetchMe.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFetchMe.cjs","sources":["../../../../src/internal/hooks/useFetchMe.ts"],"sourcesContent":["import * as TenantApi from '@contember/react-client-tenant'\nimport { useCallback } from 'react'\n\nconst identityFragment = TenantApi\n\t.identity$$\n\t.person(TenantApi.person$$)\n\t.projects(TenantApi\n\t\t.identityProjectRelation$\n\t\t.project(TenantApi.project$$)\n\t\t.memberships(TenantApi.membership$$.variables(TenantApi.variableEntry$$)),\n\t)\n\t.permissions(TenantApi.identityGlobalPermissions$$)\n\nexport type FetchedIdentity = TenantApi.ModelType<typeof identityFragment>\n\nexport const useFetchMe = () => {\n\tconst executor = TenantApi.useTenantApi()\n\treturn useCallback(async () => {\n\t\treturn (await executor(TenantApi.query$.me(identityFragment))).me\n\t}, [executor])\n}\n"],"names":["TenantApi","useCallback"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAGA,MAAM,mBAAmBA,qBACvB,WACA,OAAOA,qBAAU,QAAQ,EACzB;AAAA,EAASA,qBACR,yBACA,QAAQA,qBAAU,SAAS,EAC3B,YAAYA,qBAAU,aAAa,UAAUA,qBAAU,eAAe,CAAC;AACzE,EACC,YAAYA,qBAAU,2BAA2B;AAI5C,MAAM,aAAa,MAAM;AACzB,QAAA,WAAWA,qBAAU;AAC3B,SAAOC,kBAAY,YAAY;AAC9B,YAAQ,MAAM,SAASD,qBAAU,OAAO,GAAG,gBAAgB,CAAC,GAAG;AAAA,EAAA,GAC7D,CAAC,QAAQ,CAAC;AACd;;"}
@@ -0,0 +1,15 @@
1
+ import * as TenantApi from "@contember/react-client-tenant";
2
+ import { useCallback } from "react";
3
+ const identityFragment = TenantApi.identity$$.person(TenantApi.person$$).projects(
4
+ TenantApi.identityProjectRelation$.project(TenantApi.project$$).memberships(TenantApi.membership$$.variables(TenantApi.variableEntry$$))
5
+ ).permissions(TenantApi.identityGlobalPermissions$$);
6
+ const useFetchMe = () => {
7
+ const executor = TenantApi.useTenantApi();
8
+ return useCallback(async () => {
9
+ return (await executor(TenantApi.query$.me(identityFragment))).me;
10
+ }, [executor]);
11
+ };
12
+ export {
13
+ useFetchMe
14
+ };
15
+ //# sourceMappingURL=useFetchMe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFetchMe.js","sources":["../../../../src/internal/hooks/useFetchMe.ts"],"sourcesContent":["import * as TenantApi from '@contember/react-client-tenant'\nimport { useCallback } from 'react'\n\nconst identityFragment = TenantApi\n\t.identity$$\n\t.person(TenantApi.person$$)\n\t.projects(TenantApi\n\t\t.identityProjectRelation$\n\t\t.project(TenantApi.project$$)\n\t\t.memberships(TenantApi.membership$$.variables(TenantApi.variableEntry$$)),\n\t)\n\t.permissions(TenantApi.identityGlobalPermissions$$)\n\nexport type FetchedIdentity = TenantApi.ModelType<typeof identityFragment>\n\nexport const useFetchMe = () => {\n\tconst executor = TenantApi.useTenantApi()\n\treturn useCallback(async () => {\n\t\treturn (await executor(TenantApi.query$.me(identityFragment))).me\n\t}, [executor])\n}\n"],"names":[],"mappings":";;AAGA,MAAM,mBAAmB,UACvB,WACA,OAAO,UAAU,QAAQ,EACzB;AAAA,EAAS,UACR,yBACA,QAAQ,UAAU,SAAS,EAC3B,YAAY,UAAU,aAAa,UAAU,UAAU,eAAe,CAAC;AACzE,EACC,YAAY,UAAU,2BAA2B;AAI5C,MAAM,aAAa,MAAM;AACzB,QAAA,WAAW,UAAU;AAC3B,SAAO,YAAY,YAAY;AAC9B,YAAQ,MAAM,SAAS,UAAU,OAAO,GAAG,gBAAgB,CAAC,GAAG;AAAA,EAAA,GAC7D,CAAC,QAAQ,CAAC;AACd;"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const reactClient = require("@contember/react-client");
4
+ const react = require("react");
5
+ const useSignOut = require("./useSignOut.cjs");
6
+ const useLogoutInternal = (clearIdentity) => {
7
+ const tenantLogout = useSignOut.useSignOut();
8
+ const setSessionToken = reactClient.useSetSessionToken();
9
+ return react.useCallback(
10
+ async ({ noRedirect = false } = {}) => {
11
+ if (navigator.credentials && navigator.credentials.preventSilentAccess) {
12
+ try {
13
+ await navigator.credentials.preventSilentAccess();
14
+ } catch {
15
+ }
16
+ }
17
+ clearIdentity?.();
18
+ setSessionToken(void 0);
19
+ try {
20
+ const response = await tenantLogout();
21
+ if (!response?.ok) {
22
+ console.warn(response?.error);
23
+ }
24
+ } catch (e) {
25
+ console.warn(e);
26
+ }
27
+ if (!noRedirect) {
28
+ window.location.href = "/";
29
+ }
30
+ },
31
+ [clearIdentity, setSessionToken, tenantLogout]
32
+ );
33
+ };
34
+ exports.useLogoutInternal = useLogoutInternal;
35
+ //# sourceMappingURL=useLogoutInternal.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLogoutInternal.cjs","sources":["../../../../src/internal/hooks/useLogoutInternal.ts"],"sourcesContent":["import { useSetSessionToken } from '@contember/react-client'\nimport { useCallback } from 'react'\nimport { useSignOut } from './useSignOut'\n\nexport const useLogoutInternal = (clearIdentity?: () => void) => {\n\tconst tenantLogout = useSignOut()\n\tconst setSessionToken = useSetSessionToken()\n\n\treturn useCallback(\n\t\tasync ({ noRedirect = false }: { noRedirect?: boolean } = {}) => {\n\t\t\tif (navigator.credentials && navigator.credentials.preventSilentAccess) {\n\t\t\t\ttry {\n\t\t\t\t\tawait navigator.credentials.preventSilentAccess()\n\t\t\t\t} catch {\n\t\t\t\t\t// actually, not implemented in safari:\n\t\t\t\t\t// https://github.com/WebKit/WebKit/blob/414f4e45b0e82bbfcee783d08a9642be1afa8f72/Source/WebCore/Modules/credentialmanagement/CredentialsContainer.cpp#L132\n\t\t\t\t}\n\t\t\t}\n\t\t\tclearIdentity?.()\n\t\t\tsetSessionToken(undefined)\n\t\t\ttry {\n\t\t\t\tconst response = await tenantLogout()\n\t\t\t\tif (!response?.ok) {\n\t\t\t\t\tconsole.warn(response?.error)\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn(e)\n\t\t\t}\n\t\t\tif (!noRedirect) {\n\t\t\t\twindow.location.href = '/' // todo better redirect?\n\t\t\t}\n\t\t},\n\t\t[clearIdentity, setSessionToken, tenantLogout],\n\t)\n}\n"],"names":["useSignOut","useSetSessionToken","useCallback"],"mappings":";;;;;AAIa,MAAA,oBAAoB,CAAC,kBAA+B;AAChE,QAAM,eAAeA,WAAAA;AACrB,QAAM,kBAAkBC,YAAAA;AAEjB,SAAAC,MAAA;AAAA,IACN,OAAO,EAAE,aAAa,MAAM,IAA8B,OAAO;AAChE,UAAI,UAAU,eAAe,UAAU,YAAY,qBAAqB;AACnE,YAAA;AACG,gBAAA,UAAU,YAAY;QAAoB,QACzC;AAAA,QAGR;AAAA,MACD;AACgB;AAChB,sBAAgB,MAAS;AACrB,UAAA;AACG,cAAA,WAAW,MAAM;AACnB,YAAA,CAAC,UAAU,IAAI;AACV,kBAAA,KAAK,UAAU,KAAK;AAAA,QAC7B;AAAA,eACQ,GAAG;AACX,gBAAQ,KAAK,CAAC;AAAA,MACf;AACA,UAAI,CAAC,YAAY;AAChB,eAAO,SAAS,OAAO;AAAA,MACxB;AAAA,IACD;AAAA,IACA,CAAC,eAAe,iBAAiB,YAAY;AAAA,EAAA;AAE/C;;"}
@@ -0,0 +1,35 @@
1
+ import { useSetSessionToken } from "@contember/react-client";
2
+ import { useCallback } from "react";
3
+ import { useSignOut } from "./useSignOut.js";
4
+ const useLogoutInternal = (clearIdentity) => {
5
+ const tenantLogout = useSignOut();
6
+ const setSessionToken = useSetSessionToken();
7
+ return useCallback(
8
+ async ({ noRedirect = false } = {}) => {
9
+ if (navigator.credentials && navigator.credentials.preventSilentAccess) {
10
+ try {
11
+ await navigator.credentials.preventSilentAccess();
12
+ } catch {
13
+ }
14
+ }
15
+ clearIdentity?.();
16
+ setSessionToken(void 0);
17
+ try {
18
+ const response = await tenantLogout();
19
+ if (!response?.ok) {
20
+ console.warn(response?.error);
21
+ }
22
+ } catch (e) {
23
+ console.warn(e);
24
+ }
25
+ if (!noRedirect) {
26
+ window.location.href = "/";
27
+ }
28
+ },
29
+ [clearIdentity, setSessionToken, tenantLogout]
30
+ );
31
+ };
32
+ export {
33
+ useLogoutInternal
34
+ };
35
+ //# sourceMappingURL=useLogoutInternal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLogoutInternal.js","sources":["../../../../src/internal/hooks/useLogoutInternal.ts"],"sourcesContent":["import { useSetSessionToken } from '@contember/react-client'\nimport { useCallback } from 'react'\nimport { useSignOut } from './useSignOut'\n\nexport const useLogoutInternal = (clearIdentity?: () => void) => {\n\tconst tenantLogout = useSignOut()\n\tconst setSessionToken = useSetSessionToken()\n\n\treturn useCallback(\n\t\tasync ({ noRedirect = false }: { noRedirect?: boolean } = {}) => {\n\t\t\tif (navigator.credentials && navigator.credentials.preventSilentAccess) {\n\t\t\t\ttry {\n\t\t\t\t\tawait navigator.credentials.preventSilentAccess()\n\t\t\t\t} catch {\n\t\t\t\t\t// actually, not implemented in safari:\n\t\t\t\t\t// https://github.com/WebKit/WebKit/blob/414f4e45b0e82bbfcee783d08a9642be1afa8f72/Source/WebCore/Modules/credentialmanagement/CredentialsContainer.cpp#L132\n\t\t\t\t}\n\t\t\t}\n\t\t\tclearIdentity?.()\n\t\t\tsetSessionToken(undefined)\n\t\t\ttry {\n\t\t\t\tconst response = await tenantLogout()\n\t\t\t\tif (!response?.ok) {\n\t\t\t\t\tconsole.warn(response?.error)\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn(e)\n\t\t\t}\n\t\t\tif (!noRedirect) {\n\t\t\t\twindow.location.href = '/' // todo better redirect?\n\t\t\t}\n\t\t},\n\t\t[clearIdentity, setSessionToken, tenantLogout],\n\t)\n}\n"],"names":[],"mappings":";;;AAIa,MAAA,oBAAoB,CAAC,kBAA+B;AAChE,QAAM,eAAe;AACrB,QAAM,kBAAkB;AAEjB,SAAA;AAAA,IACN,OAAO,EAAE,aAAa,MAAM,IAA8B,OAAO;AAChE,UAAI,UAAU,eAAe,UAAU,YAAY,qBAAqB;AACnE,YAAA;AACG,gBAAA,UAAU,YAAY;QAAoB,QACzC;AAAA,QAGR;AAAA,MACD;AACgB;AAChB,sBAAgB,MAAS;AACrB,UAAA;AACG,cAAA,WAAW,MAAM;AACnB,YAAA,CAAC,UAAU,IAAI;AACV,kBAAA,KAAK,UAAU,KAAK;AAAA,QAC7B;AAAA,eACQ,GAAG;AACX,gBAAQ,KAAK,CAAC;AAAA,MACf;AACA,UAAI,CAAC,YAAY;AAChB,eAAO,SAAS,OAAO;AAAA,MACxB;AAAA,IACD;AAAA,IACA,CAAC,eAAe,iBAAiB,YAAY;AAAA,EAAA;AAE/C;"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const TenantApi = require("@contember/react-client-tenant");
4
+ const react = require("react");
5
+ function _interopNamespaceDefault(e) {
6
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
7
+ if (e) {
8
+ for (const k in e) {
9
+ if (k !== "default") {
10
+ const d = Object.getOwnPropertyDescriptor(e, k);
11
+ Object.defineProperty(n, k, d.get ? d : {
12
+ enumerable: true,
13
+ get: () => e[k]
14
+ });
15
+ }
16
+ }
17
+ }
18
+ n.default = e;
19
+ return Object.freeze(n);
20
+ }
21
+ const TenantApi__namespace = /* @__PURE__ */ _interopNamespaceDefault(TenantApi);
22
+ const signOutFragment = TenantApi__namespace.signOutResponse$$.error(TenantApi__namespace.signOutError$$);
23
+ const useSignOut = () => {
24
+ const api = TenantApi__namespace.useTenantApi();
25
+ return react.useCallback(async () => {
26
+ return (await api(TenantApi__namespace.mutation$.signOut(signOutFragment))).signOut;
27
+ }, [api]);
28
+ };
29
+ exports.useSignOut = useSignOut;
30
+ //# sourceMappingURL=useSignOut.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSignOut.cjs","sources":["../../../../src/internal/hooks/useSignOut.ts"],"sourcesContent":["import * as TenantApi from '@contember/react-client-tenant'\nimport { useCallback } from 'react'\n\nconst signOutFragment = TenantApi.signOutResponse$$.error(TenantApi.signOutError$$)\n\nexport type SignOutResult = TenantApi.ModelType<typeof signOutFragment>\n\nexport const useSignOut = () => {\n\tconst api = TenantApi.useTenantApi()\n\treturn useCallback(async () => {\n\t\treturn (await api(TenantApi.mutation$.signOut(signOutFragment))).signOut\n\t}, [api])\n}\n"],"names":["TenantApi","useCallback"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAGA,MAAM,kBAAkBA,qBAAU,kBAAkB,MAAMA,qBAAU,cAAc;AAI3E,MAAM,aAAa,MAAM;AACzB,QAAA,MAAMA,qBAAU;AACtB,SAAOC,kBAAY,YAAY;AAC9B,YAAQ,MAAM,IAAID,qBAAU,UAAU,QAAQ,eAAe,CAAC,GAAG;AAAA,EAAA,GAC/D,CAAC,GAAG,CAAC;AACT;;"}
@@ -0,0 +1,13 @@
1
+ import * as TenantApi from "@contember/react-client-tenant";
2
+ import { useCallback } from "react";
3
+ const signOutFragment = TenantApi.signOutResponse$$.error(TenantApi.signOutError$$);
4
+ const useSignOut = () => {
5
+ const api = TenantApi.useTenantApi();
6
+ return useCallback(async () => {
7
+ return (await api(TenantApi.mutation$.signOut(signOutFragment))).signOut;
8
+ }, [api]);
9
+ };
10
+ export {
11
+ useSignOut
12
+ };
13
+ //# sourceMappingURL=useSignOut.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSignOut.js","sources":["../../../../src/internal/hooks/useSignOut.ts"],"sourcesContent":["import * as TenantApi from '@contember/react-client-tenant'\nimport { useCallback } from 'react'\n\nconst signOutFragment = TenantApi.signOutResponse$$.error(TenantApi.signOutError$$)\n\nexport type SignOutResult = TenantApi.ModelType<typeof signOutFragment>\n\nexport const useSignOut = () => {\n\tconst api = TenantApi.useTenantApi()\n\treturn useCallback(async () => {\n\t\treturn (await api(TenantApi.mutation$.signOut(signOutFragment))).signOut\n\t}, [api])\n}\n"],"names":[],"mappings":";;AAGA,MAAM,kBAAkB,UAAU,kBAAkB,MAAM,UAAU,cAAc;AAI3E,MAAM,aAAa,MAAM;AACzB,QAAA,MAAM,UAAU;AACtB,SAAO,YAAY,YAAY;AAC9B,YAAQ,MAAM,IAAI,UAAU,UAAU,QAAQ,eAAe,CAAC,GAAG;AAAA,EAAA,GAC/D,CAAC,GAAG,CAAC;AACT;"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const reactBinding = require("@contember/react-binding");
5
+ const useProjectUserRoles = require("../hooks/useProjectUserRoles.cjs");
6
+ const IdentityEnvironmentExtension = require("../environment/IdentityEnvironmentExtension.cjs");
7
+ const ProjectEnvironmentExtension = require("../environment/ProjectEnvironmentExtension.cjs");
8
+ const HasRole = reactBinding.Component(({ children, role }) => {
9
+ const projectRoles = useProjectUserRoles.useProjectUserRoles();
10
+ return evaluateCondition(role, projectRoles) ? /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children }) : null;
11
+ }, ({ children, role }, env) => {
12
+ const identity = env.getExtension(IdentityEnvironmentExtension.identityEnvironmentExtension).identity;
13
+ const project = env.getExtension(ProjectEnvironmentExtension.projectEnvironmentExtension).slug;
14
+ const projectRoles = new Set(identity?.projects.find((it) => it.slug === project)?.roles ?? []);
15
+ return evaluateCondition(role, projectRoles) ? /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children }) : null;
16
+ });
17
+ const evaluateCondition = (condition, roles) => {
18
+ if (typeof condition === "string") {
19
+ return roles.has(condition);
20
+ }
21
+ return condition(roles);
22
+ };
23
+ exports.HasRole = HasRole;
24
+ //# sourceMappingURL=HasRole.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HasRole.cjs","sources":["../../../src/components/HasRole.tsx"],"sourcesContent":["import { Component } from '@contember/react-binding'\nimport { ReactNode } from 'react'\nimport { useProjectUserRoles } from '../hooks'\nimport { identityEnvironmentExtension, projectEnvironmentExtension } from '../environment'\n\nexport type RoleCondition = string | ((roles: Set<string>) => boolean)\n\nexport interface HasRoleProps {\n\tchildren?: ReactNode\n\trole: RoleCondition\n}\n\n/**\n * @group Logic Components\n */\nexport const HasRole = Component<HasRoleProps>(({ children, role }) => {\n\tconst projectRoles = useProjectUserRoles()\n\n\treturn evaluateCondition(role, projectRoles) ? <>{children}</> : null\n}, ({ children, role }, env) => {\n\tconst identity = env.getExtension(identityEnvironmentExtension).identity\n\tconst project = env.getExtension(projectEnvironmentExtension).slug\n\tconst projectRoles = new Set(identity?.projects.find(it => it.slug === project)?.roles ?? [])\n\n\treturn evaluateCondition(role, projectRoles) ? <>{children}</> : null\n})\n\nconst evaluateCondition = (condition: RoleCondition, roles: Set<string>) => {\n\tif (typeof condition === 'string') {\n\t\treturn roles.has(condition)\n\t}\n\treturn condition(roles)\n}\n"],"names":["Component","useProjectUserRoles","jsx","Fragment","identityEnvironmentExtension","projectEnvironmentExtension"],"mappings":";;;;;;;AAeO,MAAM,UAAUA,aAAAA,UAAwB,CAAC,EAAE,UAAU,WAAW;AACtE,QAAM,eAAeC,oBAAAA;AAErB,SAAO,kBAAkB,MAAM,YAAY,IAAIC,2BAAAA,IAAAC,WAAAA,UAAA,EAAG,UAAS,IAAM;AAClE,GAAG,CAAC,EAAE,UAAU,KAAA,GAAQ,QAAQ;AAC/B,QAAM,WAAW,IAAI,aAAaC,6BAA4B,4BAAA,EAAE;AAChE,QAAM,UAAU,IAAI,aAAaC,4BAA2B,2BAAA,EAAE;AAC9D,QAAM,eAAe,IAAI,IAAI,UAAU,SAAS,KAAK,CAAM,OAAA,GAAG,SAAS,OAAO,GAAG,SAAS,CAAE,CAAA;AAE5F,SAAO,kBAAkB,MAAM,YAAY,IAAIH,2BAAAA,IAAAC,WAAAA,UAAA,EAAG,UAAS,IAAM;AAClE,CAAC;AAED,MAAM,oBAAoB,CAAC,WAA0B,UAAuB;AACvE,MAAA,OAAO,cAAc,UAAU;AAC3B,WAAA,MAAM,IAAI,SAAS;AAAA,EAC3B;AACA,SAAO,UAAU,KAAK;AACvB;;"}
@@ -0,0 +1,24 @@
1
+ import { jsx, Fragment } from "react/jsx-runtime";
2
+ import { Component } from "@contember/react-binding";
3
+ import { useProjectUserRoles } from "../hooks/useProjectUserRoles.js";
4
+ import { identityEnvironmentExtension } from "../environment/IdentityEnvironmentExtension.js";
5
+ import { projectEnvironmentExtension } from "../environment/ProjectEnvironmentExtension.js";
6
+ const HasRole = Component(({ children, role }) => {
7
+ const projectRoles = useProjectUserRoles();
8
+ return evaluateCondition(role, projectRoles) ? /* @__PURE__ */ jsx(Fragment, { children }) : null;
9
+ }, ({ children, role }, env) => {
10
+ const identity = env.getExtension(identityEnvironmentExtension).identity;
11
+ const project = env.getExtension(projectEnvironmentExtension).slug;
12
+ const projectRoles = new Set(identity?.projects.find((it) => it.slug === project)?.roles ?? []);
13
+ return evaluateCondition(role, projectRoles) ? /* @__PURE__ */ jsx(Fragment, { children }) : null;
14
+ });
15
+ const evaluateCondition = (condition, roles) => {
16
+ if (typeof condition === "string") {
17
+ return roles.has(condition);
18
+ }
19
+ return condition(roles);
20
+ };
21
+ export {
22
+ HasRole
23
+ };
24
+ //# sourceMappingURL=HasRole.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HasRole.js","sources":["../../../src/components/HasRole.tsx"],"sourcesContent":["import { Component } from '@contember/react-binding'\nimport { ReactNode } from 'react'\nimport { useProjectUserRoles } from '../hooks'\nimport { identityEnvironmentExtension, projectEnvironmentExtension } from '../environment'\n\nexport type RoleCondition = string | ((roles: Set<string>) => boolean)\n\nexport interface HasRoleProps {\n\tchildren?: ReactNode\n\trole: RoleCondition\n}\n\n/**\n * @group Logic Components\n */\nexport const HasRole = Component<HasRoleProps>(({ children, role }) => {\n\tconst projectRoles = useProjectUserRoles()\n\n\treturn evaluateCondition(role, projectRoles) ? <>{children}</> : null\n}, ({ children, role }, env) => {\n\tconst identity = env.getExtension(identityEnvironmentExtension).identity\n\tconst project = env.getExtension(projectEnvironmentExtension).slug\n\tconst projectRoles = new Set(identity?.projects.find(it => it.slug === project)?.roles ?? [])\n\n\treturn evaluateCondition(role, projectRoles) ? <>{children}</> : null\n})\n\nconst evaluateCondition = (condition: RoleCondition, roles: Set<string>) => {\n\tif (typeof condition === 'string') {\n\t\treturn roles.has(condition)\n\t}\n\treturn condition(roles)\n}\n"],"names":[],"mappings":";;;;;AAeO,MAAM,UAAU,UAAwB,CAAC,EAAE,UAAU,WAAW;AACtE,QAAM,eAAe;AAErB,SAAO,kBAAkB,MAAM,YAAY,IAAI,oBAAA,UAAA,EAAG,UAAS,IAAM;AAClE,GAAG,CAAC,EAAE,UAAU,KAAA,GAAQ,QAAQ;AAC/B,QAAM,WAAW,IAAI,aAAa,4BAA4B,EAAE;AAChE,QAAM,UAAU,IAAI,aAAa,2BAA2B,EAAE;AAC9D,QAAM,eAAe,IAAI,IAAI,UAAU,SAAS,KAAK,CAAM,OAAA,GAAG,SAAS,OAAO,GAAG,SAAS,CAAE,CAAA;AAE5F,SAAO,kBAAkB,MAAM,YAAY,IAAI,oBAAA,UAAA,EAAG,UAAS,IAAM;AAClE,CAAC;AAED,MAAM,oBAAoB,CAAC,WAA0B,UAAuB;AACvE,MAAA,OAAO,cAAc,UAAU;AAC3B,WAAA,MAAM,IAAI,SAAS;AAAA,EAC3B;AACA,SAAO,UAAU,KAAK;AACvB;"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const reactClient = require("@contember/react-client");
5
+ const react = require("react");
6
+ const reactBinding = require("@contember/react-binding");
7
+ const contexts = require("../internal/contexts.cjs");
8
+ const IdentityEnvironmentExtension = require("../environment/IdentityEnvironmentExtension.cjs");
9
+ const useFetchIdentity = require("../hooks/useFetchIdentity.cjs");
10
+ const IdentityProvider = ({ children }) => {
11
+ const sessionToken = reactClient.useSessionToken();
12
+ const [{ identity, state }, methods] = useFetchIdentity.useFetchIdentity();
13
+ const { refreshIdentity, clearIdentity } = methods;
14
+ react.useEffect(
15
+ () => {
16
+ if (sessionToken !== void 0) {
17
+ refreshIdentity();
18
+ } else {
19
+ clearIdentity();
20
+ }
21
+ },
22
+ [sessionToken, refreshIdentity, clearIdentity]
23
+ );
24
+ return /* @__PURE__ */ jsxRuntime.jsx(contexts.IdentityStateContext.Provider, { value: state, children: /* @__PURE__ */ jsxRuntime.jsx(contexts.IdentityContext.Provider, { value: identity, children: /* @__PURE__ */ jsxRuntime.jsx(contexts.IdentityMethodsContext.Provider, { value: methods, children: /* @__PURE__ */ jsxRuntime.jsx(reactBinding.EnvironmentExtensionProvider, { extension: IdentityEnvironmentExtension.identityEnvironmentExtension, state: identity ?? null, children }) }) }) });
25
+ };
26
+ exports.IdentityProvider = IdentityProvider;
27
+ //# sourceMappingURL=IdentityProvider.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdentityProvider.cjs","sources":["../../../src/components/IdentityProvider.tsx"],"sourcesContent":["import { useSessionToken } from '@contember/react-client'\nimport { ReactNode, useEffect } from 'react'\nimport { EnvironmentExtensionProvider } from '@contember/react-binding'\nimport { useFetchIdentity } from '../hooks'\nimport { IdentityContext, IdentityMethodsContext, IdentityStateContext } from '../internal/contexts'\nimport { identityEnvironmentExtension } from '../environment/IdentityEnvironmentExtension'\n\n\nexport interface IdentityProviderProps {\n\tchildren: ReactNode\n}\n\nexport const IdentityProvider: React.FC<IdentityProviderProps> = ({ children }) => {\n\tconst sessionToken = useSessionToken()\n\tconst [{ identity, state }, methods] = useFetchIdentity()\n\n\tconst { refreshIdentity, clearIdentity } = methods\n\tuseEffect(\n\t\t() => {\n\t\t\tif (sessionToken !== undefined) {\n\t\t\t\trefreshIdentity()\n\t\t\t} else {\n\t\t\t\tclearIdentity()\n\t\t\t}\n\t\t},\n\t\t[sessionToken, refreshIdentity, clearIdentity],\n\t)\n\n\treturn (\n\t\t<IdentityStateContext.Provider value={state}>\n\t\t\t<IdentityContext.Provider value={identity}>\n\t\t\t\t<IdentityMethodsContext.Provider value={methods}>\n\t\t\t\t\t<EnvironmentExtensionProvider extension={identityEnvironmentExtension} state={identity ?? null}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</EnvironmentExtensionProvider>\n\t\t\t\t</IdentityMethodsContext.Provider>\n\t\t\t</IdentityContext.Provider>\n\t\t</IdentityStateContext.Provider>\n\t)\n}\n"],"names":["useSessionToken","useFetchIdentity","useEffect","jsx","IdentityStateContext","IdentityContext","IdentityMethodsContext","EnvironmentExtensionProvider","identityEnvironmentExtension"],"mappings":";;;;;;;;;AAYO,MAAM,mBAAoD,CAAC,EAAE,eAAe;AAClF,QAAM,eAAeA,YAAAA;AACrB,QAAM,CAAC,EAAE,UAAU,MAAS,GAAA,OAAO,IAAIC,iBAAAA;AAEjC,QAAA,EAAE,iBAAiB,cAAkB,IAAA;AAC3CC,QAAA;AAAA,IACC,MAAM;AACL,UAAI,iBAAiB,QAAW;AACf;MAAA,OACV;AACQ;MACf;AAAA,IACD;AAAA,IACA,CAAC,cAAc,iBAAiB,aAAa;AAAA,EAAA;AAG9C,SACEC,2BAAAA,IAAAC,SAAAA,qBAAqB,UAArB,EAA8B,OAAO,OACrC,UAACD,2BAAAA,IAAAE,SAAAA,gBAAgB,UAAhB,EAAyB,OAAO,UAChC,UAACF,2BAAA,IAAAG,gCAAuB,UAAvB,EAAgC,OAAO,SACvC,UAACH,2BAAA,IAAAI,aAAA,8BAAA,EAA6B,WAAWC,6BAAA,8BAA8B,OAAO,YAAY,MACxF,SAAA,CACF,EACD,CAAA,EAAA,CACD,EACD,CAAA;AAEF;;"}
@@ -0,0 +1,27 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useSessionToken } from "@contember/react-client";
3
+ import { useEffect } from "react";
4
+ import { EnvironmentExtensionProvider } from "@contember/react-binding";
5
+ import { IdentityStateContext, IdentityContext, IdentityMethodsContext } from "../internal/contexts.js";
6
+ import { identityEnvironmentExtension } from "../environment/IdentityEnvironmentExtension.js";
7
+ import { useFetchIdentity } from "../hooks/useFetchIdentity.js";
8
+ const IdentityProvider = ({ children }) => {
9
+ const sessionToken = useSessionToken();
10
+ const [{ identity, state }, methods] = useFetchIdentity();
11
+ const { refreshIdentity, clearIdentity } = methods;
12
+ useEffect(
13
+ () => {
14
+ if (sessionToken !== void 0) {
15
+ refreshIdentity();
16
+ } else {
17
+ clearIdentity();
18
+ }
19
+ },
20
+ [sessionToken, refreshIdentity, clearIdentity]
21
+ );
22
+ return /* @__PURE__ */ jsx(IdentityStateContext.Provider, { value: state, children: /* @__PURE__ */ jsx(IdentityContext.Provider, { value: identity, children: /* @__PURE__ */ jsx(IdentityMethodsContext.Provider, { value: methods, children: /* @__PURE__ */ jsx(EnvironmentExtensionProvider, { extension: identityEnvironmentExtension, state: identity ?? null, children }) }) }) });
23
+ };
24
+ export {
25
+ IdentityProvider
26
+ };
27
+ //# sourceMappingURL=IdentityProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdentityProvider.js","sources":["../../../src/components/IdentityProvider.tsx"],"sourcesContent":["import { useSessionToken } from '@contember/react-client'\nimport { ReactNode, useEffect } from 'react'\nimport { EnvironmentExtensionProvider } from '@contember/react-binding'\nimport { useFetchIdentity } from '../hooks'\nimport { IdentityContext, IdentityMethodsContext, IdentityStateContext } from '../internal/contexts'\nimport { identityEnvironmentExtension } from '../environment/IdentityEnvironmentExtension'\n\n\nexport interface IdentityProviderProps {\n\tchildren: ReactNode\n}\n\nexport const IdentityProvider: React.FC<IdentityProviderProps> = ({ children }) => {\n\tconst sessionToken = useSessionToken()\n\tconst [{ identity, state }, methods] = useFetchIdentity()\n\n\tconst { refreshIdentity, clearIdentity } = methods\n\tuseEffect(\n\t\t() => {\n\t\t\tif (sessionToken !== undefined) {\n\t\t\t\trefreshIdentity()\n\t\t\t} else {\n\t\t\t\tclearIdentity()\n\t\t\t}\n\t\t},\n\t\t[sessionToken, refreshIdentity, clearIdentity],\n\t)\n\n\treturn (\n\t\t<IdentityStateContext.Provider value={state}>\n\t\t\t<IdentityContext.Provider value={identity}>\n\t\t\t\t<IdentityMethodsContext.Provider value={methods}>\n\t\t\t\t\t<EnvironmentExtensionProvider extension={identityEnvironmentExtension} state={identity ?? null}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</EnvironmentExtensionProvider>\n\t\t\t\t</IdentityMethodsContext.Provider>\n\t\t\t</IdentityContext.Provider>\n\t\t</IdentityStateContext.Provider>\n\t)\n}\n"],"names":[],"mappings":";;;;;;;AAYO,MAAM,mBAAoD,CAAC,EAAE,eAAe;AAClF,QAAM,eAAe;AACrB,QAAM,CAAC,EAAE,UAAU,MAAS,GAAA,OAAO,IAAI;AAEjC,QAAA,EAAE,iBAAiB,cAAkB,IAAA;AAC3C;AAAA,IACC,MAAM;AACL,UAAI,iBAAiB,QAAW;AACf;MAAA,OACV;AACQ;MACf;AAAA,IACD;AAAA,IACA,CAAC,cAAc,iBAAiB,aAAa;AAAA,EAAA;AAG9C,SACE,oBAAA,qBAAqB,UAArB,EAA8B,OAAO,OACrC,UAAC,oBAAA,gBAAgB,UAAhB,EAAyB,OAAO,UAChC,UAAC,oBAAA,uBAAuB,UAAvB,EAAgC,OAAO,SACvC,UAAC,oBAAA,8BAAA,EAA6B,WAAW,8BAA8B,OAAO,YAAY,MACxF,SAAA,CACF,EACD,CAAA,EAAA,CACD,EACD,CAAA;AAEF;"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const contexts = require("../internal/contexts.cjs");
4
+ const IdentityState = ({ state, children }) => {
5
+ const currentState = contexts.useIdentityState();
6
+ return state === currentState || Array.isArray(state) && state.includes(currentState) ? children : null;
7
+ };
8
+ exports.IdentityState = IdentityState;
9
+ //# sourceMappingURL=IdentityState.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdentityState.cjs","sources":["../../../src/components/IdentityState.tsx"],"sourcesContent":["import { ReactNode } from 'react'\nimport { IdentityStateValue } from '../types'\nimport { useIdentityState } from '../internal/contexts'\n\nexport interface IdentityStateProps {\n\tstate: IdentityStateValue | IdentityStateValue[]\n\tchildren: ReactNode\n}\n\nexport const IdentityState = ({ state, children }: IdentityStateProps) => {\n\tconst currentState = useIdentityState()\n\n\treturn state === currentState || (Array.isArray(state) && state.includes(currentState)) ? children : null\n}\n"],"names":["useIdentityState"],"mappings":";;;AASO,MAAM,gBAAgB,CAAC,EAAE,OAAO,eAAmC;AACzE,QAAM,eAAeA,SAAAA;AAEd,SAAA,UAAU,gBAAiB,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,YAAY,IAAK,WAAW;AACtG;;"}
@@ -0,0 +1,9 @@
1
+ import { useIdentityState } from "../internal/contexts.js";
2
+ const IdentityState = ({ state, children }) => {
3
+ const currentState = useIdentityState();
4
+ return state === currentState || Array.isArray(state) && state.includes(currentState) ? children : null;
5
+ };
6
+ export {
7
+ IdentityState
8
+ };
9
+ //# sourceMappingURL=IdentityState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdentityState.js","sources":["../../../src/components/IdentityState.tsx"],"sourcesContent":["import { ReactNode } from 'react'\nimport { IdentityStateValue } from '../types'\nimport { useIdentityState } from '../internal/contexts'\n\nexport interface IdentityStateProps {\n\tstate: IdentityStateValue | IdentityStateValue[]\n\tchildren: ReactNode\n}\n\nexport const IdentityState = ({ state, children }: IdentityStateProps) => {\n\tconst currentState = useIdentityState()\n\n\treturn state === currentState || (Array.isArray(state) && state.includes(currentState)) ? children : null\n}\n"],"names":[],"mappings":";AASO,MAAM,gBAAgB,CAAC,EAAE,OAAO,eAAmC;AACzE,QAAM,eAAe;AAEd,SAAA,UAAU,gBAAiB,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,YAAY,IAAK,WAAW;AACtG;"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const react = require("react");
5
+ const reactSlot = require("@radix-ui/react-slot");
6
+ const useLogout = require("../hooks/useLogout.cjs");
7
+ const LogoutTrigger = ({ children }) => {
8
+ const logout = useLogout.useLogout();
9
+ return /* @__PURE__ */ jsxRuntime.jsx(reactSlot.Slot, { onClick: react.useCallback(() => logout(), [logout]), children });
10
+ };
11
+ exports.LogoutTrigger = LogoutTrigger;
12
+ //# sourceMappingURL=LogoutTrigger.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogoutTrigger.cjs","sources":["../../../src/components/LogoutTrigger.tsx"],"sourcesContent":["import { ReactNode, useCallback } from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { useLogout } from '../hooks'\n\nexport const LogoutTrigger = ({ children }: {\n\tchildren: ReactNode\n}) => {\n\tconst logout = useLogout()\n\treturn <Slot onClick={useCallback(() => logout(), [logout])}>{children}</Slot>\n}\n"],"names":["useLogout","jsx","Slot","useCallback"],"mappings":";;;;;;AAIO,MAAM,gBAAgB,CAAC,EAAE,eAE1B;AACL,QAAM,SAASA,UAAAA;AACR,SAAAC,+BAACC,UAAAA,MAAK,EAAA,SAASC,MAAAA,YAAY,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,GAAI,SAAS,CAAA;AACxE;;"}
@@ -0,0 +1,12 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useCallback } from "react";
3
+ import { Slot } from "@radix-ui/react-slot";
4
+ import { useLogout } from "../hooks/useLogout.js";
5
+ const LogoutTrigger = ({ children }) => {
6
+ const logout = useLogout();
7
+ return /* @__PURE__ */ jsx(Slot, { onClick: useCallback(() => logout(), [logout]), children });
8
+ };
9
+ export {
10
+ LogoutTrigger
11
+ };
12
+ //# sourceMappingURL=LogoutTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogoutTrigger.js","sources":["../../../src/components/LogoutTrigger.tsx"],"sourcesContent":["import { ReactNode, useCallback } from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { useLogout } from '../hooks'\n\nexport const LogoutTrigger = ({ children }: {\n\tchildren: ReactNode\n}) => {\n\tconst logout = useLogout()\n\treturn <Slot onClick={useCallback(() => logout(), [logout])}>{children}</Slot>\n}\n"],"names":[],"mappings":";;;;AAIO,MAAM,gBAAgB,CAAC,EAAE,eAE1B;AACL,QAAM,SAAS;AACR,SAAA,oBAAC,MAAK,EAAA,SAAS,YAAY,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,GAAI,SAAS,CAAA;AACxE;"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const reactBinding = require("@contember/react-binding");
4
+ const identityEnvironmentExtension = reactBinding.Environment.createExtension((state) => {
5
+ if (state === void 0) {
6
+ throw new reactBinding.BindingError("Environment does not contain identity state.");
7
+ }
8
+ return {
9
+ identity: state ?? void 0
10
+ };
11
+ });
12
+ exports.identityEnvironmentExtension = identityEnvironmentExtension;
13
+ //# sourceMappingURL=IdentityEnvironmentExtension.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdentityEnvironmentExtension.cjs","sources":["../../../src/environment/IdentityEnvironmentExtension.ts"],"sourcesContent":["import { BindingError, Environment } from '@contember/react-binding'\nimport { Identity } from '../types'\n\nexport const identityEnvironmentExtension = Environment.createExtension((state: Identity | null | undefined) => {\n\tif (state === undefined) {\n\t\tthrow new BindingError('Environment does not contain identity state.')\n\t}\n\n\treturn {\n\t\tidentity: state ?? undefined,\n\t}\n})\n"],"names":["Environment","BindingError"],"mappings":";;;AAGO,MAAM,+BAA+BA,aAAA,YAAY,gBAAgB,CAAC,UAAuC;AAC/G,MAAI,UAAU,QAAW;AAClB,UAAA,IAAIC,aAAAA,aAAa,8CAA8C;AAAA,EACtE;AAEO,SAAA;AAAA,IACN,UAAU,SAAS;AAAA,EAAA;AAErB,CAAC;;"}
@@ -0,0 +1,13 @@
1
+ import { Environment, BindingError } from "@contember/react-binding";
2
+ const identityEnvironmentExtension = Environment.createExtension((state) => {
3
+ if (state === void 0) {
4
+ throw new BindingError("Environment does not contain identity state.");
5
+ }
6
+ return {
7
+ identity: state ?? void 0
8
+ };
9
+ });
10
+ export {
11
+ identityEnvironmentExtension
12
+ };
13
+ //# sourceMappingURL=IdentityEnvironmentExtension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdentityEnvironmentExtension.js","sources":["../../../src/environment/IdentityEnvironmentExtension.ts"],"sourcesContent":["import { BindingError, Environment } from '@contember/react-binding'\nimport { Identity } from '../types'\n\nexport const identityEnvironmentExtension = Environment.createExtension((state: Identity | null | undefined) => {\n\tif (state === undefined) {\n\t\tthrow new BindingError('Environment does not contain identity state.')\n\t}\n\n\treturn {\n\t\tidentity: state ?? undefined,\n\t}\n})\n"],"names":[],"mappings":";AAGO,MAAM,+BAA+B,YAAY,gBAAgB,CAAC,UAAuC;AAC/G,MAAI,UAAU,QAAW;AAClB,UAAA,IAAI,aAAa,8CAA8C;AAAA,EACtE;AAEO,SAAA;AAAA,IACN,UAAU,SAAS;AAAA,EAAA;AAErB,CAAC;"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const reactBinding = require("@contember/react-binding");
4
+ const projectEnvironmentExtension = reactBinding.Environment.createExtension((slug) => {
5
+ if (slug === void 0) {
6
+ throw new reactBinding.BindingError("Environment does not contain project slug state.");
7
+ }
8
+ return {
9
+ slug: slug ?? void 0
10
+ };
11
+ });
12
+ exports.projectEnvironmentExtension = projectEnvironmentExtension;
13
+ //# sourceMappingURL=ProjectEnvironmentExtension.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectEnvironmentExtension.cjs","sources":["../../../src/environment/ProjectEnvironmentExtension.tsx"],"sourcesContent":["import { BindingError, Environment } from '@contember/react-binding'\n\nexport const projectEnvironmentExtension = Environment.createExtension((slug: string | null | undefined) => {\n\tif (slug === undefined) {\n\t\tthrow new BindingError('Environment does not contain project slug state.')\n\t}\n\treturn {\n\t\tslug: slug ?? undefined,\n\t}\n})\n"],"names":["Environment","BindingError"],"mappings":";;;AAEO,MAAM,8BAA8BA,aAAA,YAAY,gBAAgB,CAAC,SAAoC;AAC3G,MAAI,SAAS,QAAW;AACjB,UAAA,IAAIC,aAAAA,aAAa,kDAAkD;AAAA,EAC1E;AACO,SAAA;AAAA,IACN,MAAM,QAAQ;AAAA,EAAA;AAEhB,CAAC;;"}
@@ -0,0 +1,13 @@
1
+ import { Environment, BindingError } from "@contember/react-binding";
2
+ const projectEnvironmentExtension = Environment.createExtension((slug) => {
3
+ if (slug === void 0) {
4
+ throw new BindingError("Environment does not contain project slug state.");
5
+ }
6
+ return {
7
+ slug: slug ?? void 0
8
+ };
9
+ });
10
+ export {
11
+ projectEnvironmentExtension
12
+ };
13
+ //# sourceMappingURL=ProjectEnvironmentExtension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectEnvironmentExtension.js","sources":["../../../src/environment/ProjectEnvironmentExtension.tsx"],"sourcesContent":["import { BindingError, Environment } from '@contember/react-binding'\n\nexport const projectEnvironmentExtension = Environment.createExtension((slug: string | null | undefined) => {\n\tif (slug === undefined) {\n\t\tthrow new BindingError('Environment does not contain project slug state.')\n\t}\n\treturn {\n\t\tslug: slug ?? undefined,\n\t}\n})\n"],"names":[],"mappings":";AAEO,MAAM,8BAA8B,YAAY,gBAAgB,CAAC,SAAoC;AAC3G,MAAI,SAAS,QAAW;AACjB,UAAA,IAAI,aAAa,kDAAkD;AAAA,EAC1E;AACO,SAAA;AAAA,IACN,MAAM,QAAQ;AAAA,EAAA;AAEhB,CAAC;"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const react = require("react");
4
+ const reactClient = require("@contember/react-client");
5
+ const useFetchMe = require("../internal/hooks/useFetchMe.cjs");
6
+ const useLogoutInternal = require("../internal/hooks/useLogoutInternal.cjs");
7
+ const useFetchIdentity = () => {
8
+ const sessionToken = reactClient.useSessionToken();
9
+ const fetchMe = useFetchMe.useFetchMe();
10
+ const [identityState, setIdentityState] = react.useState(sessionToken ? "loading" : "none");
11
+ const [identity, setIdentity] = react.useState();
12
+ const clearIdentity = react.useCallback(() => setIdentityState("cleared"), []);
13
+ const logout = useLogoutInternal.useLogoutInternal(clearIdentity);
14
+ const fetch = react.useCallback(async () => {
15
+ setIdentityState("loading");
16
+ try {
17
+ const response = await fetchMe();
18
+ const person = response.person;
19
+ const projects = response.projects;
20
+ const permissions = response.permissions ?? { canCreateProject: false };
21
+ setIdentityState("success");
22
+ setIdentity({
23
+ id: response.id,
24
+ person: person ?? void 0,
25
+ projects: projects.map((it) => ({
26
+ name: it.project.name,
27
+ slug: it.project.slug,
28
+ roles: it.memberships.map((it2) => it2.role)
29
+ })),
30
+ permissions
31
+ });
32
+ } catch (e) {
33
+ console.error(e);
34
+ if (typeof e === "object" && e !== null && "status" in e && e.status === 401) {
35
+ logout({ noRedirect: true });
36
+ setIdentityState("cleared");
37
+ } else {
38
+ setIdentityState("failed");
39
+ }
40
+ }
41
+ }, [fetchMe, logout]);
42
+ return [
43
+ { state: identityState, identity },
44
+ react.useMemo(() => ({
45
+ clearIdentity,
46
+ refreshIdentity: fetch
47
+ }), [clearIdentity, fetch])
48
+ ];
49
+ };
50
+ exports.useFetchIdentity = useFetchIdentity;
51
+ //# sourceMappingURL=useFetchIdentity.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFetchIdentity.cjs","sources":["../../../src/hooks/useFetchIdentity.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react'\nimport { Identity, IdentityMethods, IdentityStateValue } from '../types'\nimport { useSessionToken } from '@contember/react-client'\nimport { useFetchMe } from '../internal/hooks/useFetchMe'\nimport { useLogoutInternal } from '../internal/hooks/useLogoutInternal'\n\nexport const useFetchIdentity = (): [{ state: IdentityStateValue, identity: Identity | undefined }, IdentityMethods] => {\n\tconst sessionToken = useSessionToken()\n\tconst fetchMe = useFetchMe()\n\n\tconst [identityState, setIdentityState] = useState<IdentityStateValue>(sessionToken ? 'loading' : 'none')\n\tconst [identity, setIdentity] = useState<Identity | undefined>()\n\n\tconst clearIdentity = useCallback(() => setIdentityState('cleared'), [])\n\tconst logout = useLogoutInternal(clearIdentity)\n\n\tconst fetch = useCallback(async () => {\n\t\tsetIdentityState('loading')\n\t\ttry {\n\t\t\tconst response = await fetchMe()\n\t\t\tconst person = response.person\n\t\t\tconst projects = response.projects\n\t\t\tconst permissions = response.permissions ?? { canCreateProject: false }\n\n\t\t\tsetIdentityState('success')\n\t\t\tsetIdentity({\n\t\t\t\tid: response.id,\n\t\t\t\tperson: person ?? undefined,\n\t\t\t\tprojects: projects.map(it => ({\n\t\t\t\t\tname: it.project.name,\n\t\t\t\t\tslug: it.project.slug,\n\t\t\t\t\troles: it.memberships.map(it => it.role),\n\t\t\t\t})),\n\t\t\t\tpermissions,\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t\tif (typeof e === 'object' && e !== null && 'status' in e && (e as { status?: unknown }).status === 401) {\n\t\t\t\tlogout({ noRedirect: true })\n\t\t\t\tsetIdentityState('cleared')\n\t\t\t} else {\n\t\t\t\tsetIdentityState('failed')\n\t\t\t}\n\t\t}\n\t}, [fetchMe, logout])\n\n\treturn [\n\t\t{ state: identityState, identity },\n\t\tuseMemo((): IdentityMethods => ({\n\t\t\tclearIdentity,\n\t\t\trefreshIdentity: fetch,\n\t\t}), [clearIdentity, fetch]),\n\t]\n}\n"],"names":["useSessionToken","useFetchMe","useState","useCallback","useLogoutInternal","it","useMemo"],"mappings":";;;;;;AAMO,MAAM,mBAAmB,MAAwF;AACvH,QAAM,eAAeA,YAAAA;AACrB,QAAM,UAAUC,WAAAA;AAEhB,QAAM,CAAC,eAAe,gBAAgB,IAAIC,MAA6B,SAAA,eAAe,YAAY,MAAM;AACxG,QAAM,CAAC,UAAU,WAAW,IAAIA,MAA+B,SAAA;AAE/D,QAAM,gBAAgBC,MAAAA,YAAY,MAAM,iBAAiB,SAAS,GAAG,CAAA,CAAE;AACjE,QAAA,SAASC,oCAAkB,aAAa;AAExC,QAAA,QAAQD,MAAAA,YAAY,YAAY;AACrC,qBAAiB,SAAS;AACtB,QAAA;AACG,YAAA,WAAW,MAAM;AACvB,YAAM,SAAS,SAAS;AACxB,YAAM,WAAW,SAAS;AAC1B,YAAM,cAAc,SAAS,eAAe,EAAE,kBAAkB,MAAM;AAEtE,uBAAiB,SAAS;AACd,kBAAA;AAAA,QACX,IAAI,SAAS;AAAA,QACb,QAAQ,UAAU;AAAA,QAClB,UAAU,SAAS,IAAI,CAAO,QAAA;AAAA,UAC7B,MAAM,GAAG,QAAQ;AAAA,UACjB,MAAM,GAAG,QAAQ;AAAA,UACjB,OAAO,GAAG,YAAY,IAAI,CAAAE,QAAMA,IAAG,IAAI;AAAA,QAAA,EACtC;AAAA,QACF;AAAA,MAAA,CACA;AAAA,aACO,GAAG;AACX,cAAQ,MAAM,CAAC;AACX,UAAA,OAAO,MAAM,YAAY,MAAM,QAAQ,YAAY,KAAM,EAA2B,WAAW,KAAK;AAChG,eAAA,EAAE,YAAY,KAAA,CAAM;AAC3B,yBAAiB,SAAS;AAAA,MAAA,OACpB;AACN,yBAAiB,QAAQ;AAAA,MAC1B;AAAA,IACD;AAAA,EAAA,GACE,CAAC,SAAS,MAAM,CAAC;AAEb,SAAA;AAAA,IACN,EAAE,OAAO,eAAe,SAAS;AAAA,IACjCC,MAAAA,QAAQ,OAAwB;AAAA,MAC/B;AAAA,MACA,iBAAiB;AAAA,IAAA,IACd,CAAC,eAAe,KAAK,CAAC;AAAA,EAAA;AAE5B;;"}
@@ -0,0 +1,51 @@
1
+ import { useState, useCallback, useMemo } from "react";
2
+ import { useSessionToken } from "@contember/react-client";
3
+ import { useFetchMe } from "../internal/hooks/useFetchMe.js";
4
+ import { useLogoutInternal } from "../internal/hooks/useLogoutInternal.js";
5
+ const useFetchIdentity = () => {
6
+ const sessionToken = useSessionToken();
7
+ const fetchMe = useFetchMe();
8
+ const [identityState, setIdentityState] = useState(sessionToken ? "loading" : "none");
9
+ const [identity, setIdentity] = useState();
10
+ const clearIdentity = useCallback(() => setIdentityState("cleared"), []);
11
+ const logout = useLogoutInternal(clearIdentity);
12
+ const fetch = useCallback(async () => {
13
+ setIdentityState("loading");
14
+ try {
15
+ const response = await fetchMe();
16
+ const person = response.person;
17
+ const projects = response.projects;
18
+ const permissions = response.permissions ?? { canCreateProject: false };
19
+ setIdentityState("success");
20
+ setIdentity({
21
+ id: response.id,
22
+ person: person ?? void 0,
23
+ projects: projects.map((it) => ({
24
+ name: it.project.name,
25
+ slug: it.project.slug,
26
+ roles: it.memberships.map((it2) => it2.role)
27
+ })),
28
+ permissions
29
+ });
30
+ } catch (e) {
31
+ console.error(e);
32
+ if (typeof e === "object" && e !== null && "status" in e && e.status === 401) {
33
+ logout({ noRedirect: true });
34
+ setIdentityState("cleared");
35
+ } else {
36
+ setIdentityState("failed");
37
+ }
38
+ }
39
+ }, [fetchMe, logout]);
40
+ return [
41
+ { state: identityState, identity },
42
+ useMemo(() => ({
43
+ clearIdentity,
44
+ refreshIdentity: fetch
45
+ }), [clearIdentity, fetch])
46
+ ];
47
+ };
48
+ export {
49
+ useFetchIdentity
50
+ };
51
+ //# sourceMappingURL=useFetchIdentity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFetchIdentity.js","sources":["../../../src/hooks/useFetchIdentity.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react'\nimport { Identity, IdentityMethods, IdentityStateValue } from '../types'\nimport { useSessionToken } from '@contember/react-client'\nimport { useFetchMe } from '../internal/hooks/useFetchMe'\nimport { useLogoutInternal } from '../internal/hooks/useLogoutInternal'\n\nexport const useFetchIdentity = (): [{ state: IdentityStateValue, identity: Identity | undefined }, IdentityMethods] => {\n\tconst sessionToken = useSessionToken()\n\tconst fetchMe = useFetchMe()\n\n\tconst [identityState, setIdentityState] = useState<IdentityStateValue>(sessionToken ? 'loading' : 'none')\n\tconst [identity, setIdentity] = useState<Identity | undefined>()\n\n\tconst clearIdentity = useCallback(() => setIdentityState('cleared'), [])\n\tconst logout = useLogoutInternal(clearIdentity)\n\n\tconst fetch = useCallback(async () => {\n\t\tsetIdentityState('loading')\n\t\ttry {\n\t\t\tconst response = await fetchMe()\n\t\t\tconst person = response.person\n\t\t\tconst projects = response.projects\n\t\t\tconst permissions = response.permissions ?? { canCreateProject: false }\n\n\t\t\tsetIdentityState('success')\n\t\t\tsetIdentity({\n\t\t\t\tid: response.id,\n\t\t\t\tperson: person ?? undefined,\n\t\t\t\tprojects: projects.map(it => ({\n\t\t\t\t\tname: it.project.name,\n\t\t\t\t\tslug: it.project.slug,\n\t\t\t\t\troles: it.memberships.map(it => it.role),\n\t\t\t\t})),\n\t\t\t\tpermissions,\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t\tif (typeof e === 'object' && e !== null && 'status' in e && (e as { status?: unknown }).status === 401) {\n\t\t\t\tlogout({ noRedirect: true })\n\t\t\t\tsetIdentityState('cleared')\n\t\t\t} else {\n\t\t\t\tsetIdentityState('failed')\n\t\t\t}\n\t\t}\n\t}, [fetchMe, logout])\n\n\treturn [\n\t\t{ state: identityState, identity },\n\t\tuseMemo((): IdentityMethods => ({\n\t\t\tclearIdentity,\n\t\t\trefreshIdentity: fetch,\n\t\t}), [clearIdentity, fetch]),\n\t]\n}\n"],"names":["it"],"mappings":";;;;AAMO,MAAM,mBAAmB,MAAwF;AACvH,QAAM,eAAe;AACrB,QAAM,UAAU;AAEhB,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAA6B,eAAe,YAAY,MAAM;AACxG,QAAM,CAAC,UAAU,WAAW,IAAI,SAA+B;AAE/D,QAAM,gBAAgB,YAAY,MAAM,iBAAiB,SAAS,GAAG,CAAA,CAAE;AACjE,QAAA,SAAS,kBAAkB,aAAa;AAExC,QAAA,QAAQ,YAAY,YAAY;AACrC,qBAAiB,SAAS;AACtB,QAAA;AACG,YAAA,WAAW,MAAM;AACvB,YAAM,SAAS,SAAS;AACxB,YAAM,WAAW,SAAS;AAC1B,YAAM,cAAc,SAAS,eAAe,EAAE,kBAAkB,MAAM;AAEtE,uBAAiB,SAAS;AACd,kBAAA;AAAA,QACX,IAAI,SAAS;AAAA,QACb,QAAQ,UAAU;AAAA,QAClB,UAAU,SAAS,IAAI,CAAO,QAAA;AAAA,UAC7B,MAAM,GAAG,QAAQ;AAAA,UACjB,MAAM,GAAG,QAAQ;AAAA,UACjB,OAAO,GAAG,YAAY,IAAI,CAAAA,QAAMA,IAAG,IAAI;AAAA,QAAA,EACtC;AAAA,QACF;AAAA,MAAA,CACA;AAAA,aACO,GAAG;AACX,cAAQ,MAAM,CAAC;AACX,UAAA,OAAO,MAAM,YAAY,MAAM,QAAQ,YAAY,KAAM,EAA2B,WAAW,KAAK;AAChG,eAAA,EAAE,YAAY,KAAA,CAAM;AAC3B,yBAAiB,SAAS;AAAA,MAAA,OACpB;AACN,yBAAiB,QAAQ;AAAA,MAC1B;AAAA,IACD;AAAA,EAAA,GACE,CAAC,SAAS,MAAM,CAAC;AAEb,SAAA;AAAA,IACN,EAAE,OAAO,eAAe,SAAS;AAAA,IACjC,QAAQ,OAAwB;AAAA,MAC/B;AAAA,MACA,iBAAiB;AAAA,IAAA,IACd,CAAC,eAAe,KAAK,CAAC;AAAA,EAAA;AAE5B;"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const contexts = require("../internal/contexts.cjs");
4
+ const useLogoutInternal = require("../internal/hooks/useLogoutInternal.cjs");
5
+ const useLogout = () => {
6
+ const { clearIdentity } = contexts.useIdentityMethods();
7
+ return useLogoutInternal.useLogoutInternal(clearIdentity);
8
+ };
9
+ exports.useLogout = useLogout;
10
+ //# sourceMappingURL=useLogout.cjs.map