@strands.gg/accui 0.2.12 → 0.2.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.
- package/dist/accui.css +1 -1
- package/dist/nuxt/runtime/composables/useStrandsAuth.cjs.js +1 -1
- package/dist/nuxt/runtime/composables/useStrandsAuth.d.ts +4 -3
- package/dist/nuxt/runtime/composables/useStrandsAuth.d.ts.map +1 -1
- package/dist/nuxt/runtime/composables/useStrandsAuth.es.js +1 -1
- package/dist/nuxt/runtime/plugin.client.cjs.js +1 -1
- package/dist/nuxt/runtime/plugin.client.es.js +1 -1
- package/dist/nuxt/runtime/plugin.server.cjs.js +1 -1
- package/dist/nuxt/runtime/plugin.server.es.js +1 -1
- package/dist/nuxt/types.d.ts +0 -1
- package/dist/nuxt/types.d.ts.map +1 -1
- package/dist/nuxt-v4/runtime/composables/useStrandsAuth.cjs.js +1 -1
- package/dist/nuxt-v4/runtime/composables/useStrandsAuth.es.js +1 -1
- package/dist/nuxt-v4/runtime/plugin.client.cjs.js +1 -1
- package/dist/nuxt-v4/runtime/plugin.client.es.js +1 -1
- package/dist/nuxt-v4/runtime/plugin.server.cjs.js +1 -1
- package/dist/nuxt-v4/runtime/plugin.server.es.js +1 -1
- package/dist/nuxt-v4/types.d.ts +0 -1
- package/dist/nuxt-v4/types.d.ts.map +1 -1
- package/dist/strands-auth-ui.cjs.js +7 -11
- package/dist/strands-auth-ui.cjs.js.map +1 -1
- package/dist/strands-auth-ui.es.js +3525 -1712
- package/dist/strands-auth-ui.es.js.map +1 -1
- package/dist/types/index.d.ts +33 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/useStrandsAuth-DE3JScoq.cjs +2 -0
- package/dist/useStrandsAuth-DE3JScoq.cjs.map +1 -0
- package/dist/{useStrandsAuth-CPyy4tH6.js → useStrandsAuth-DVIEH9Nm.js} +102 -67
- package/dist/useStrandsAuth-DVIEH9Nm.js.map +1 -0
- package/dist/useStrandsConfig-BIACvByo.cjs +2 -0
- package/dist/useStrandsConfig-BIACvByo.cjs.map +1 -0
- package/dist/useStrandsConfig-DK37s9ZC.js +120 -0
- package/dist/useStrandsConfig-DK37s9ZC.js.map +1 -0
- package/dist/utils/validation.d.ts +0 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/vue/components/SignedIn.vue.d.ts +1 -1
- package/dist/vue/components/SignedOut.vue.d.ts +1 -1
- package/dist/vue/components/StrandsBackupCodesModal.vue.d.ts +12 -0
- package/dist/vue/components/StrandsBackupCodesModal.vue.d.ts.map +1 -0
- package/dist/vue/components/StrandsConfirmModal.vue.d.ts +22 -0
- package/dist/vue/components/StrandsConfirmModal.vue.d.ts.map +1 -0
- package/dist/vue/components/StrandsEmailMfaSetupModal.vue.d.ts +12 -0
- package/dist/vue/components/StrandsEmailMfaSetupModal.vue.d.ts.map +1 -0
- package/dist/vue/components/StrandsMfaModal.vue.d.ts +12 -0
- package/dist/vue/components/StrandsMfaModal.vue.d.ts.map +1 -0
- package/dist/vue/components/StrandsTotpSetupModal.vue.d.ts +12 -0
- package/dist/vue/components/StrandsTotpSetupModal.vue.d.ts.map +1 -0
- package/dist/vue/components/StrandsUserProfile.vue.d.ts +4 -12
- package/dist/vue/components/StrandsUserProfile.vue.d.ts.map +1 -1
- package/dist/vue/components/index.d.ts +5 -0
- package/dist/vue/components/index.d.ts.map +1 -1
- package/dist/vue/composables/useStrandsAuth.d.ts +4 -3
- package/dist/vue/composables/useStrandsAuth.d.ts.map +1 -1
- package/dist/vue/composables/useStrandsConfig.d.ts.map +1 -1
- package/dist/vue/composables/useStrandsMfa.d.ts +37 -0
- package/dist/vue/composables/useStrandsMfa.d.ts.map +1 -0
- package/dist/vue/ui/UiLoader.vue.d.ts +2 -2
- package/dist/vue/ui/UiLoader.vue.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/useStrandsAuth-CPyy4tH6.js.map +0 -1
- package/dist/useStrandsAuth-C_MiRZbU.cjs +0 -2
- package/dist/useStrandsAuth-C_MiRZbU.cjs.map +0 -1
- package/dist/useStrandsConfig-R8O__glt.cjs +0 -2
- package/dist/useStrandsConfig-R8O__glt.cjs.map +0 -1
- package/dist/useStrandsConfig-j-Bfv_s7.js +0 -98
- package/dist/useStrandsConfig-j-Bfv_s7.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useStrandsConfig-R8O__glt.cjs","sources":["../../../apps/accounts-ui/src/shared/defaults.ts","../../../apps/accounts-ui/src/vue/composables/useStrandsConfig.ts"],"sourcesContent":["import type { StrandsAuthConfig } from '../types'\n\nexport const STRANDS_AUTH_DEFAULTS: Required<Omit<StrandsAuthConfig, 'clientId' | 'supportEmail'>> = {\n baseUrl: 'https://your-api.example.com',\n accentColor: '#EA00A8',\n redirectUrl: '/',\n onSignInUrl: '/dashboard',\n onSignOutUrl: '/',\n autoRefresh: true,\n refreshInterval: 4,\n protectedRoutes: [],\n guestOnlyRoutes: ['/auth', '/login', '/register'],\n devMode: false,\n styles: true,\n endpoints: {}\n}","import { ref, computed, inject, provide } from 'vue'\nimport { STRANDS_AUTH_DEFAULTS } from '../../shared/defaults'\n\n// Re-export types for components\nexport type { StrandsAuthConfig, StrandsAuthEndpoints } from '../../types'\nimport type { StrandsAuthConfig, StrandsAuthEndpoints } from '../../types'\n\nconst DEFAULT_ENDPOINTS: StrandsAuthEndpoints = {\n signIn: '/api/v1/auth/sign-in',\n signUp: '/api/v1/auth/sign-up',\n signOut: '/api/v1/auth/sign-out',\n refresh: '/api/v1/auth/refresh',\n passwordReset: '/api/v1/auth/password-reset',\n passwordResetConfirm: '/api/v1/auth/password-reset/confirm',\n profile: '/api/v1/user/profile',\n verifyEmail: '/api/v1/auth/verify-email',\n oauthProviders: '/api/v1/oauth/providers',\n oauthProvider: '/api/v1/oauth/providers/{provider_id}'\n}\n\nconst STRANDS_CONFIG_KEY = Symbol('strands-config')\n\n// Global configuration state\nconst globalConfig = ref<StrandsAuthConfig | null>(null)\n\nexport function provideStrandsConfig(config: StrandsAuthConfig) {\n globalConfig.value = config\n \n try {\n provide(STRANDS_CONFIG_KEY, config)\n } catch (error) {\n console.warn('[Strands Auth] Could not provide config via Vue provide/inject. Config available via global state only.', error)\n }\n}\n\nexport function useStrandsConfig(fallbackConfig?: Partial<StrandsAuthConfig>) {\n // Try to get config from provide/inject first\n const injectedConfig = inject<StrandsAuthConfig | null>(STRANDS_CONFIG_KEY, null)\n \n // Try to get Nuxt runtime config as additional fallback\n let nuxtConfig = null\n try {\n if (typeof window !== 'undefined') {\n // Check window global set by plugin\n if ((window as any).__STRANDS_CONFIG__) {\n nuxtConfig = (window as any).__STRANDS_CONFIG__\n }\n // Fallback to __NUXT__ hydration data\n else if ((window as any).__NUXT__) {\n const nuxtData = (window as any).__NUXT__\n nuxtConfig = nuxtData?.config?.public?.strandsAuth ||\n nuxtData?.public?.strandsAuth ||\n nuxtData?.strandsAuth\n }\n }\n } catch (error) {\n console.error('[Strands Auth] Error accessing runtime configuration:', error)\n }\n \n // Merge configuration sources in priority order\n const activeConfig = computed(() => {\n // Start with defaults, then layer on user configurations\n const config = {\n ...STRANDS_AUTH_DEFAULTS,\n ...(fallbackConfig || {}),\n ...(injectedConfig || {}),\n ...(globalConfig.value || {}),\n ...(nuxtConfig || {})\n }\n \n // Only warn if we're using the exact default URL (indicating no config was provided)\n if (config.baseUrl === STRANDS_AUTH_DEFAULTS.baseUrl && typeof window === 'undefined') {\n console.warn('[Strands Auth] No baseUrl configured for SSR. Please provide a baseUrl in your strandsAuth configuration.')\n }\n \n return config\n })\n\n const endpoints = computed<StrandsAuthEndpoints>(() => {\n const config = activeConfig.value\n const customEndpoints = config.endpoints || {}\n \n return {\n signIn: customEndpoints.signIn || DEFAULT_ENDPOINTS.signIn,\n signUp: customEndpoints.signUp || DEFAULT_ENDPOINTS.signUp,\n signOut: customEndpoints.signOut || DEFAULT_ENDPOINTS.signOut,\n refresh: customEndpoints.refresh || DEFAULT_ENDPOINTS.refresh,\n passwordReset: customEndpoints.passwordReset || DEFAULT_ENDPOINTS.passwordReset,\n passwordResetConfirm: customEndpoints.passwordResetConfirm || DEFAULT_ENDPOINTS.passwordResetConfirm,\n profile: customEndpoints.profile || DEFAULT_ENDPOINTS.profile,\n verifyEmail: customEndpoints.verifyEmail || DEFAULT_ENDPOINTS.verifyEmail,\n oauthProviders: customEndpoints.oauthProviders || DEFAULT_ENDPOINTS.oauthProviders,\n oauthProvider: customEndpoints.oauthProvider || DEFAULT_ENDPOINTS.oauthProvider\n }\n })\n\n const getUrl = (endpoint: keyof StrandsAuthEndpoints | string) => {\n const config = activeConfig.value\n if (!config.baseUrl) {\n throw new Error('Base URL is required in configuration')\n }\n \n // If endpoint is a string key, try to find it in endpoints first\n let endpointPath: string\n if (typeof endpoint === 'string' && endpoint in endpoints.value) {\n endpointPath = endpoints.value[endpoint as keyof StrandsAuthEndpoints]\n } else if (typeof endpoint === 'string') {\n // If it's a string but not a key, treat it as a literal path\n endpointPath = endpoint\n } else {\n // It's a keyof StrandsAuthEndpoints\n endpointPath = endpoints.value[endpoint]\n }\n \n // Ensure proper URL construction with slash separation\n const baseUrl = config.baseUrl.replace(/\\/$/, '')\n const path = endpointPath.startsWith('/') ? endpointPath : `/${endpointPath}`\n \n return `${baseUrl}${path}`\n }\n\n const getSupportEmail = () => {\n const config = activeConfig.value\n return config.supportEmail || null\n }\n\n return {\n config: activeConfig,\n endpoints,\n getUrl,\n getSupportEmail\n }\n}\n\n// Convenience function to set global config\nexport function setStrandsConfig(config: StrandsAuthConfig) {\n globalConfig.value = config\n}\n"],"names":["STRANDS_AUTH_DEFAULTS","DEFAULT_ENDPOINTS","STRANDS_CONFIG_KEY","globalConfig","ref","provideStrandsConfig","config","provide","error","useStrandsConfig","fallbackConfig","injectedConfig","inject","nuxtConfig","nuxtData","activeConfig","computed","endpoints","customEndpoints","endpoint","endpointPath","baseUrl","path","setStrandsConfig"],"mappings":"oCAEaA,EAAwF,CACnG,QAAS,+BACT,YAAa,UACb,YAAa,IACb,YAAa,aACb,aAAc,IACd,YAAa,GACb,gBAAiB,EACjB,gBAAiB,CAAA,EACjB,gBAAiB,CAAC,QAAS,SAAU,WAAW,EAChD,QAAS,GACT,OAAQ,GACR,UAAW,CAAA,CACb,ECRMC,EAA0C,CAC9C,OAAQ,uBACR,OAAQ,uBACR,QAAS,wBACT,QAAS,uBACT,cAAe,8BACf,qBAAsB,sCACtB,QAAS,uBACT,YAAa,4BACb,eAAgB,0BAChB,cAAe,uCACjB,EAEMC,EAAqB,OAAO,gBAAgB,EAG5CC,EAAeC,EAAAA,IAA8B,IAAI,EAEhD,SAASC,EAAqBC,EAA2B,CAC9DH,EAAa,MAAQG,EAErB,GAAI,CACFC,EAAAA,QAAQL,EAAoBI,CAAM,CACpC,OAASE,EAAO,CACd,QAAQ,KAAK,0GAA2GA,CAAK,CAC/H,CACF,CAEO,SAASC,EAAiBC,EAA6C,CAE5E,MAAMC,EAAiBC,EAAAA,OAAiCV,EAAoB,IAAI,EAGhF,IAAIW,EAAa,KACjB,GAAI,CACF,GAAI,OAAO,OAAW,KAEpB,GAAK,OAAe,mBAClBA,EAAc,OAAe,2BAGrB,OAAe,SAAU,CACjC,MAAMC,EAAY,OAAe,SACjCD,EAAaC,GAAU,QAAQ,QAAQ,aAC1BA,GAAU,QAAQ,aAClBA,GAAU,WACzB,EAEJ,OAASN,EAAO,CACd,QAAQ,MAAM,wDAAyDA,CAAK,CAC9E,CAGA,MAAMO,EAAeC,EAAAA,SAAS,IAAM,CAElC,MAAMV,EAAS,CACb,GAAGN,EACH,GAAIU,GAAkB,CAAA,EACtB,GAAIC,GAAkB,CAAA,EACtB,GAAIR,EAAa,OAAS,CAAA,EAC1B,GAAIU,GAAc,CAAA,CAAC,EAIrB,OAAIP,EAAO,UAAYN,EAAsB,SAAW,OAAO,OAAW,KACxE,QAAQ,KAAK,2GAA2G,EAGnHM,CACT,CAAC,EAEKW,EAAYD,EAAAA,SAA+B,IAAM,CAErD,MAAME,EADSH,EAAa,MACG,WAAa,CAAA,EAE5C,MAAO,CACL,OAAQG,EAAgB,QAAUjB,EAAkB,OACpD,OAAQiB,EAAgB,QAAUjB,EAAkB,OACpD,QAASiB,EAAgB,SAAWjB,EAAkB,QACtD,QAASiB,EAAgB,SAAWjB,EAAkB,QACtD,cAAeiB,EAAgB,eAAiBjB,EAAkB,cAClE,qBAAsBiB,EAAgB,sBAAwBjB,EAAkB,qBAChF,QAASiB,EAAgB,SAAWjB,EAAkB,QACtD,YAAaiB,EAAgB,aAAejB,EAAkB,YAC9D,eAAgBiB,EAAgB,gBAAkBjB,EAAkB,eACpE,cAAeiB,EAAgB,eAAiBjB,EAAkB,aAAA,CAEtE,CAAC,EAgCD,MAAO,CACL,OAAQc,EACR,UAAAE,EACA,OAjCcE,GAAkD,CAChE,MAAMb,EAASS,EAAa,MAC5B,GAAI,CAACT,EAAO,QACV,MAAM,IAAI,MAAM,uCAAuC,EAIzD,IAAIc,EACA,OAAOD,GAAa,UAAYA,KAAYF,EAAU,MACxDG,EAAeH,EAAU,MAAME,CAAsC,EAC5D,OAAOA,GAAa,SAE7BC,EAAeD,EAGfC,EAAeH,EAAU,MAAME,CAAQ,EAIzC,MAAME,EAAUf,EAAO,QAAQ,QAAQ,MAAO,EAAE,EAC1CgB,EAAOF,EAAa,WAAW,GAAG,EAAIA,EAAe,IAAIA,CAAY,GAE3E,MAAO,GAAGC,CAAO,GAAGC,CAAI,EAC1B,EAWE,gBATsB,IACPP,EAAa,MACd,cAAgB,IAO9B,CAEJ,CAGO,SAASQ,EAAiBjB,EAA2B,CAC1DH,EAAa,MAAQG,CACvB"}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { ref as v, provide as h, inject as w, computed as f } from "vue";
|
|
2
|
-
const p = {
|
|
3
|
-
baseUrl: "https://your-api.example.com",
|
|
4
|
-
accentColor: "#EA00A8",
|
|
5
|
-
redirectUrl: "/",
|
|
6
|
-
onSignInUrl: "/dashboard",
|
|
7
|
-
onSignOutUrl: "/",
|
|
8
|
-
autoRefresh: !0,
|
|
9
|
-
refreshInterval: 4,
|
|
10
|
-
protectedRoutes: [],
|
|
11
|
-
guestOnlyRoutes: ["/auth", "/login", "/register"],
|
|
12
|
-
devMode: !1,
|
|
13
|
-
styles: !0,
|
|
14
|
-
endpoints: {}
|
|
15
|
-
}, o = {
|
|
16
|
-
signIn: "/api/v1/auth/sign-in",
|
|
17
|
-
signUp: "/api/v1/auth/sign-up",
|
|
18
|
-
signOut: "/api/v1/auth/sign-out",
|
|
19
|
-
refresh: "/api/v1/auth/refresh",
|
|
20
|
-
passwordReset: "/api/v1/auth/password-reset",
|
|
21
|
-
passwordResetConfirm: "/api/v1/auth/password-reset/confirm",
|
|
22
|
-
profile: "/api/v1/user/profile",
|
|
23
|
-
verifyEmail: "/api/v1/auth/verify-email",
|
|
24
|
-
oauthProviders: "/api/v1/oauth/providers",
|
|
25
|
-
oauthProvider: "/api/v1/oauth/providers/{provider_id}"
|
|
26
|
-
}, d = Symbol("strands-config"), l = v(null);
|
|
27
|
-
function m(s) {
|
|
28
|
-
l.value = s;
|
|
29
|
-
try {
|
|
30
|
-
h(d, s);
|
|
31
|
-
} catch (a) {
|
|
32
|
-
console.warn("[Strands Auth] Could not provide config via Vue provide/inject. Config available via global state only.", a);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
function y(s) {
|
|
36
|
-
const a = w(d, null);
|
|
37
|
-
let u = null;
|
|
38
|
-
try {
|
|
39
|
-
if (typeof window < "u") {
|
|
40
|
-
if (window.__STRANDS_CONFIG__)
|
|
41
|
-
u = window.__STRANDS_CONFIG__;
|
|
42
|
-
else if (window.__NUXT__) {
|
|
43
|
-
const r = window.__NUXT__;
|
|
44
|
-
u = r?.config?.public?.strandsAuth || r?.public?.strandsAuth || r?.strandsAuth;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
} catch (r) {
|
|
48
|
-
console.error("[Strands Auth] Error accessing runtime configuration:", r);
|
|
49
|
-
}
|
|
50
|
-
const i = f(() => {
|
|
51
|
-
const r = {
|
|
52
|
-
...p,
|
|
53
|
-
...s || {},
|
|
54
|
-
...a || {},
|
|
55
|
-
...l.value || {},
|
|
56
|
-
...u || {}
|
|
57
|
-
};
|
|
58
|
-
return r.baseUrl === p.baseUrl && typeof window > "u" && console.warn("[Strands Auth] No baseUrl configured for SSR. Please provide a baseUrl in your strandsAuth configuration."), r;
|
|
59
|
-
}), n = f(() => {
|
|
60
|
-
const e = i.value.endpoints || {};
|
|
61
|
-
return {
|
|
62
|
-
signIn: e.signIn || o.signIn,
|
|
63
|
-
signUp: e.signUp || o.signUp,
|
|
64
|
-
signOut: e.signOut || o.signOut,
|
|
65
|
-
refresh: e.refresh || o.refresh,
|
|
66
|
-
passwordReset: e.passwordReset || o.passwordReset,
|
|
67
|
-
passwordResetConfirm: e.passwordResetConfirm || o.passwordResetConfirm,
|
|
68
|
-
profile: e.profile || o.profile,
|
|
69
|
-
verifyEmail: e.verifyEmail || o.verifyEmail,
|
|
70
|
-
oauthProviders: e.oauthProviders || o.oauthProviders,
|
|
71
|
-
oauthProvider: e.oauthProvider || o.oauthProvider
|
|
72
|
-
};
|
|
73
|
-
});
|
|
74
|
-
return {
|
|
75
|
-
config: i,
|
|
76
|
-
endpoints: n,
|
|
77
|
-
getUrl: (r) => {
|
|
78
|
-
const e = i.value;
|
|
79
|
-
if (!e.baseUrl)
|
|
80
|
-
throw new Error("Base URL is required in configuration");
|
|
81
|
-
let t;
|
|
82
|
-
typeof r == "string" && r in n.value ? t = n.value[r] : typeof r == "string" ? t = r : t = n.value[r];
|
|
83
|
-
const c = e.baseUrl.replace(/\/$/, ""), g = t.startsWith("/") ? t : `/${t}`;
|
|
84
|
-
return `${c}${g}`;
|
|
85
|
-
},
|
|
86
|
-
getSupportEmail: () => i.value.supportEmail || null
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
function C(s) {
|
|
90
|
-
l.value = s;
|
|
91
|
-
}
|
|
92
|
-
export {
|
|
93
|
-
p as S,
|
|
94
|
-
m as p,
|
|
95
|
-
C as s,
|
|
96
|
-
y as u
|
|
97
|
-
};
|
|
98
|
-
//# sourceMappingURL=useStrandsConfig-j-Bfv_s7.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useStrandsConfig-j-Bfv_s7.js","sources":["../../../apps/accounts-ui/src/shared/defaults.ts","../../../apps/accounts-ui/src/vue/composables/useStrandsConfig.ts"],"sourcesContent":["import type { StrandsAuthConfig } from '../types'\n\nexport const STRANDS_AUTH_DEFAULTS: Required<Omit<StrandsAuthConfig, 'clientId' | 'supportEmail'>> = {\n baseUrl: 'https://your-api.example.com',\n accentColor: '#EA00A8',\n redirectUrl: '/',\n onSignInUrl: '/dashboard',\n onSignOutUrl: '/',\n autoRefresh: true,\n refreshInterval: 4,\n protectedRoutes: [],\n guestOnlyRoutes: ['/auth', '/login', '/register'],\n devMode: false,\n styles: true,\n endpoints: {}\n}","import { ref, computed, inject, provide } from 'vue'\nimport { STRANDS_AUTH_DEFAULTS } from '../../shared/defaults'\n\n// Re-export types for components\nexport type { StrandsAuthConfig, StrandsAuthEndpoints } from '../../types'\nimport type { StrandsAuthConfig, StrandsAuthEndpoints } from '../../types'\n\nconst DEFAULT_ENDPOINTS: StrandsAuthEndpoints = {\n signIn: '/api/v1/auth/sign-in',\n signUp: '/api/v1/auth/sign-up',\n signOut: '/api/v1/auth/sign-out',\n refresh: '/api/v1/auth/refresh',\n passwordReset: '/api/v1/auth/password-reset',\n passwordResetConfirm: '/api/v1/auth/password-reset/confirm',\n profile: '/api/v1/user/profile',\n verifyEmail: '/api/v1/auth/verify-email',\n oauthProviders: '/api/v1/oauth/providers',\n oauthProvider: '/api/v1/oauth/providers/{provider_id}'\n}\n\nconst STRANDS_CONFIG_KEY = Symbol('strands-config')\n\n// Global configuration state\nconst globalConfig = ref<StrandsAuthConfig | null>(null)\n\nexport function provideStrandsConfig(config: StrandsAuthConfig) {\n globalConfig.value = config\n \n try {\n provide(STRANDS_CONFIG_KEY, config)\n } catch (error) {\n console.warn('[Strands Auth] Could not provide config via Vue provide/inject. Config available via global state only.', error)\n }\n}\n\nexport function useStrandsConfig(fallbackConfig?: Partial<StrandsAuthConfig>) {\n // Try to get config from provide/inject first\n const injectedConfig = inject<StrandsAuthConfig | null>(STRANDS_CONFIG_KEY, null)\n \n // Try to get Nuxt runtime config as additional fallback\n let nuxtConfig = null\n try {\n if (typeof window !== 'undefined') {\n // Check window global set by plugin\n if ((window as any).__STRANDS_CONFIG__) {\n nuxtConfig = (window as any).__STRANDS_CONFIG__\n }\n // Fallback to __NUXT__ hydration data\n else if ((window as any).__NUXT__) {\n const nuxtData = (window as any).__NUXT__\n nuxtConfig = nuxtData?.config?.public?.strandsAuth ||\n nuxtData?.public?.strandsAuth ||\n nuxtData?.strandsAuth\n }\n }\n } catch (error) {\n console.error('[Strands Auth] Error accessing runtime configuration:', error)\n }\n \n // Merge configuration sources in priority order\n const activeConfig = computed(() => {\n // Start with defaults, then layer on user configurations\n const config = {\n ...STRANDS_AUTH_DEFAULTS,\n ...(fallbackConfig || {}),\n ...(injectedConfig || {}),\n ...(globalConfig.value || {}),\n ...(nuxtConfig || {})\n }\n \n // Only warn if we're using the exact default URL (indicating no config was provided)\n if (config.baseUrl === STRANDS_AUTH_DEFAULTS.baseUrl && typeof window === 'undefined') {\n console.warn('[Strands Auth] No baseUrl configured for SSR. Please provide a baseUrl in your strandsAuth configuration.')\n }\n \n return config\n })\n\n const endpoints = computed<StrandsAuthEndpoints>(() => {\n const config = activeConfig.value\n const customEndpoints = config.endpoints || {}\n \n return {\n signIn: customEndpoints.signIn || DEFAULT_ENDPOINTS.signIn,\n signUp: customEndpoints.signUp || DEFAULT_ENDPOINTS.signUp,\n signOut: customEndpoints.signOut || DEFAULT_ENDPOINTS.signOut,\n refresh: customEndpoints.refresh || DEFAULT_ENDPOINTS.refresh,\n passwordReset: customEndpoints.passwordReset || DEFAULT_ENDPOINTS.passwordReset,\n passwordResetConfirm: customEndpoints.passwordResetConfirm || DEFAULT_ENDPOINTS.passwordResetConfirm,\n profile: customEndpoints.profile || DEFAULT_ENDPOINTS.profile,\n verifyEmail: customEndpoints.verifyEmail || DEFAULT_ENDPOINTS.verifyEmail,\n oauthProviders: customEndpoints.oauthProviders || DEFAULT_ENDPOINTS.oauthProviders,\n oauthProvider: customEndpoints.oauthProvider || DEFAULT_ENDPOINTS.oauthProvider\n }\n })\n\n const getUrl = (endpoint: keyof StrandsAuthEndpoints | string) => {\n const config = activeConfig.value\n if (!config.baseUrl) {\n throw new Error('Base URL is required in configuration')\n }\n \n // If endpoint is a string key, try to find it in endpoints first\n let endpointPath: string\n if (typeof endpoint === 'string' && endpoint in endpoints.value) {\n endpointPath = endpoints.value[endpoint as keyof StrandsAuthEndpoints]\n } else if (typeof endpoint === 'string') {\n // If it's a string but not a key, treat it as a literal path\n endpointPath = endpoint\n } else {\n // It's a keyof StrandsAuthEndpoints\n endpointPath = endpoints.value[endpoint]\n }\n \n // Ensure proper URL construction with slash separation\n const baseUrl = config.baseUrl.replace(/\\/$/, '')\n const path = endpointPath.startsWith('/') ? endpointPath : `/${endpointPath}`\n \n return `${baseUrl}${path}`\n }\n\n const getSupportEmail = () => {\n const config = activeConfig.value\n return config.supportEmail || null\n }\n\n return {\n config: activeConfig,\n endpoints,\n getUrl,\n getSupportEmail\n }\n}\n\n// Convenience function to set global config\nexport function setStrandsConfig(config: StrandsAuthConfig) {\n globalConfig.value = config\n}\n"],"names":["STRANDS_AUTH_DEFAULTS","DEFAULT_ENDPOINTS","STRANDS_CONFIG_KEY","globalConfig","ref","provideStrandsConfig","config","provide","error","useStrandsConfig","fallbackConfig","injectedConfig","inject","nuxtConfig","nuxtData","activeConfig","computed","endpoints","customEndpoints","endpoint","endpointPath","baseUrl","path","setStrandsConfig"],"mappings":"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"}
|