@contember/react-identity 1.3.0-alpha.15 → 1.3.0-alpha.17

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 (35) hide show
  1. package/dist/development/components/HasRole.cjs +11 -3
  2. package/dist/development/components/HasRole.cjs.map +1 -1
  3. package/dist/development/components/HasRole.js +11 -3
  4. package/dist/development/components/HasRole.js.map +1 -1
  5. package/dist/development/components/IdentityProvider.cjs +18 -2
  6. package/dist/development/components/IdentityProvider.cjs.map +1 -1
  7. package/dist/development/components/IdentityProvider.js +18 -2
  8. package/dist/development/components/IdentityProvider.js.map +1 -1
  9. package/dist/development/components/IdentityState.cjs +6 -1
  10. package/dist/development/components/IdentityState.cjs.map +1 -1
  11. package/dist/development/components/IdentityState.js +6 -1
  12. package/dist/development/components/IdentityState.js.map +1 -1
  13. package/dist/development/components/LogoutTrigger.cjs +6 -2
  14. package/dist/development/components/LogoutTrigger.cjs.map +1 -1
  15. package/dist/development/components/LogoutTrigger.js +6 -2
  16. package/dist/development/components/LogoutTrigger.js.map +1 -1
  17. package/dist/development/hooks/useFetchIdentity.cjs +18 -17
  18. package/dist/development/hooks/useFetchIdentity.cjs.map +1 -1
  19. package/dist/development/hooks/useFetchIdentity.js +18 -17
  20. package/dist/development/hooks/useFetchIdentity.js.map +1 -1
  21. package/dist/production/components/IdentityState.cjs +2 -1
  22. package/dist/production/components/IdentityState.cjs.map +1 -1
  23. package/dist/production/components/IdentityState.js +2 -1
  24. package/dist/production/components/IdentityState.js.map +1 -1
  25. package/dist/production/hooks/useFetchIdentity.cjs +18 -17
  26. package/dist/production/hooks/useFetchIdentity.cjs.map +1 -1
  27. package/dist/production/hooks/useFetchIdentity.js +18 -17
  28. package/dist/production/hooks/useFetchIdentity.js.map +1 -1
  29. package/dist/types/components/IdentityState.d.ts +1 -1
  30. package/dist/types/components/IdentityState.d.ts.map +1 -1
  31. package/dist/types/hooks/useFetchIdentity.d.ts.map +1 -1
  32. package/dist/types/tsconfig.tsbuildinfo +1 -1
  33. package/package.json +6 -6
  34. package/src/components/IdentityState.tsx +2 -2
  35. package/src/hooks/useFetchIdentity.ts +18 -17
@@ -5,40 +5,41 @@ import { useLogoutInternal } from "../internal/hooks/useLogoutInternal.js";
5
5
  const useFetchIdentity = () => {
6
6
  const sessionToken = useSessionToken();
7
7
  const fetchMe = useFetchMe();
8
- const [identityState, setIdentityState] = useState(sessionToken ? "loading" : "none");
9
- const [identity, setIdentity] = useState();
10
- const clearIdentity = useCallback(() => setIdentityState("cleared"), []);
8
+ const [identityState, setIdentityState] = useState({ state: sessionToken ? "loading" : "none", identity: void 0 });
9
+ const clearIdentity = useCallback(() => setIdentityState({ state: "cleared", identity: void 0 }), []);
11
10
  const logout = useLogoutInternal(clearIdentity);
12
11
  const fetch = useCallback(async () => {
13
- setIdentityState("loading");
12
+ setIdentityState({ state: "loading", identity: void 0 });
14
13
  try {
15
14
  const response = await fetchMe();
16
15
  const person = response.person;
17
16
  const projects = response.projects;
18
17
  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
18
+ setIdentityState({
19
+ state: "success",
20
+ identity: {
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
+ }
29
30
  });
30
31
  } catch (e) {
31
32
  console.error(e);
32
33
  if (typeof e === "object" && e !== null && "status" in e && e.status === 401) {
33
34
  logout({ noRedirect: true });
34
- setIdentityState("cleared");
35
+ setIdentityState({ state: "cleared", identity: void 0 });
35
36
  } else {
36
- setIdentityState("failed");
37
+ setIdentityState({ state: "failed", identity: void 0 });
37
38
  }
38
39
  }
39
40
  }, [fetchMe, logout]);
40
41
  return [
41
- { state: identityState, identity },
42
+ identityState,
42
43
  useMemo(() => ({
43
44
  clearIdentity,
44
45
  refreshIdentity: fetch
@@ -1 +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;"}
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<ReturnType<typeof useFetchIdentity>[0]>({ state: sessionToken ? 'loading' : 'none', identity: undefined })\n\n\tconst clearIdentity = useCallback(() => setIdentityState({ state: 'cleared', identity: undefined }), [])\n\tconst logout = useLogoutInternal(clearIdentity)\n\n\tconst fetch = useCallback(async () => {\n\t\tsetIdentityState({ state: 'loading', identity: undefined })\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({\n\t\t\t\tstate: 'success',\n\t\t\t\tidentity: {\n\t\t\t\t\tid: response.id,\n\t\t\t\t\tperson: person ?? undefined,\n\t\t\t\t\tprojects: projects.map(it => ({\n\t\t\t\t\t\tname: it.project.name,\n\t\t\t\t\t\tslug: it.project.slug,\n\t\t\t\t\t\troles: it.memberships.map(it => it.role),\n\t\t\t\t\t})),\n\t\t\t\t\tpermissions,\n\t\t\t\t},\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({ state: 'cleared', identity: undefined })\n\t\t\t} else {\n\t\t\t\tsetIdentityState({ state: 'failed', identity: undefined })\n\t\t\t}\n\t\t}\n\t}, [fetchMe, logout])\n\n\treturn [\n\t\tidentityState,\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,SAAiD,EAAE,OAAO,eAAe,YAAY,QAAQ,UAAU,OAAW,CAAA;AAE5J,QAAM,gBAAgB,YAAY,MAAM,iBAAiB,EAAE,OAAO,WAAW,UAAU,QAAW,GAAG,CAAE,CAAA;AACjG,QAAA,SAAS,kBAAkB,aAAa;AAExC,QAAA,QAAQ,YAAY,YAAY;AACrC,qBAAiB,EAAE,OAAO,WAAW,UAAU,QAAW;AACtD,QAAA;AACG,YAAA,WAAW,MAAM;AACvB,YAAM,SAAS,SAAS;AACxB,YAAM,WAAW,SAAS;AAC1B,YAAM,cAAc,SAAS,eAAe,EAAE,kBAAkB,MAAM;AAErD,uBAAA;AAAA,QAChB,OAAO;AAAA,QACP,UAAU;AAAA,UACT,IAAI,SAAS;AAAA,UACb,QAAQ,UAAU;AAAA,UAClB,UAAU,SAAS,IAAI,CAAO,QAAA;AAAA,YAC7B,MAAM,GAAG,QAAQ;AAAA,YACjB,MAAM,GAAG,QAAQ;AAAA,YACjB,OAAO,GAAG,YAAY,IAAI,CAAAA,QAAMA,IAAG,IAAI;AAAA,UAAA,EACtC;AAAA,UACF;AAAA,QACD;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,EAAE,OAAO,WAAW,UAAU,QAAW;AAAA,MAAA,OACpD;AACN,yBAAiB,EAAE,OAAO,UAAU,UAAU,QAAW;AAAA,MAC1D;AAAA,IACD;AAAA,EAAA,GACE,CAAC,SAAS,MAAM,CAAC;AAEb,SAAA;AAAA,IACN;AAAA,IACA,QAAQ,OAAwB;AAAA,MAC/B;AAAA,MACA,iBAAiB;AAAA,IAAA,IACd,CAAC,eAAe,KAAK,CAAC;AAAA,EAAA;AAE5B;"}
@@ -4,5 +4,5 @@ export interface IdentityStateProps {
4
4
  state: IdentityStateValue | IdentityStateValue[];
5
5
  children: ReactNode;
6
6
  }
7
- export declare const IdentityState: ({ state, children }: IdentityStateProps) => ReactNode;
7
+ export declare const IdentityState: ({ state, children }: IdentityStateProps) => import("react/jsx-runtime").JSX.Element | null;
8
8
  //# sourceMappingURL=IdentityState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IdentityState.d.ts","sourceRoot":"","sources":["../../../src/components/IdentityState.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAG7C,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,kBAAkB,GAAG,kBAAkB,EAAE,CAAA;IAChD,QAAQ,EAAE,SAAS,CAAA;CACnB;AAED,eAAO,MAAM,aAAa,wBAAyB,kBAAkB,cAIpE,CAAA"}
1
+ {"version":3,"file":"IdentityState.d.ts","sourceRoot":"","sources":["../../../src/components/IdentityState.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAG7C,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,kBAAkB,GAAG,kBAAkB,EAAE,CAAA;IAChD,QAAQ,EAAE,SAAS,CAAA;CACnB;AAED,eAAO,MAAM,aAAa,wBAAyB,kBAAkB,mDAIpE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useFetchIdentity.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFetchIdentity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAKxE,eAAO,MAAM,gBAAgB;WAAiB,kBAAkB;cAAY,QAAQ,GAAG,SAAS;mBA+C/F,CAAA"}
1
+ {"version":3,"file":"useFetchIdentity.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFetchIdentity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAKxE,eAAO,MAAM,gBAAgB,QAAO,CAAC;IAAE,KAAK,EAAE,kBAAkB,CAAC;IAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAA;CAAE,EAAE,eAAe,CAgDlH,CAAA"}