@atlasauth/react 0.3.0 → 0.3.1

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @atlasauth/react changelog
2
2
 
3
+ ## 0.3.1
4
+ - `useAuth()` now also returns `status` (`'loading' | 'signed_in' | 'signed_out'`) and `session`,
5
+ the same names `useAtlas()` uses, so code that destructures them no longer gets `undefined`.
6
+ `isLoaded` / `isSignedIn` are unchanged.
7
+ - `useAuth()` has an exported return type, `UseAuthReturn`; annotate with it and TypeScript
8
+ rejects fields that don't exist.
9
+
3
10
  ## 0.2.0
4
11
  - **New: `<SignInWithAtlasButton>` + `completeSignInWithAtlas()`** — "Sign in with Atlas" for any
5
12
  website via OIDC authorization-code + PKCE against `https://atlasauth.net`. Standalone: no
package/dist/hooks.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { type CheckSessionOptions, type ProviderToken } from '@atlasauth/js';
2
+ import { useAtlas, type AuthStatus } from './AtlasProvider';
2
3
  import { type ProtectCondition } from './protect';
3
4
  import type { AtlasOrganizationMembership, AtlasSession, AtlasSessionResource, AtlasUser } from './types';
4
5
  /**
@@ -41,21 +42,38 @@ export declare function useSessionList(): {
41
42
  };
42
43
  }): Promise<void>;
43
44
  };
44
- export declare function useAuth(): {
45
+ /**
46
+ * What `useAuth()` returns. Exported so a caller can annotate
47
+ * (`const auth: UseAuthReturn = useAuth()`) and have TypeScript reject a field
48
+ * that does not exist instead of handing back `undefined` at runtime.
49
+ */
50
+ export interface UseAuthReturn {
51
+ /** `false` until the first session check finishes. */
45
52
  isLoaded: boolean;
53
+ /** `true` only when `status === 'signed_in'`. */
46
54
  isSignedIn: boolean;
55
+ /**
56
+ * The same three-state status the provider tracks: `'loading'` while booting,
57
+ * then `'signed_in'` or `'signed_out'`. Equivalent to `isLoaded` + `isSignedIn`.
58
+ */
59
+ status: AuthStatus;
60
+ /** The active session, or `null` while loading or signed out. */
61
+ session: AtlasSession | null;
47
62
  userId: string | null;
48
63
  sessionId: string | null;
49
64
  orgId: string | null;
50
65
  orgRole: string | null;
51
66
  /** Always fresh: refreshes first if the cached token is close to expiry. */
52
- getToken: () => Promise<string | null>;
67
+ getToken(): Promise<string | null>;
53
68
  /** §6.6 the user's own live access token at a connected social provider. */
54
- getProviderToken: (provider: string) => Promise<ProviderToken | null>;
55
- signOut: () => Promise<void>;
69
+ getProviderToken(provider: string): Promise<ProviderToken | null>;
70
+ signOut(): Promise<void>;
56
71
  /** Mirrors <Protect>, for logic that is not a render decision. */
57
- has: (condition: ProtectCondition) => boolean;
58
- };
72
+ has(condition: ProtectCondition): boolean;
73
+ }
74
+ /** Pure projection of the provider context onto the `useAuth()` shape. */
75
+ export declare function authFromContext(ctx: Pick<ReturnType<typeof useAtlas>, 'status' | 'session' | 'claims' | 'getToken' | 'getProviderToken' | 'signOut'>): UseAuthReturn;
76
+ export declare function useAuth(): UseAuthReturn;
59
77
  export declare function useOrganization(): {
60
78
  isLoaded: boolean;
61
79
  organization: AtlasOrganizationMembership['organization'] | null;
package/dist/hooks.js CHANGED
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useUser = useUser;
4
4
  exports.useSession = useSession;
5
5
  exports.useSessionList = useSessionList;
6
+ exports.authFromContext = authFromContext;
6
7
  exports.useAuth = useAuth;
7
8
  exports.useOrganization = useOrganization;
8
9
  exports.useSilentAuth = useSilentAuth;
@@ -46,24 +47,27 @@ function useSessionList() {
46
47
  setActive: ({ session }) => setActiveSession(session),
47
48
  };
48
49
  }
49
- function useAuth() {
50
- const { status, claims, getToken, getProviderToken, signOut } = (0, AtlasProvider_1.useAtlas)();
50
+ /** Pure projection of the provider context onto the `useAuth()` shape. */
51
+ function authFromContext(ctx) {
52
+ const { status, session, claims, getToken, getProviderToken, signOut } = ctx;
51
53
  return {
52
54
  isLoaded: status !== 'loading',
53
55
  isSignedIn: status === 'signed_in',
56
+ status,
57
+ session,
54
58
  userId: claims?.sub ?? null,
55
59
  sessionId: claims?.sid ?? null,
56
60
  orgId: claims?.org_id ?? null,
57
61
  orgRole: claims?.org_role ?? null,
58
- /** Always fresh: refreshes first if the cached token is close to expiry. */
59
62
  getToken,
60
- /** §6.6 the user's own live access token at a connected social provider. */
61
63
  getProviderToken,
62
64
  signOut,
63
- /** Mirrors <Protect>, for logic that is not a render decision. */
64
65
  has: (condition) => (0, protect_1.evaluate)(claims, condition).allowed,
65
66
  };
66
67
  }
68
+ function useAuth() {
69
+ return authFromContext((0, AtlasProvider_1.useAtlas)());
70
+ }
67
71
  function useOrganization() {
68
72
  const { status, claims, memberships, setActiveOrganization } = (0, AtlasProvider_1.useAtlas)();
69
73
  const active = memberships.find((m) => m.organization.id === claims?.org_id) ?? null;
package/dist/hooks.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@atlasauth/react",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "dependencies": {
7
- "@atlasauth/authz": "0.1.1",
8
- "@atlasauth/js": "0.4.0"
7
+ "@atlasauth/js": "0.4.0",
8
+ "@atlasauth/authz": "0.1.1"
9
9
  },
10
10
  "peerDependencies": {
11
11
  "react": ">=18"