@beamarco/auth-sdk 0.1.1 → 0.1.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAG5F,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,SAAS,CAAQ;gBAEb,OAAO,EAAE,uBAAuB;YAM9B,OAAO;IAoCrB;;OAEG;IACG,KAAK,CAAC,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzD;;OAEG;IACG,QAAQ,CAAC,WAAW,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAW9E;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQtD;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAwBxC;;OAEG;IACG,eAAe,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlE;;OAEG;IACG,kBAAkB,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAYpF;;OAEG;IACG,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1D;;OAEG;IACG,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAMnE"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAG5F,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,SAAS,CAAQ;gBAEb,OAAO,EAAE,uBAAuB;YAS9B,OAAO;IAoCrB;;OAEG;IACG,KAAK,CAAC,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzD;;OAEG;IACG,QAAQ,CAAC,WAAW,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAW9E;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQtD;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAwBxC;;OAEG;IACG,eAAe,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlE;;OAEG;IACG,kBAAkB,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAYpF;;OAEG;IACG,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1D;;OAEG;IACG,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAMnE"}
package/dist/client.js CHANGED
@@ -5,6 +5,9 @@ import { AuthError } from './types';
5
5
  */
6
6
  export class BeamarAuthClient {
7
7
  constructor(options) {
8
+ if (!options?.apiUrl) {
9
+ throw new Error('BeamarAuthClient: apiUrl is required. Check VITE_BEAMAR_AUTH_KEY and auth-service /auth/public-config.');
10
+ }
8
11
  this.apiUrl = options.apiUrl.replace(/\/$/, '');
9
12
  this.appName = options.appName;
10
13
  this.parentUrl = options.parentUrl ?? (typeof window !== 'undefined' ? window.location.origin : '');
@@ -146,5 +146,5 @@ function GoogleSignInButton({ onSuccess, disabled, clientId, }) {
146
146
  if (res.credential && res.clientId) {
147
147
  onSuccess({ credential: res.credential, clientId: res.clientId });
148
148
  }
149
- }, onError: () => { }, useOneTap: false, type: "standard", theme: "outline", size: "large", text: "signin_with", shape: "rectangular" }));
149
+ }, onError: () => { }, useOneTap: false, type: "standard", theme: "outline", size: "large", text: "signin_with", shape: "rectangular", logo_alignment: "left", width: "320" }));
150
150
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SignUp.d.ts","sourceRoot":"","sources":["../../src/components/SignUp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAEvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAEnD,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDlB,CAAA;AAED,MAAM,WAAW,WAAW;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,aAAa,CAAC,CAAA;IACtC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,KAAK,CAAC,SAAS,CAAA;CACzD;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,CAAC,WAAW,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3D,gBAAgB,EAAE,CAAC,UAAU,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzF,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,SAAS,EAAE,OAAO,CAAA;CACnB;AA0CD,wBAAgB,MAAM,CAAC,EACrB,cAAoB,EACpB,MAAM,EAAE,YAAiB,EACzB,UAAiB,EACjB,SAAsB,EACtB,SAAS,EACT,QAAQ,GACT,EAAE,WAAW,2CAgHb"}
1
+ {"version":3,"file":"SignUp.d.ts","sourceRoot":"","sources":["../../src/components/SignUp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAEvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAEnD,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDlB,CAAA;AAED,MAAM,WAAW,WAAW;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,aAAa,CAAC,CAAA;IACtC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,KAAK,CAAC,SAAS,CAAA;CACzD;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,CAAC,WAAW,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3D,gBAAgB,EAAE,CAAC,UAAU,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzF,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,SAAS,EAAE,OAAO,CAAA;CACnB;AA4CD,wBAAgB,MAAM,CAAC,EACrB,cAAoB,EACpB,MAAM,EAAE,YAAiB,EACzB,UAAiB,EACjB,SAAsB,EACtB,SAAS,EACT,QAAQ,GACT,EAAE,WAAW,2CAgHb"}
@@ -72,7 +72,7 @@ function GoogleSignUpButton({ onSuccess, disabled, clientId, }) {
72
72
  if (res.credential && res.clientId) {
73
73
  onSuccess({ credential: res.credential, clientId: res.clientId });
74
74
  }
75
- }, onError: () => { }, type: "standard", theme: "outline", size: "large", text: "signup_with", shape: "rectangular" }));
75
+ }, onError: () => { }, type: "standard", theme: "outline", size: "large", text: "signup_with", shape: "rectangular", logo_alignment: "left", width: "320" }));
76
76
  }
77
77
  export function SignUp({ afterSignUpUrl = '/', styles: customStyles = {}, showGoogle = true, signInUrl = '/sign-in', onSuccess, children, }) {
78
78
  const { signUp, signUpWithGoogle, googleClientId } = useBeamarAuth();
package/dist/context.d.ts CHANGED
@@ -18,12 +18,16 @@ export interface AuthContextValue {
18
18
  }
19
19
  declare const AuthContext: React.Context<AuthContextValue | null>;
20
20
  export interface BeamarAuthProviderProps {
21
- config: BeamarAuthConfig;
21
+ /** Full config (advanced) */
22
+ config?: BeamarAuthConfig;
23
+ /** Publishable key - Clerk-style, single env var (e.g. beamar_live_developers-portal) */
24
+ publishableKey?: string;
22
25
  children: React.ReactNode;
23
26
  }
24
27
  /**
25
28
  * BeamarAuthProvider - wrap your app to enable auth
29
+ * Use publishableKey for Clerk-style single config, or config for full control
26
30
  */
27
- export declare function BeamarAuthProvider({ config, children }: BeamarAuthProviderProps): import("react/jsx-runtime").JSX.Element;
31
+ export declare function BeamarAuthProvider({ config: configProp, publishableKey, children }: BeamarAuthProviderProps): import("react/jsx-runtime").JSX.Element;
28
32
  export { AuthContext };
29
33
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0D,MAAM,OAAO,CAAA;AAE9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE9G,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;IACjB,MAAM,EAAE,CAAC,WAAW,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,MAAM,EAAE,CAAC,WAAW,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3D,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,gBAAgB,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjE,gBAAgB,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjE,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACtC,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;IAC1C,MAAM,EAAE,gBAAgB,CAAA;IACxB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,QAAA,MAAM,WAAW,wCAA+C,CAAA;AAEhE,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,gBAAgB,CAAA;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,uBAAuB,2CA+G/E;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0D,MAAM,OAAO,CAAA;AAE9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAE3C,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE9G,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;IACjB,MAAM,EAAE,CAAC,WAAW,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,MAAM,EAAE,CAAC,WAAW,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3D,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,gBAAgB,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjE,gBAAgB,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjE,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACtC,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;IAC1C,MAAM,EAAE,gBAAgB,CAAA;IACxB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,QAAA,MAAM,WAAW,wCAA+C,CAAA;AAEhE,MAAM,WAAW,uBAAuB;IACtC,6BAA6B;IAC7B,MAAM,CAAC,EAAE,gBAAgB,CAAA;IACzB,yFAAyF;IACzF,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,uBAAuB,2CAqJ3G;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
package/dist/context.js CHANGED
@@ -2,24 +2,54 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import React, { createContext, useCallback, useEffect, useState } from 'react';
3
3
  import { GoogleOAuthProvider } from '@react-oauth/google';
4
4
  import { BeamarAuthClient } from './client';
5
+ import { resolveConfigFromPublishableKey } from './resolve-config';
5
6
  const AuthContext = createContext(null);
6
7
  /**
7
8
  * BeamarAuthProvider - wrap your app to enable auth
9
+ * Use publishableKey for Clerk-style single config, or config for full control
8
10
  */
9
- export function BeamarAuthProvider({ config, children }) {
11
+ export function BeamarAuthProvider({ config: configProp, publishableKey, children }) {
12
+ const [config, setConfig] = useState(configProp ?? null);
10
13
  const [user, setUser] = useState(null);
11
14
  const [isLoaded, setIsLoaded] = useState(false);
12
- const client = React.useMemo(() => new BeamarAuthClient({
13
- apiUrl: config.apiUrl,
14
- appName: config.appName,
15
- parentUrl: config.parentUrl,
16
- }), [config.apiUrl, config.appName, config.parentUrl]);
15
+ useEffect(() => {
16
+ if (configProp) {
17
+ setConfig(configProp);
18
+ return;
19
+ }
20
+ if (!publishableKey) {
21
+ console.error('BeamarAuthProvider: provide either config or publishableKey');
22
+ return;
23
+ }
24
+ resolveConfigFromPublishableKey(publishableKey)
25
+ .then(setConfig)
26
+ .catch((err) => {
27
+ console.error('BeamarAuthProvider: failed to resolve config', err);
28
+ setConfig({
29
+ apiUrl: 'https://auth.s.beamar.co',
30
+ appName: publishableKey,
31
+ });
32
+ });
33
+ }, [configProp, publishableKey]);
34
+ const client = React.useMemo(() => {
35
+ if (!config?.apiUrl)
36
+ return null;
37
+ return new BeamarAuthClient({
38
+ apiUrl: config.apiUrl,
39
+ appName: config.appName ?? 'default',
40
+ parentUrl: config.parentUrl,
41
+ });
42
+ }, [config]);
17
43
  const refreshSession = useCallback(async () => {
44
+ if (!client)
45
+ return null;
18
46
  const u = await client.getSession();
19
47
  setUser(u);
20
48
  return u;
21
49
  }, [client]);
22
50
  useEffect(() => {
51
+ if (!client)
52
+ return;
23
53
  let cancelled = false;
24
54
  client
25
55
  .getSession()
@@ -38,23 +68,33 @@ export function BeamarAuthProvider({ config, children }) {
38
68
  };
39
69
  }, [client]);
40
70
  const signIn = useCallback(async (credentials) => {
71
+ if (!client)
72
+ return;
41
73
  const u = await client.login(credentials);
42
74
  setUser(u);
43
75
  }, [client]);
44
76
  const signUp = useCallback(async (credentials) => {
77
+ if (!client)
78
+ return;
45
79
  await client.register(credentials);
46
80
  const u = await client.getSession();
47
81
  setUser(u);
48
82
  }, [client]);
49
83
  const signOut = useCallback(async () => {
84
+ if (!client)
85
+ return;
50
86
  await client.logout();
51
87
  setUser(null);
52
88
  }, [client]);
53
89
  const signInWithGoogle = useCallback(async (credential) => {
90
+ if (!client)
91
+ return;
54
92
  const u = await client.loginWithGoogle(credential);
55
93
  setUser(u);
56
94
  }, [client]);
57
95
  const signUpWithGoogle = useCallback(async (credential) => {
96
+ if (!client)
97
+ return;
58
98
  await client.registerWithGoogle(credential);
59
99
  const u = await client.getSession();
60
100
  setUser(u);
@@ -66,7 +106,7 @@ export function BeamarAuthProvider({ config, children }) {
66
106
  return null;
67
107
  }, []);
68
108
  const value = {
69
- isLoaded,
109
+ isLoaded: config && client ? isLoaded : false,
70
110
  isSignedIn: !!user,
71
111
  user,
72
112
  signIn,
@@ -76,9 +116,15 @@ export function BeamarAuthProvider({ config, children }) {
76
116
  signUpWithGoogle,
77
117
  getToken,
78
118
  refreshSession,
79
- client,
80
- googleClientId: config.googleClientId,
119
+ client: client,
120
+ googleClientId: config?.googleClientId,
81
121
  };
122
+ if (!config || !client) {
123
+ const msg = !publishableKey && !configProp
124
+ ? 'BeamarAuthProvider: set VITE_BEAMAR_AUTH_KEY or pass config/publishableKey'
125
+ : 'Loading...';
126
+ return (_jsx("div", { style: { display: 'flex', alignItems: 'center', justifyContent: 'center', minHeight: '100vh' }, children: _jsx("span", { children: msg }) }));
127
+ }
82
128
  const content = _jsx(AuthContext.Provider, { value: value, children: children });
83
129
  if (config.googleClientId) {
84
130
  return (_jsx(GoogleOAuthProvider, { clientId: config.googleClientId, children: content }));
@@ -0,0 +1,6 @@
1
+ import type { BeamarAuthConfig } from './types';
2
+ /**
3
+ * Resolve full BeamarAuthConfig from a publishable key (Clerk-style)
4
+ */
5
+ export declare function resolveConfigFromPublishableKey(publishableKey: string): Promise<BeamarAuthConfig>;
6
+ //# sourceMappingURL=resolve-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-config.d.ts","sourceRoot":"","sources":["../src/resolve-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAsB,MAAM,SAAS,CAAA;AAyDnE;;GAEG;AACH,wBAAsB,+BAA+B,CACnD,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,gBAAgB,CAAC,CAS3B"}
@@ -0,0 +1,71 @@
1
+ /** Access build-time env vars (Vite: import.meta.env, Node: process.env) */
2
+ function getEnv(key) {
3
+ const importMetaEnv = import.meta.env;
4
+ if (importMetaEnv?.[key] !== undefined)
5
+ return String(importMetaEnv[key]);
6
+ try {
7
+ if (typeof globalThis !== 'undefined') {
8
+ const proc = globalThis.process;
9
+ if (proc?.env?.[key] !== undefined)
10
+ return proc.env[key];
11
+ }
12
+ }
13
+ catch {
14
+ /* ignore */
15
+ }
16
+ return undefined;
17
+ }
18
+ /**
19
+ * Resolve apiUrl from publishableKey prefix or env override
20
+ */
21
+ function getApiUrl(publishableKey) {
22
+ const envUrl = getEnv('VITE_AUTH_API_URL') ?? getEnv('AUTH_API_URL');
23
+ if (envUrl)
24
+ return envUrl;
25
+ const prefix = publishableKey.split('_')[0];
26
+ if (publishableKey.startsWith('beamar_live_') || publishableKey.startsWith('pk_live_')) {
27
+ return 'https://auth.s.beamar.co';
28
+ }
29
+ if (publishableKey.startsWith('beamar_test_') || publishableKey.startsWith('pk_test_')) {
30
+ return getEnv('VITE_AUTH_API_URL') ?? 'http://localhost:3000';
31
+ }
32
+ return 'https://auth.s.beamar.co';
33
+ }
34
+ /**
35
+ * Extract appName from publishableKey
36
+ */
37
+ function getAppName(publishableKey) {
38
+ if (publishableKey.startsWith('beamar_live_'))
39
+ return publishableKey.replace('beamar_live_', '');
40
+ if (publishableKey.startsWith('beamar_test_'))
41
+ return publishableKey.replace('beamar_test_', '');
42
+ if (publishableKey.startsWith('pk_live_'))
43
+ return publishableKey.replace('pk_live_', '');
44
+ if (publishableKey.startsWith('pk_test_'))
45
+ return publishableKey.replace('pk_test_', '');
46
+ return publishableKey;
47
+ }
48
+ /**
49
+ * Fetch public config (googleClientId) from auth-service
50
+ */
51
+ async function fetchPublicConfig(apiUrl) {
52
+ const url = `${apiUrl.replace(/\/$/, '')}/auth/public-config`;
53
+ const res = await fetch(url);
54
+ if (!res.ok)
55
+ return {};
56
+ const data = await res.json().catch(() => ({}));
57
+ return { googleClientId: data?.googleClientId };
58
+ }
59
+ /**
60
+ * Resolve full BeamarAuthConfig from a publishable key (Clerk-style)
61
+ */
62
+ export async function resolveConfigFromPublishableKey(publishableKey) {
63
+ const apiUrl = getApiUrl(publishableKey);
64
+ const appName = getAppName(publishableKey);
65
+ const publicConfig = await fetchPublicConfig(apiUrl);
66
+ return {
67
+ apiUrl,
68
+ appName,
69
+ googleClientId: publicConfig.googleClientId,
70
+ };
71
+ }
package/dist/types.d.ts CHANGED
@@ -23,7 +23,7 @@ export interface TenantMember {
23
23
  * Configuration for BeamarAuthProvider
24
24
  */
25
25
  export interface BeamarAuthConfig {
26
- /** Base URL of the auth-service API (e.g. https://auth.creztu.com) */
26
+ /** Base URL of the auth-service API (e.g. https://auth.s.beamar.co) */
27
27
  apiUrl: string;
28
28
  /** Application name for multi-tenant (e.g. GOMEDI, developers-portal) */
29
29
  appName: string;
@@ -32,6 +32,12 @@ export interface BeamarAuthConfig {
32
32
  /** Optional callback URL after password reset */
33
33
  parentUrl?: string;
34
34
  }
35
+ /** Default auth API URL - overridable via VITE_AUTH_API_URL */
36
+ export declare const DEFAULT_AUTH_API_URL = "https://auth.s.beamar.co";
37
+ /** Public config returned by auth-service for frontends */
38
+ export interface BeamarPublicConfig {
39
+ googleClientId?: string;
40
+ }
35
41
  /**
36
42
  * Login with email/password
37
43
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAA;IACd,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAA;IACf,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,SAAU,SAAQ,KAAK;IAGzB,UAAU,CAAC,EAAE,MAAM;IACnB,IAAI,CAAC,EAAE,MAAM;gBAFpB,OAAO,EAAE,MAAM,EACR,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,IAAI,CAAC,EAAE,MAAM,YAAA;CAKvB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uEAAuE;IACvE,MAAM,EAAE,MAAM,CAAA;IACd,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAA;IACf,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,6BAA6B,CAAA;AAE9D,2DAA2D;AAC3D,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,SAAU,SAAQ,KAAK;IAGzB,UAAU,CAAC,EAAE,MAAM;IACnB,IAAI,CAAC,EAAE,MAAM;gBAFpB,OAAO,EAAE,MAAM,EACR,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,IAAI,CAAC,EAAE,MAAM,YAAA;CAKvB"}
package/dist/types.js CHANGED
@@ -1,3 +1,5 @@
1
+ /** Default auth API URL - overridable via VITE_AUTH_API_URL */
2
+ export const DEFAULT_AUTH_API_URL = 'https://auth.s.beamar.co';
1
3
  export class AuthError extends Error {
2
4
  constructor(message, statusCode, code) {
3
5
  super(message);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beamarco/auth-sdk",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Beamar Auth SDK - Embed authentication like Clerk in your React apps",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",