@strands.gg/accui 0.2.2 → 0.2.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.
Files changed (68) hide show
  1. package/dist/accui.css +1 -1
  2. package/dist/nuxt/runtime/composables/useStrandsAuth.cjs.js +1 -1
  3. package/dist/nuxt/runtime/composables/useStrandsAuth.cjs.js.map +1 -1
  4. package/dist/nuxt/runtime/composables/useStrandsAuth.d.ts +15 -21
  5. package/dist/nuxt/runtime/composables/useStrandsAuth.d.ts.map +1 -1
  6. package/dist/nuxt/runtime/composables/useStrandsAuth.es.js +2 -2
  7. package/dist/nuxt/runtime/composables/useStrandsAuth.es.js.map +1 -1
  8. package/dist/nuxt/runtime/plugin.client.cjs.js +1 -1
  9. package/dist/nuxt/runtime/plugin.client.es.js +1 -1
  10. package/dist/nuxt-v4/module.cjs.js +7 -1
  11. package/dist/nuxt-v4/module.cjs.js.map +1 -1
  12. package/dist/nuxt-v4/module.d.ts +5 -0
  13. package/dist/nuxt-v4/module.d.ts.map +1 -1
  14. package/dist/nuxt-v4/module.es.js +27 -18
  15. package/dist/nuxt-v4/module.es.js.map +1 -1
  16. package/dist/nuxt-v4/runtime/composables/useStrandsAuth.cjs.js +1 -1
  17. package/dist/nuxt-v4/runtime/composables/useStrandsAuth.cjs.js.map +1 -1
  18. package/dist/nuxt-v4/runtime/composables/useStrandsAuth.d.ts +21 -59
  19. package/dist/nuxt-v4/runtime/composables/useStrandsAuth.d.ts.map +1 -1
  20. package/dist/nuxt-v4/runtime/composables/useStrandsAuth.es.js +45 -36
  21. package/dist/nuxt-v4/runtime/composables/useStrandsAuth.es.js.map +1 -1
  22. package/dist/nuxt-v4/runtime/plugin.client.cjs.js +1 -1
  23. package/dist/nuxt-v4/runtime/plugin.client.cjs.js.map +1 -1
  24. package/dist/nuxt-v4/runtime/plugin.client.d.ts.map +1 -1
  25. package/dist/nuxt-v4/runtime/plugin.client.es.js +23 -12
  26. package/dist/nuxt-v4/runtime/plugin.client.es.js.map +1 -1
  27. package/dist/nuxt-v4/types.d.ts +2 -2
  28. package/dist/nuxt-v4/types.d.ts.map +1 -1
  29. package/dist/nuxt-v4.d.ts +1 -0
  30. package/dist/nuxt-v4.d.ts.map +1 -1
  31. package/dist/strands-auth-ui.cjs.js +1 -1
  32. package/dist/strands-auth-ui.cjs.js.map +1 -1
  33. package/dist/strands-auth-ui.es.js +1468 -1315
  34. package/dist/strands-auth-ui.es.js.map +1 -1
  35. package/dist/types/index.d.ts +5 -0
  36. package/dist/types/index.d.ts.map +1 -1
  37. package/dist/useStrandsAuth-BGunGG2x.cjs +2 -0
  38. package/dist/useStrandsAuth-BGunGG2x.cjs.map +1 -0
  39. package/dist/useStrandsAuth-DiD32KI7.js +91 -0
  40. package/dist/useStrandsAuth-DiD32KI7.js.map +1 -0
  41. package/dist/useStrandsConfig-CtzCmeS1.js +105 -0
  42. package/dist/useStrandsConfig-CtzCmeS1.js.map +1 -0
  43. package/dist/useStrandsConfig-DamqmMUO.cjs +2 -0
  44. package/dist/useStrandsConfig-DamqmMUO.cjs.map +1 -0
  45. package/dist/vue/components/StrandsAuth.vue.d.ts.map +1 -1
  46. package/dist/vue/components/StrandsCompleteSignUp.vue.d.ts.map +1 -1
  47. package/dist/vue/components/StrandsPasswordReset.vue.d.ts +7 -3
  48. package/dist/vue/components/StrandsPasswordReset.vue.d.ts.map +1 -1
  49. package/dist/vue/components/StrandsSecuredFooter.vue.d.ts +5 -1
  50. package/dist/vue/components/StrandsSecuredFooter.vue.d.ts.map +1 -1
  51. package/dist/vue/components/StrandsSignIn.vue.d.ts.map +1 -1
  52. package/dist/vue/components/StrandsSignUp.vue.d.ts.map +1 -1
  53. package/dist/vue/components/StrandsUserProfile.vue.d.ts +2 -0
  54. package/dist/vue/components/StrandsUserProfile.vue.d.ts.map +1 -1
  55. package/dist/vue/composables/useStrandsAuth.d.ts +2 -1
  56. package/dist/vue/composables/useStrandsAuth.d.ts.map +1 -1
  57. package/dist/vue/composables/useStrandsConfig.d.ts +2 -0
  58. package/dist/vue/composables/useStrandsConfig.d.ts.map +1 -1
  59. package/dist/vue/ui/UiInput.vue.d.ts.map +1 -1
  60. package/package.json +1 -1
  61. package/dist/useStrandsAuth-Bh7evftS.js +0 -66
  62. package/dist/useStrandsAuth-Bh7evftS.js.map +0 -1
  63. package/dist/useStrandsAuth-sAfTQeGC.cjs +0 -2
  64. package/dist/useStrandsAuth-sAfTQeGC.cjs.map +0 -1
  65. package/dist/useStrandsConfig-BYwF65Ph.js +0 -89
  66. package/dist/useStrandsConfig-BYwF65Ph.js.map +0 -1
  67. package/dist/useStrandsConfig-Bhbfl0PJ.cjs +0 -2
  68. package/dist/useStrandsConfig-Bhbfl0PJ.cjs.map +0 -1
@@ -60,4 +60,9 @@ export interface StrandsAuthEndpoints {
60
60
  oauthProviders: string;
61
61
  oauthProvider: string;
62
62
  }
63
+ export interface AuthResponse {
64
+ access_token: string;
65
+ refresh_token: string;
66
+ user: User;
67
+ }
63
68
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../apps/accounts-ui/src/types/index.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,OAAO,CAAA;IACnB,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,CAAC,EAAE,IAAI,CAAA;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAGD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAGD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB;AAGD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAA;IACzC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;CACtB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../apps/accounts-ui/src/types/index.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,OAAO,CAAA;IACnB,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,CAAC,EAAE,IAAI,CAAA;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAGD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAGD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB;AAGD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAA;IACzC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;CACtB;AAGD,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,IAAI,CAAA;CACX"}
@@ -0,0 +1,2 @@
1
+ "use strict";const t=require("vue"),r=t.ref(null),o=t.ref(null),l=t.ref(!1),s=t.ref(!1),u=t.ref(!1);function S(){const d=t.computed(()=>r.value!==null),f=async e=>{s.value=!0;try{throw new Error("Sign in not implemented - please integrate with auth SDK")}finally{s.value=!1}},v=async e=>{s.value=!0;try{throw new Error("Sign up not implemented - please integrate with auth SDK")}finally{s.value=!1}},g=async()=>{s.value=!0;try{r.value=null,o.value=null,typeof window<"u"&&(localStorage.removeItem("strands_auth_session"),localStorage.removeItem("strands_auth_user"))}finally{s.value=!1}},m=async()=>{o.value&&(l.value=!0,l.value=!1)},h=async e=>{l.value=!0;try{r.value&&Object.assign(r.value,e)}finally{l.value=!1}},y=e=>{try{r.value=e.user;const a={accessToken:e.access_token,refreshToken:e.refresh_token,expiresAt:new Date(Date.now()+300*1e3),userId:e.user.id};o.value=a,typeof window<"u"&&(localStorage.setItem("strands_auth_session",JSON.stringify(a)),localStorage.setItem("strands_auth_user",JSON.stringify(e.user))),console.log("Auth data stored successfully",{user:e.user.email})}catch(a){console.error("Failed to store auth data:",a)}},i=async()=>{if(!u.value){s.value=!0;try{if(typeof window<"u"){const e=localStorage.getItem("strands_auth_session"),a=localStorage.getItem("strands_auth_user");if(e&&a)try{const n=JSON.parse(e),c=JSON.parse(a);n.expiresAt=new Date(n.expiresAt),n.expiresAt>new Date?(o.value=n,r.value=c,console.log("Restored auth session for user:",c.email)):(localStorage.removeItem("strands_auth_session"),localStorage.removeItem("strands_auth_user"),console.log("Stored session expired, cleared from storage"))}catch(n){console.warn("Failed to restore auth session:",n),localStorage.removeItem("strands_auth_session"),localStorage.removeItem("strands_auth_user")}}u.value=!0}catch(e){console.error("Auth initialization error:",e)}finally{s.value=!1}}};return u.value||i(),{user:t.computed(()=>r.value),currentUser:t.computed(()=>r.value),currentSession:t.computed(()=>o.value),isAuthenticated:d,isLoading:t.computed(()=>s.value),loading:t.computed(()=>l.value),signIn:f,signUp:v,signOut:g,refreshToken:m,updateProfile:h,initialize:i,setAuthData:y}}exports.useStrandsAuth=S;
2
+ //# sourceMappingURL=useStrandsAuth-BGunGG2x.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useStrandsAuth-BGunGG2x.cjs","sources":["../../../apps/accounts-ui/src/vue/composables/useStrandsAuth.ts"],"sourcesContent":["import { ref, computed } from 'vue'\nimport type { User, Session, SignInCredentials, SignUpData, AuthResponse } from '../../types'\n\nconst currentUser = ref<User | null>(null)\nconst currentSession = ref<Session | null>(null)\nconst loading = ref(false)\nconst isLoading = ref(false)\nconst isInitialized = ref(false)\n\nexport function useStrandsAuth() {\n const isAuthenticated = computed(() => currentUser.value !== null)\n\n const signIn = async (credentials: SignInCredentials) => {\n isLoading.value = true\n try {\n // Integration point: Replace with actual auth SDK call\n // Example: const result = await authSDK.signIn(credentials)\n \n // For now, throw an error to indicate this needs implementation\n throw new Error('Sign in not implemented - please integrate with auth SDK')\n } finally {\n isLoading.value = false\n }\n }\n\n const signUp = async (userData: SignUpData) => {\n isLoading.value = true\n try {\n // Integration point: Replace with actual auth SDK call\n // Example: const result = await authSDK.signUp(userData)\n \n throw new Error('Sign up not implemented - please integrate with auth SDK')\n } finally {\n isLoading.value = false\n }\n }\n\n const signOut = async () => {\n isLoading.value = true\n try {\n // Integration point: Replace with actual auth SDK call\n // Example: await authSDK.signOut()\n \n currentUser.value = null\n currentSession.value = null\n \n // Clear stored tokens\n if (typeof window !== 'undefined') {\n localStorage.removeItem('strands_auth_session')\n localStorage.removeItem('strands_auth_user')\n }\n } finally {\n isLoading.value = false\n }\n }\n\n const refreshToken = async () => {\n if (!currentSession.value) return\n \n loading.value = true\n try {\n // Integration point: Replace with actual auth SDK call\n // Example: const newSession = await authSDK.refreshToken(currentSession.value.refreshToken)\n // currentSession.value = newSession\n } finally {\n loading.value = false\n }\n }\n\n const updateProfile = async (profileData: Partial<User>) => {\n loading.value = true\n try {\n // Integration point: Replace with actual auth SDK call\n // Example: const updatedUser = await authSDK.updateProfile(profileData)\n \n if (currentUser.value) {\n Object.assign(currentUser.value, profileData)\n }\n } finally {\n loading.value = false\n }\n }\n\n const setAuthData = (authResponse: AuthResponse) => {\n try {\n // Set current user\n currentUser.value = authResponse.user\n \n // Create session object\n const session: Session = {\n accessToken: authResponse.access_token,\n refreshToken: authResponse.refresh_token,\n expiresAt: new Date(Date.now() + 5 * 60 * 1000), // 5 minutes from now (matching API token expiry)\n userId: authResponse.user.id,\n }\n \n currentSession.value = session\n \n // Store in localStorage for persistence\n if (typeof window !== 'undefined') {\n localStorage.setItem('strands_auth_session', JSON.stringify(session))\n localStorage.setItem('strands_auth_user', JSON.stringify(authResponse.user))\n }\n \n console.log('Auth data stored successfully', { user: authResponse.user.email })\n } catch (error) {\n console.error('Failed to store auth data:', error)\n }\n }\n\n const initialize = async () => {\n if (isInitialized.value) return\n \n isLoading.value = true\n try {\n // Check for existing session/token in localStorage\n if (typeof window !== 'undefined') {\n const storedSession = localStorage.getItem('strands_auth_session')\n const storedUser = localStorage.getItem('strands_auth_user')\n \n if (storedSession && storedUser) {\n try {\n const session = JSON.parse(storedSession) as Session\n const user = JSON.parse(storedUser) as User\n \n // Convert expiresAt back to Date object\n session.expiresAt = new Date(session.expiresAt)\n \n // Check if session is still valid\n if (session.expiresAt > new Date()) {\n currentSession.value = session\n currentUser.value = user\n console.log('Restored auth session for user:', user.email)\n } else {\n // Session expired, clear storage\n localStorage.removeItem('strands_auth_session')\n localStorage.removeItem('strands_auth_user')\n console.log('Stored session expired, cleared from storage')\n }\n } catch (error) {\n console.warn('Failed to restore auth session:', error)\n // Clear corrupted data\n localStorage.removeItem('strands_auth_session')\n localStorage.removeItem('strands_auth_user')\n }\n }\n }\n \n isInitialized.value = true\n } catch (error) {\n console.error('Auth initialization error:', error)\n } finally {\n isLoading.value = false\n }\n }\n\n // Auto-initialize on first use\n if (!isInitialized.value) {\n initialize()\n }\n\n return {\n // State\n user: computed(() => currentUser.value),\n currentUser: computed(() => currentUser.value),\n currentSession: computed(() => currentSession.value),\n isAuthenticated,\n isLoading: computed(() => isLoading.value),\n loading: computed(() => loading.value),\n\n // Methods\n signIn,\n signUp,\n signOut,\n refreshToken,\n updateProfile,\n initialize,\n setAuthData,\n }\n}"],"names":["currentUser","ref","currentSession","loading","isLoading","isInitialized","useStrandsAuth","isAuthenticated","computed","signIn","credentials","signUp","userData","signOut","refreshToken","updateProfile","profileData","setAuthData","authResponse","session","error","initialize","storedSession","storedUser","user"],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ import { ref as u, computed as n } from "vue";
2
+ const s = u(null), o = u(null), l = u(!1), t = u(!1), i = u(!1);
3
+ function w() {
4
+ const f = n(() => s.value !== null), v = async (e) => {
5
+ t.value = !0;
6
+ try {
7
+ throw new Error("Sign in not implemented - please integrate with auth SDK");
8
+ } finally {
9
+ t.value = !1;
10
+ }
11
+ }, g = async (e) => {
12
+ t.value = !0;
13
+ try {
14
+ throw new Error("Sign up not implemented - please integrate with auth SDK");
15
+ } finally {
16
+ t.value = !1;
17
+ }
18
+ }, m = async () => {
19
+ t.value = !0;
20
+ try {
21
+ s.value = null, o.value = null, typeof window < "u" && (localStorage.removeItem("strands_auth_session"), localStorage.removeItem("strands_auth_user"));
22
+ } finally {
23
+ t.value = !1;
24
+ }
25
+ }, y = async () => {
26
+ o.value && (l.value = !0, l.value = !1);
27
+ }, h = async (e) => {
28
+ l.value = !0;
29
+ try {
30
+ s.value && Object.assign(s.value, e);
31
+ } finally {
32
+ l.value = !1;
33
+ }
34
+ }, S = (e) => {
35
+ try {
36
+ s.value = e.user;
37
+ const r = {
38
+ accessToken: e.access_token,
39
+ refreshToken: e.refresh_token,
40
+ expiresAt: new Date(Date.now() + 300 * 1e3),
41
+ // 5 minutes from now (matching API token expiry)
42
+ userId: e.user.id
43
+ };
44
+ o.value = r, typeof window < "u" && (localStorage.setItem("strands_auth_session", JSON.stringify(r)), localStorage.setItem("strands_auth_user", JSON.stringify(e.user))), console.log("Auth data stored successfully", { user: e.user.email });
45
+ } catch (r) {
46
+ console.error("Failed to store auth data:", r);
47
+ }
48
+ }, c = async () => {
49
+ if (!i.value) {
50
+ t.value = !0;
51
+ try {
52
+ if (typeof window < "u") {
53
+ const e = localStorage.getItem("strands_auth_session"), r = localStorage.getItem("strands_auth_user");
54
+ if (e && r)
55
+ try {
56
+ const a = JSON.parse(e), d = JSON.parse(r);
57
+ a.expiresAt = new Date(a.expiresAt), a.expiresAt > /* @__PURE__ */ new Date() ? (o.value = a, s.value = d, console.log("Restored auth session for user:", d.email)) : (localStorage.removeItem("strands_auth_session"), localStorage.removeItem("strands_auth_user"), console.log("Stored session expired, cleared from storage"));
58
+ } catch (a) {
59
+ console.warn("Failed to restore auth session:", a), localStorage.removeItem("strands_auth_session"), localStorage.removeItem("strands_auth_user");
60
+ }
61
+ }
62
+ i.value = !0;
63
+ } catch (e) {
64
+ console.error("Auth initialization error:", e);
65
+ } finally {
66
+ t.value = !1;
67
+ }
68
+ }
69
+ };
70
+ return i.value || c(), {
71
+ // State
72
+ user: n(() => s.value),
73
+ currentUser: n(() => s.value),
74
+ currentSession: n(() => o.value),
75
+ isAuthenticated: f,
76
+ isLoading: n(() => t.value),
77
+ loading: n(() => l.value),
78
+ // Methods
79
+ signIn: v,
80
+ signUp: g,
81
+ signOut: m,
82
+ refreshToken: y,
83
+ updateProfile: h,
84
+ initialize: c,
85
+ setAuthData: S
86
+ };
87
+ }
88
+ export {
89
+ w as u
90
+ };
91
+ //# sourceMappingURL=useStrandsAuth-DiD32KI7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useStrandsAuth-DiD32KI7.js","sources":["../../../apps/accounts-ui/src/vue/composables/useStrandsAuth.ts"],"sourcesContent":["import { ref, computed } from 'vue'\nimport type { User, Session, SignInCredentials, SignUpData, AuthResponse } from '../../types'\n\nconst currentUser = ref<User | null>(null)\nconst currentSession = ref<Session | null>(null)\nconst loading = ref(false)\nconst isLoading = ref(false)\nconst isInitialized = ref(false)\n\nexport function useStrandsAuth() {\n const isAuthenticated = computed(() => currentUser.value !== null)\n\n const signIn = async (credentials: SignInCredentials) => {\n isLoading.value = true\n try {\n // Integration point: Replace with actual auth SDK call\n // Example: const result = await authSDK.signIn(credentials)\n \n // For now, throw an error to indicate this needs implementation\n throw new Error('Sign in not implemented - please integrate with auth SDK')\n } finally {\n isLoading.value = false\n }\n }\n\n const signUp = async (userData: SignUpData) => {\n isLoading.value = true\n try {\n // Integration point: Replace with actual auth SDK call\n // Example: const result = await authSDK.signUp(userData)\n \n throw new Error('Sign up not implemented - please integrate with auth SDK')\n } finally {\n isLoading.value = false\n }\n }\n\n const signOut = async () => {\n isLoading.value = true\n try {\n // Integration point: Replace with actual auth SDK call\n // Example: await authSDK.signOut()\n \n currentUser.value = null\n currentSession.value = null\n \n // Clear stored tokens\n if (typeof window !== 'undefined') {\n localStorage.removeItem('strands_auth_session')\n localStorage.removeItem('strands_auth_user')\n }\n } finally {\n isLoading.value = false\n }\n }\n\n const refreshToken = async () => {\n if (!currentSession.value) return\n \n loading.value = true\n try {\n // Integration point: Replace with actual auth SDK call\n // Example: const newSession = await authSDK.refreshToken(currentSession.value.refreshToken)\n // currentSession.value = newSession\n } finally {\n loading.value = false\n }\n }\n\n const updateProfile = async (profileData: Partial<User>) => {\n loading.value = true\n try {\n // Integration point: Replace with actual auth SDK call\n // Example: const updatedUser = await authSDK.updateProfile(profileData)\n \n if (currentUser.value) {\n Object.assign(currentUser.value, profileData)\n }\n } finally {\n loading.value = false\n }\n }\n\n const setAuthData = (authResponse: AuthResponse) => {\n try {\n // Set current user\n currentUser.value = authResponse.user\n \n // Create session object\n const session: Session = {\n accessToken: authResponse.access_token,\n refreshToken: authResponse.refresh_token,\n expiresAt: new Date(Date.now() + 5 * 60 * 1000), // 5 minutes from now (matching API token expiry)\n userId: authResponse.user.id,\n }\n \n currentSession.value = session\n \n // Store in localStorage for persistence\n if (typeof window !== 'undefined') {\n localStorage.setItem('strands_auth_session', JSON.stringify(session))\n localStorage.setItem('strands_auth_user', JSON.stringify(authResponse.user))\n }\n \n console.log('Auth data stored successfully', { user: authResponse.user.email })\n } catch (error) {\n console.error('Failed to store auth data:', error)\n }\n }\n\n const initialize = async () => {\n if (isInitialized.value) return\n \n isLoading.value = true\n try {\n // Check for existing session/token in localStorage\n if (typeof window !== 'undefined') {\n const storedSession = localStorage.getItem('strands_auth_session')\n const storedUser = localStorage.getItem('strands_auth_user')\n \n if (storedSession && storedUser) {\n try {\n const session = JSON.parse(storedSession) as Session\n const user = JSON.parse(storedUser) as User\n \n // Convert expiresAt back to Date object\n session.expiresAt = new Date(session.expiresAt)\n \n // Check if session is still valid\n if (session.expiresAt > new Date()) {\n currentSession.value = session\n currentUser.value = user\n console.log('Restored auth session for user:', user.email)\n } else {\n // Session expired, clear storage\n localStorage.removeItem('strands_auth_session')\n localStorage.removeItem('strands_auth_user')\n console.log('Stored session expired, cleared from storage')\n }\n } catch (error) {\n console.warn('Failed to restore auth session:', error)\n // Clear corrupted data\n localStorage.removeItem('strands_auth_session')\n localStorage.removeItem('strands_auth_user')\n }\n }\n }\n \n isInitialized.value = true\n } catch (error) {\n console.error('Auth initialization error:', error)\n } finally {\n isLoading.value = false\n }\n }\n\n // Auto-initialize on first use\n if (!isInitialized.value) {\n initialize()\n }\n\n return {\n // State\n user: computed(() => currentUser.value),\n currentUser: computed(() => currentUser.value),\n currentSession: computed(() => currentSession.value),\n isAuthenticated,\n isLoading: computed(() => isLoading.value),\n loading: computed(() => loading.value),\n\n // Methods\n signIn,\n signUp,\n signOut,\n refreshToken,\n updateProfile,\n initialize,\n setAuthData,\n }\n}"],"names":["currentUser","ref","currentSession","loading","isLoading","isInitialized","useStrandsAuth","isAuthenticated","computed","signIn","credentials","signUp","userData","signOut","refreshToken","updateProfile","profileData","setAuthData","authResponse","session","error","initialize","storedSession","storedUser","user"],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import { ref as p, provide as v, inject as w, computed as f } from "vue";
2
+ const s = {
3
+ signIn: "/api/v1/auth/sign-in",
4
+ signUp: "/api/v1/auth/sign-up",
5
+ signOut: "/api/v1/auth/sign-out",
6
+ refresh: "/api/v1/auth/refresh",
7
+ passwordReset: "/api/v1/auth/password-reset",
8
+ passwordResetConfirm: "/api/v1/auth/password-reset/confirm",
9
+ profile: "/api/v1/user/profile",
10
+ verifyEmail: "/api/v1/auth/verify-email",
11
+ oauthProviders: "/api/v1/oauth/providers",
12
+ oauthProvider: "/api/v1/oauth/providers/{provider_id}"
13
+ }, d = Symbol("strands-config"), u = p(null);
14
+ function C(i) {
15
+ u.value = i, v(d, i);
16
+ }
17
+ function S(i) {
18
+ const l = w(d, null);
19
+ let e = null;
20
+ try {
21
+ if (typeof window < "u") {
22
+ if (window.__STRANDS_CONFIG__)
23
+ e = window.__STRANDS_CONFIG__, console.log("[useStrandsConfig] Found config from window.__STRANDS_CONFIG__:", e);
24
+ else if (window.__NUXT__) {
25
+ const o = window.__NUXT__;
26
+ console.log("[useStrandsConfig] window.__NUXT__ contents:", o), e = o?.config?.public?.strandsAuth || o?.public?.strandsAuth || o?.strandsAuth || o?.data?.[0]?.strandsAuth, console.log("[useStrandsConfig] Found nuxtConfig from window.__NUXT__:", e);
27
+ }
28
+ }
29
+ try {
30
+ if (typeof window < "u" && window.$nuxt) {
31
+ const o = window.$nuxt;
32
+ o?.$config?.public?.strandsAuth && (e = o.$config.public.strandsAuth, console.log("[useStrandsConfig] Found config from $nuxt.$config:", e));
33
+ }
34
+ } catch {
35
+ console.log("[useStrandsConfig] Could not access $nuxt instance");
36
+ }
37
+ } catch (o) {
38
+ console.log("[useStrandsConfig] Error accessing runtime config:", o);
39
+ }
40
+ const r = f(() => {
41
+ let o = l || u.value;
42
+ if (console.log("[useStrandsConfig] Debug info:", {
43
+ injectedConfig: l,
44
+ globalConfig: u.value,
45
+ nuxtConfig: e,
46
+ fallbackConfig: i,
47
+ currentConfig: o
48
+ }), !o && e && e.baseUrl && (o = {
49
+ baseUrl: e.baseUrl,
50
+ endpoints: e.endpoints || {},
51
+ supportEmail: e.supportEmail
52
+ }, console.log("[useStrandsConfig] Using Nuxt config fallback:", o)), !o && i && i.baseUrl && (o = i, console.log("[useStrandsConfig] Using provided fallback config:", o)), !o || !o.baseUrl)
53
+ if (process.env.NODE_ENV === "development" || typeof window < "u" && window.location.hostname === "localhost")
54
+ o = {
55
+ baseUrl: "http://localhost:8000",
56
+ endpoints: {}
57
+ }, console.warn("[useStrandsConfig] Using emergency development fallback config:", o);
58
+ else
59
+ throw console.error("[useStrandsConfig] No valid config found:", {
60
+ config: o,
61
+ hasBaseUrl: o?.baseUrl,
62
+ windowNuxt: typeof window < "u" ? window.__NUXT__ : "undefined"
63
+ }), new Error(
64
+ "StrandsAuth configuration is required. Please provide a baseUrl using provideStrandsConfig() or pass it as a prop."
65
+ );
66
+ return console.log("[useStrandsConfig] Using final config:", o), o;
67
+ }), a = f(() => {
68
+ const n = r.value.endpoints || {};
69
+ return {
70
+ signIn: n.signIn || s.signIn,
71
+ signUp: n.signUp || s.signUp,
72
+ signOut: n.signOut || s.signOut,
73
+ refresh: n.refresh || s.refresh,
74
+ passwordReset: n.passwordReset || s.passwordReset,
75
+ passwordResetConfirm: n.passwordResetConfirm || s.passwordResetConfirm,
76
+ profile: n.profile || s.profile,
77
+ verifyEmail: n.verifyEmail || s.verifyEmail,
78
+ oauthProviders: n.oauthProviders || s.oauthProviders,
79
+ oauthProvider: n.oauthProvider || s.oauthProvider
80
+ };
81
+ });
82
+ return {
83
+ config: r,
84
+ endpoints: a,
85
+ getUrl: (o) => {
86
+ const n = r.value;
87
+ if (!n.baseUrl)
88
+ throw new Error("Base URL is required in configuration");
89
+ let t;
90
+ typeof o == "string" && o in a.value ? t = a.value[o] : typeof o == "string" ? t = o : t = a.value[o];
91
+ const g = n.baseUrl.replace(/\/$/, ""), c = t.startsWith("/") ? t : `/${t}`;
92
+ return `${g}${c}`;
93
+ },
94
+ getSupportEmail: () => r.value.supportEmail || null
95
+ };
96
+ }
97
+ function U(i) {
98
+ u.value = i;
99
+ }
100
+ export {
101
+ C as provideStrandsConfig,
102
+ U as setStrandsConfig,
103
+ S as useStrandsConfig
104
+ };
105
+ //# sourceMappingURL=useStrandsConfig-CtzCmeS1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useStrandsConfig-CtzCmeS1.js","sources":["../../../apps/accounts-ui/src/vue/composables/useStrandsConfig.ts"],"sourcesContent":["import { ref, computed, inject, provide } from 'vue'\n\nexport interface StrandsAuthConfig {\n baseUrl: string\n supportEmail?: string\n endpoints?: {\n signIn?: string\n signUp?: string\n signOut?: string\n refresh?: string\n passwordReset?: string\n passwordResetConfirm?: string\n profile?: string\n verifyEmail?: string\n oauthProviders?: string\n oauthProvider?: string\n }\n}\n\nexport interface StrandsAuthEndpoints {\n signIn: string\n signUp: string\n signOut: string\n refresh: string\n passwordReset: string\n passwordResetConfirm: string\n profile: string\n verifyEmail: string\n oauthProviders: string\n oauthProvider: string\n}\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 provide(STRANDS_CONFIG_KEY, config)\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 // First check if we have access to useRuntimeConfig (in Nuxt context)\n if (typeof window !== 'undefined') {\n // First try our custom window global set by the plugin\n if ((window as any).__STRANDS_CONFIG__) {\n nuxtConfig = (window as any).__STRANDS_CONFIG__\n console.log('[useStrandsConfig] Found config from window.__STRANDS_CONFIG__:', nuxtConfig)\n }\n // Fallback to checking __NUXT__ if our custom global isn't set\n else if ((window as any).__NUXT__) {\n const nuxtData = (window as any).__NUXT__\n console.log('[useStrandsConfig] window.__NUXT__ contents:', nuxtData)\n \n // Try multiple possible paths for the config\n nuxtConfig = nuxtData?.config?.public?.strandsAuth ||\n nuxtData?.public?.strandsAuth ||\n nuxtData?.strandsAuth ||\n nuxtData?.data?.[0]?.strandsAuth // Sometimes it's nested in data array\n \n console.log('[useStrandsConfig] Found nuxtConfig from window.__NUXT__:', nuxtConfig)\n }\n }\n \n // Also try to access Nuxt's useRuntimeConfig if available\n try {\n // Check if we're in a Nuxt environment with access to $nuxt\n if (typeof window !== 'undefined' && (window as any).$nuxt) {\n const nuxtInstance = (window as any).$nuxt\n if (nuxtInstance?.$config?.public?.strandsAuth) {\n nuxtConfig = nuxtInstance.$config.public.strandsAuth\n console.log('[useStrandsConfig] Found config from $nuxt.$config:', nuxtConfig)\n }\n }\n } catch (e) {\n // Not in Nuxt context, continue with other fallbacks\n console.log('[useStrandsConfig] Could not access $nuxt instance')\n }\n \n } catch (e) {\n console.log('[useStrandsConfig] Error accessing runtime config:', e)\n }\n \n // Use injected config, then global config, then nuxt config, then fallback\n const activeConfig = computed(() => {\n let config = injectedConfig || globalConfig.value\n \n console.log('[useStrandsConfig] Debug info:', {\n injectedConfig: injectedConfig,\n globalConfig: globalConfig.value,\n nuxtConfig: nuxtConfig,\n fallbackConfig: fallbackConfig,\n currentConfig: config\n })\n \n // If no config yet and we have Nuxt config, use that\n if (!config && nuxtConfig && nuxtConfig.baseUrl) {\n config = {\n baseUrl: nuxtConfig.baseUrl,\n endpoints: nuxtConfig.endpoints || {},\n supportEmail: nuxtConfig.supportEmail\n }\n console.log('[useStrandsConfig] Using Nuxt config fallback:', config)\n }\n \n // Final fallback to provided fallback config\n if (!config && fallbackConfig && fallbackConfig.baseUrl) {\n config = fallbackConfig as StrandsAuthConfig\n console.log('[useStrandsConfig] Using provided fallback config:', config)\n }\n\n // Emergency fallback - check if this is development mode and use localhost\n if (!config || !config.baseUrl) {\n // Check if we're in development and can use a default baseUrl\n const isDevelopment = process.env['NODE_ENV'] === 'development' || \n (typeof window !== 'undefined' && window.location.hostname === 'localhost')\n \n if (isDevelopment) {\n config = {\n baseUrl: 'http://localhost:8000',\n endpoints: {}\n }\n console.warn('[useStrandsConfig] Using emergency development fallback config:', config)\n } else {\n console.error('[useStrandsConfig] No valid config found:', {\n config: config,\n hasBaseUrl: config?.baseUrl,\n windowNuxt: typeof window !== 'undefined' ? (window as any).__NUXT__ : 'undefined'\n })\n throw new Error(\n 'StrandsAuth configuration is required. Please provide a baseUrl using provideStrandsConfig() or pass it as a prop.'\n )\n }\n }\n \n console.log('[useStrandsConfig] Using final config:', config)\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":["DEFAULT_ENDPOINTS","STRANDS_CONFIG_KEY","globalConfig","ref","provideStrandsConfig","config","provide","useStrandsConfig","fallbackConfig","injectedConfig","inject","nuxtConfig","nuxtData","nuxtInstance","e","activeConfig","computed","endpoints","customEndpoints","endpoint","endpointPath","baseUrl","path","setStrandsConfig"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("vue"),s={signIn:"/api/v1/auth/sign-in",signUp:"/api/v1/auth/sign-up",signOut:"/api/v1/auth/sign-out",refresh:"/api/v1/auth/refresh",passwordReset:"/api/v1/auth/password-reset",passwordResetConfirm:"/api/v1/auth/password-reset/confirm",profile:"/api/v1/user/profile",verifyEmail:"/api/v1/auth/verify-email",oauthProviders:"/api/v1/oauth/providers",oauthProvider:"/api/v1/oauth/providers/{provider_id}"},f=Symbol("strands-config"),l=r.ref(null);function p(i){l.value=i,r.provide(f,i)}function v(i){const d=r.inject(f,null);let e=null;try{if(typeof window<"u"){if(window.__STRANDS_CONFIG__)e=window.__STRANDS_CONFIG__,console.log("[useStrandsConfig] Found config from window.__STRANDS_CONFIG__:",e);else if(window.__NUXT__){const n=window.__NUXT__;console.log("[useStrandsConfig] window.__NUXT__ contents:",n),e=n?.config?.public?.strandsAuth||n?.public?.strandsAuth||n?.strandsAuth||n?.data?.[0]?.strandsAuth,console.log("[useStrandsConfig] Found nuxtConfig from window.__NUXT__:",e)}}try{if(typeof window<"u"&&window.$nuxt){const n=window.$nuxt;n?.$config?.public?.strandsAuth&&(e=n.$config.public.strandsAuth,console.log("[useStrandsConfig] Found config from $nuxt.$config:",e))}}catch{console.log("[useStrandsConfig] Could not access $nuxt instance")}}catch(n){console.log("[useStrandsConfig] Error accessing runtime config:",n)}const a=r.computed(()=>{let n=d||l.value;if(console.log("[useStrandsConfig] Debug info:",{injectedConfig:d,globalConfig:l.value,nuxtConfig:e,fallbackConfig:i,currentConfig:n}),!n&&e&&e.baseUrl&&(n={baseUrl:e.baseUrl,endpoints:e.endpoints||{},supportEmail:e.supportEmail},console.log("[useStrandsConfig] Using Nuxt config fallback:",n)),!n&&i&&i.baseUrl&&(n=i,console.log("[useStrandsConfig] Using provided fallback config:",n)),!n||!n.baseUrl)if(process.env.NODE_ENV==="development"||typeof window<"u"&&window.location.hostname==="localhost")n={baseUrl:"http://localhost:8000",endpoints:{}},console.warn("[useStrandsConfig] Using emergency development fallback config:",n);else throw console.error("[useStrandsConfig] No valid config found:",{config:n,hasBaseUrl:n?.baseUrl,windowNuxt:typeof window<"u"?window.__NUXT__:"undefined"}),new Error("StrandsAuth configuration is required. Please provide a baseUrl using provideStrandsConfig() or pass it as a prop.");return console.log("[useStrandsConfig] Using final config:",n),n}),u=r.computed(()=>{const o=a.value.endpoints||{};return{signIn:o.signIn||s.signIn,signUp:o.signUp||s.signUp,signOut:o.signOut||s.signOut,refresh:o.refresh||s.refresh,passwordReset:o.passwordReset||s.passwordReset,passwordResetConfirm:o.passwordResetConfirm||s.passwordResetConfirm,profile:o.profile||s.profile,verifyEmail:o.verifyEmail||s.verifyEmail,oauthProviders:o.oauthProviders||s.oauthProviders,oauthProvider:o.oauthProvider||s.oauthProvider}});return{config:a,endpoints:u,getUrl:n=>{const o=a.value;if(!o.baseUrl)throw new Error("Base URL is required in configuration");let t;typeof n=="string"&&n in u.value?t=u.value[n]:typeof n=="string"?t=n:t=u.value[n];const g=o.baseUrl.replace(/\/$/,""),c=t.startsWith("/")?t:`/${t}`;return`${g}${c}`},getSupportEmail:()=>a.value.supportEmail||null}}function w(i){l.value=i}exports.provideStrandsConfig=p;exports.setStrandsConfig=w;exports.useStrandsConfig=v;
2
+ //# sourceMappingURL=useStrandsConfig-DamqmMUO.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useStrandsConfig-DamqmMUO.cjs","sources":["../../../apps/accounts-ui/src/vue/composables/useStrandsConfig.ts"],"sourcesContent":["import { ref, computed, inject, provide } from 'vue'\n\nexport interface StrandsAuthConfig {\n baseUrl: string\n supportEmail?: string\n endpoints?: {\n signIn?: string\n signUp?: string\n signOut?: string\n refresh?: string\n passwordReset?: string\n passwordResetConfirm?: string\n profile?: string\n verifyEmail?: string\n oauthProviders?: string\n oauthProvider?: string\n }\n}\n\nexport interface StrandsAuthEndpoints {\n signIn: string\n signUp: string\n signOut: string\n refresh: string\n passwordReset: string\n passwordResetConfirm: string\n profile: string\n verifyEmail: string\n oauthProviders: string\n oauthProvider: string\n}\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 provide(STRANDS_CONFIG_KEY, config)\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 // First check if we have access to useRuntimeConfig (in Nuxt context)\n if (typeof window !== 'undefined') {\n // First try our custom window global set by the plugin\n if ((window as any).__STRANDS_CONFIG__) {\n nuxtConfig = (window as any).__STRANDS_CONFIG__\n console.log('[useStrandsConfig] Found config from window.__STRANDS_CONFIG__:', nuxtConfig)\n }\n // Fallback to checking __NUXT__ if our custom global isn't set\n else if ((window as any).__NUXT__) {\n const nuxtData = (window as any).__NUXT__\n console.log('[useStrandsConfig] window.__NUXT__ contents:', nuxtData)\n \n // Try multiple possible paths for the config\n nuxtConfig = nuxtData?.config?.public?.strandsAuth ||\n nuxtData?.public?.strandsAuth ||\n nuxtData?.strandsAuth ||\n nuxtData?.data?.[0]?.strandsAuth // Sometimes it's nested in data array\n \n console.log('[useStrandsConfig] Found nuxtConfig from window.__NUXT__:', nuxtConfig)\n }\n }\n \n // Also try to access Nuxt's useRuntimeConfig if available\n try {\n // Check if we're in a Nuxt environment with access to $nuxt\n if (typeof window !== 'undefined' && (window as any).$nuxt) {\n const nuxtInstance = (window as any).$nuxt\n if (nuxtInstance?.$config?.public?.strandsAuth) {\n nuxtConfig = nuxtInstance.$config.public.strandsAuth\n console.log('[useStrandsConfig] Found config from $nuxt.$config:', nuxtConfig)\n }\n }\n } catch (e) {\n // Not in Nuxt context, continue with other fallbacks\n console.log('[useStrandsConfig] Could not access $nuxt instance')\n }\n \n } catch (e) {\n console.log('[useStrandsConfig] Error accessing runtime config:', e)\n }\n \n // Use injected config, then global config, then nuxt config, then fallback\n const activeConfig = computed(() => {\n let config = injectedConfig || globalConfig.value\n \n console.log('[useStrandsConfig] Debug info:', {\n injectedConfig: injectedConfig,\n globalConfig: globalConfig.value,\n nuxtConfig: nuxtConfig,\n fallbackConfig: fallbackConfig,\n currentConfig: config\n })\n \n // If no config yet and we have Nuxt config, use that\n if (!config && nuxtConfig && nuxtConfig.baseUrl) {\n config = {\n baseUrl: nuxtConfig.baseUrl,\n endpoints: nuxtConfig.endpoints || {},\n supportEmail: nuxtConfig.supportEmail\n }\n console.log('[useStrandsConfig] Using Nuxt config fallback:', config)\n }\n \n // Final fallback to provided fallback config\n if (!config && fallbackConfig && fallbackConfig.baseUrl) {\n config = fallbackConfig as StrandsAuthConfig\n console.log('[useStrandsConfig] Using provided fallback config:', config)\n }\n\n // Emergency fallback - check if this is development mode and use localhost\n if (!config || !config.baseUrl) {\n // Check if we're in development and can use a default baseUrl\n const isDevelopment = process.env['NODE_ENV'] === 'development' || \n (typeof window !== 'undefined' && window.location.hostname === 'localhost')\n \n if (isDevelopment) {\n config = {\n baseUrl: 'http://localhost:8000',\n endpoints: {}\n }\n console.warn('[useStrandsConfig] Using emergency development fallback config:', config)\n } else {\n console.error('[useStrandsConfig] No valid config found:', {\n config: config,\n hasBaseUrl: config?.baseUrl,\n windowNuxt: typeof window !== 'undefined' ? (window as any).__NUXT__ : 'undefined'\n })\n throw new Error(\n 'StrandsAuth configuration is required. Please provide a baseUrl using provideStrandsConfig() or pass it as a prop.'\n )\n }\n }\n \n console.log('[useStrandsConfig] Using final config:', config)\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":["DEFAULT_ENDPOINTS","STRANDS_CONFIG_KEY","globalConfig","ref","provideStrandsConfig","config","provide","useStrandsConfig","fallbackConfig","injectedConfig","inject","nuxtConfig","nuxtData","nuxtInstance","e","activeConfig","computed","endpoints","customEndpoints","endpoint","endpointPath","baseUrl","path","setStrandsConfig"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"StrandsAuth.vue.d.ts","sourceRoot":"","sources":["../../../../../apps/accounts-ui/src/vue/components/StrandsAuth.vue"],"names":[],"mappings":"AA4JA;AAiiBA,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAG1F,UAAU,KAAK;IACb,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,gBAAgB,CAAA;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC3B;;;;;;;;;;;;;;iBAHe,MAAM;UADb,QAAQ,GAAG,QAAQ,GAAG,gBAAgB;;AA4zB/C,wBASG"}
1
+ {"version":3,"file":"StrandsAuth.vue.d.ts","sourceRoot":"","sources":["../../../../../apps/accounts-ui/src/vue/components/StrandsAuth.vue"],"names":[],"mappings":"AA4JA;AA6hBA,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAG1F,UAAU,KAAK;IACb,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,gBAAgB,CAAA;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC3B;;;;;;;;;;;;;;iBAHe,MAAM;UADb,QAAQ,GAAG,QAAQ,GAAG,gBAAgB;;AA6zB/C,wBASG"}
@@ -1 +1 @@
1
- {"version":3,"file":"StrandsCompleteSignUp.vue.d.ts","sourceRoot":"","sources":["../../../../../apps/accounts-ui/src/vue/components/StrandsCompleteSignUp.vue"],"names":[],"mappings":"AAuLA;AAmXA,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAE1F,UAAU,KAAK;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC3B;;;;;;;;;;;;;;iBAFe,MAAM;;AA2nBtB,wBAQG"}
1
+ {"version":3,"file":"StrandsCompleteSignUp.vue.d.ts","sourceRoot":"","sources":["../../../../../apps/accounts-ui/src/vue/components/StrandsCompleteSignUp.vue"],"names":[],"mappings":"AAuLA;AAgYA,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAI1F,UAAU,KAAK;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC3B;;;;;;;;;;;;;;iBAFe,MAAM;;AA2oBtB,wBAQG"}
@@ -1,11 +1,15 @@
1
- declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
1
+ import { StrandsAuthConfig } from '../composables/useStrandsConfig';
2
+ interface Props {
3
+ config?: StrandsAuthConfig;
4
+ }
5
+ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
2
6
  success: (email: string) => any;
3
7
  error: (error: string) => any;
4
8
  "back-to-signin": () => any;
5
- }, string, import('vue').PublicProps, Readonly<{}> & Readonly<{
9
+ }, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
6
10
  onSuccess?: ((email: string) => any) | undefined;
7
11
  onError?: ((error: string) => any) | undefined;
8
12
  "onBack-to-signin"?: (() => any) | undefined;
9
- }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
13
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
10
14
  export default _default;
11
15
  //# sourceMappingURL=StrandsPasswordReset.vue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StrandsPasswordReset.vue.d.ts","sourceRoot":"","sources":["../../../../../apps/accounts-ui/src/vue/components/StrandsPasswordReset.vue"],"names":[],"mappings":"AAuDA;;;;;;;;;;AA4WA,wBAOG"}
1
+ {"version":3,"file":"StrandsPasswordReset.vue.d.ts","sourceRoot":"","sources":["../../../../../apps/accounts-ui/src/vue/components/StrandsPasswordReset.vue"],"names":[],"mappings":"AAuDA;AA+GA,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAE1F,UAAU,KAAK;IACb,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC3B;;;;;;;;;;AAoRD,wBASG"}
@@ -1,3 +1,7 @@
1
- declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
1
+ import { StrandsAuthConfig } from '../composables/useStrandsConfig';
2
+ interface Props {
3
+ config?: StrandsAuthConfig;
4
+ }
5
+ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
2
6
  export default _default;
3
7
  //# sourceMappingURL=StrandsSecuredFooter.vue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StrandsSecuredFooter.vue.d.ts","sourceRoot":"","sources":["../../../../../apps/accounts-ui/src/vue/components/StrandsSecuredFooter.vue"],"names":[],"mappings":";AA8CA,wBAMG"}
1
+ {"version":3,"file":"StrandsSecuredFooter.vue.d.ts","sourceRoot":"","sources":["../../../../../apps/accounts-ui/src/vue/components/StrandsSecuredFooter.vue"],"names":[],"mappings":"AAKA;AA2BA,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAE1F,UAAU,KAAK;IACb,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC3B;;AA4DD,wBAOG"}
@@ -1 +1 @@
1
- {"version":3,"file":"StrandsSignIn.vue.d.ts","sourceRoot":"","sources":["../../../../../apps/accounts-ui/src/vue/components/StrandsSignIn.vue"],"names":[],"mappings":"AAqGA;AAgMA,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAG1F,UAAU,KAAK;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC3B;;;;;;;;;;;;iBAHe,MAAM;iBACN,MAAM,EAAE;;AAkbxB,wBASG"}
1
+ {"version":3,"file":"StrandsSignIn.vue.d.ts","sourceRoot":"","sources":["../../../../../apps/accounts-ui/src/vue/components/StrandsSignIn.vue"],"names":[],"mappings":"AAqGA;AAgMA,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAG1F,UAAU,KAAK;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC3B;;;;;;;;;;;;iBAHe,MAAM;iBACN,MAAM,EAAE;;AAubxB,wBASG"}
@@ -1 +1 @@
1
- {"version":3,"file":"StrandsSignUp.vue.d.ts","sourceRoot":"","sources":["../../../../../apps/accounts-ui/src/vue/components/StrandsSignUp.vue"],"names":[],"mappings":"AA0HA;AAyNA,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAG1F,UAAU,KAAK;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC3B;;;;;;;;;;iBAHe,MAAM;iBACN,MAAM,EAAE;;AAqXxB,wBASG"}
1
+ {"version":3,"file":"StrandsSignUp.vue.d.ts","sourceRoot":"","sources":["../../../../../apps/accounts-ui/src/vue/components/StrandsSignUp.vue"],"names":[],"mappings":"AAiJA;AA6TA,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAG1F,UAAU,KAAK;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC3B;;;;;;;;;;iBAHe,MAAM;iBACN,MAAM,EAAE;;AA0gBxB,wBASG"}
@@ -1,3 +1,4 @@
1
+ import { StrandsAuthConfig } from '../composables/useStrandsConfig';
1
2
  interface User {
2
3
  id: string;
3
4
  email: string;
@@ -11,6 +12,7 @@ interface User {
11
12
  }
12
13
  interface Props {
13
14
  user?: User;
15
+ config?: StrandsAuthConfig;
14
16
  }
15
17
  declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
16
18
  error: (error: string) => any;
@@ -1 +1 @@
1
- {"version":3,"file":"StrandsUserProfile.vue.d.ts","sourceRoot":"","sources":["../../../../../apps/accounts-ui/src/vue/components/StrandsUserProfile.vue"],"names":[],"mappings":"AAmRA;AAycA,UAAU,IAAI;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,OAAO,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,UAAU,KAAK;IACb,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ;;;;;;;;;;;;AA4lBD,wBAQG"}
1
+ {"version":3,"file":"StrandsUserProfile.vue.d.ts","sourceRoot":"","sources":["../../../../../apps/accounts-ui/src/vue/components/StrandsUserProfile.vue"],"names":[],"mappings":"AAmRA;AA6cA,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAE1F,UAAU,IAAI;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,OAAO,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,UAAU,KAAK;IACb,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC3B;;;;;;;;;;;;AAomBD,wBAQG"}
@@ -1,4 +1,4 @@
1
- import { User, SignInCredentials, SignUpData } from '../../types';
1
+ import { User, SignInCredentials, SignUpData, AuthResponse } from '../../types';
2
2
  export declare function useStrandsAuth(): {
3
3
  user: import('vue').ComputedRef<{
4
4
  id: string;
@@ -41,5 +41,6 @@ export declare function useStrandsAuth(): {
41
41
  refreshToken: () => Promise<void>;
42
42
  updateProfile: (profileData: Partial<User>) => Promise<void>;
43
43
  initialize: () => Promise<void>;
44
+ setAuthData: (authResponse: AuthResponse) => void;
44
45
  };
45
46
  //# sourceMappingURL=useStrandsAuth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useStrandsAuth.d.ts","sourceRoot":"","sources":["../../../../../apps/accounts-ui/src/vue/composables/useStrandsAuth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAW,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAQ/E,wBAAgB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAGS,iBAAiB;uBAatB,UAAU;;;iCAsCA,OAAO,CAAC,IAAI,CAAC;;EAqDxD"}
1
+ {"version":3,"file":"useStrandsAuth.d.ts","sourceRoot":"","sources":["../../../../../apps/accounts-ui/src/vue/composables/useStrandsAuth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAW,iBAAiB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAQ7F,wBAAgB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAGS,iBAAiB;uBAatB,UAAU;;;iCA4CA,OAAO,CAAC,IAAI,CAAC;;gCAcpB,YAAY;EAgGhD"}
@@ -1,5 +1,6 @@
1
1
  export interface StrandsAuthConfig {
2
2
  baseUrl: string;
3
+ supportEmail?: string;
3
4
  endpoints?: {
4
5
  signIn?: string;
5
6
  signUp?: string;
@@ -30,6 +31,7 @@ export declare function useStrandsConfig(fallbackConfig?: Partial<StrandsAuthCon
30
31
  config: import('vue').ComputedRef<StrandsAuthConfig>;
31
32
  endpoints: import('vue').ComputedRef<StrandsAuthEndpoints>;
32
33
  getUrl: (endpoint: keyof StrandsAuthEndpoints | string) => string;
34
+ getSupportEmail: () => string | null;
33
35
  };
34
36
  export declare function setStrandsConfig(config: StrandsAuthConfig): void;
35
37
  //# sourceMappingURL=useStrandsConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useStrandsConfig.d.ts","sourceRoot":"","sources":["../../../../../apps/accounts-ui/src/vue/composables/useStrandsConfig.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE;QACV,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,oBAAoB,CAAC,EAAE,MAAM,CAAA;QAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;CACF;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;CACtB;AAoBD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,QAG7D;AAED,wBAAgB,gBAAgB,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC;;;uBA0FhD,MAAM,oBAAoB,GAAG,MAAM;EA8B9D;AAGD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,QAEzD"}
1
+ {"version":3,"file":"useStrandsConfig.d.ts","sourceRoot":"","sources":["../../../../../apps/accounts-ui/src/vue/composables/useStrandsConfig.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE;QACV,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,oBAAoB,CAAC,EAAE,MAAM,CAAA;QAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;CACF;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;CACtB;AAoBD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,QAG7D;AAED,wBAAgB,gBAAgB,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC;;;uBA0HhD,MAAM,oBAAoB,GAAG,MAAM;;EAoC9D;AAGD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,QAEzD"}
@@ -1 +1 @@
1
- {"version":3,"file":"UiInput.vue.d.ts","sourceRoot":"","sources":["../../../../../apps/accounts-ui/src/vue/ui/UiInput.vue"],"names":[],"mappings":"AAsCA;AAwHA,UAAU,KAAK;IACb,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC5B,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAA;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;CAC1B;AAuED,iBAAS,cAAc;WAkHT,OAAO,IAA6B;;sBAVxB,GAAG;;;;EAe5B;AAgBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;;UAxNZ,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK;UAQxD,IAAI,GAAG,IAAI,GAAG,IAAI;wFAyNzB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"UiInput.vue.d.ts","sourceRoot":"","sources":["../../../../../apps/accounts-ui/src/vue/ui/UiInput.vue"],"names":[],"mappings":"AAsCA;AAgPA,UAAU,KAAK;IACb,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC5B,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAA;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;CAC1B;AAuED,iBAAS,cAAc;WA4HT,OAAO,IAA6B;;sBAVxB,GAAG;;;;EAe5B;AAgBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;;UAlOZ,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK;UAQxD,IAAI,GAAG,IAAI,GAAG,IAAI;wFAmOzB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strands.gg/accui",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "description": "Strands Authentication UI Components",
5
5
  "type": "module",
6
6
  "main": "./dist/strands-auth-ui.cjs.js",
@@ -1,66 +0,0 @@
1
- import { ref as r, computed as a } from "vue";
2
- const l = r(null), u = r(null), t = r(!1), e = r(!1), s = r(!1);
3
- function h() {
4
- const o = a(() => l.value !== null), c = async (n) => {
5
- e.value = !0;
6
- try {
7
- throw new Error("Sign in not implemented - please integrate with auth SDK");
8
- } finally {
9
- e.value = !1;
10
- }
11
- }, v = async (n) => {
12
- e.value = !0;
13
- try {
14
- throw new Error("Sign up not implemented - please integrate with auth SDK");
15
- } finally {
16
- e.value = !1;
17
- }
18
- }, f = async () => {
19
- e.value = !0;
20
- try {
21
- l.value = null, u.value = null;
22
- } finally {
23
- e.value = !1;
24
- }
25
- }, y = async () => {
26
- u.value && (t.value = !0, t.value = !1);
27
- }, d = async (n) => {
28
- t.value = !0;
29
- try {
30
- l.value && Object.assign(l.value, n);
31
- } finally {
32
- t.value = !1;
33
- }
34
- }, i = async () => {
35
- if (!s.value) {
36
- e.value = !0;
37
- try {
38
- s.value = !0;
39
- } catch (n) {
40
- console.error("Auth initialization error:", n);
41
- } finally {
42
- e.value = !1;
43
- }
44
- }
45
- };
46
- return s.value || i(), {
47
- // State
48
- user: a(() => l.value),
49
- currentUser: a(() => l.value),
50
- currentSession: a(() => u.value),
51
- isAuthenticated: o,
52
- isLoading: a(() => e.value),
53
- loading: a(() => t.value),
54
- // Methods
55
- signIn: c,
56
- signUp: v,
57
- signOut: f,
58
- refreshToken: y,
59
- updateProfile: d,
60
- initialize: i
61
- };
62
- }
63
- export {
64
- h as u
65
- };
66
- //# sourceMappingURL=useStrandsAuth-Bh7evftS.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useStrandsAuth-Bh7evftS.js","sources":["../../../apps/accounts-ui/src/vue/composables/useStrandsAuth.ts"],"sourcesContent":["import { ref, computed } from 'vue'\nimport type { User, Session, SignInCredentials, SignUpData } from '../../types'\n\nconst currentUser = ref<User | null>(null)\nconst currentSession = ref<Session | null>(null)\nconst loading = ref(false)\nconst isLoading = ref(false)\nconst isInitialized = ref(false)\n\nexport function useStrandsAuth() {\n const isAuthenticated = computed(() => currentUser.value !== null)\n\n const signIn = async (credentials: SignInCredentials) => {\n isLoading.value = true\n try {\n // Integration point: Replace with actual auth SDK call\n // Example: const result = await authSDK.signIn(credentials)\n \n // For now, throw an error to indicate this needs implementation\n throw new Error('Sign in not implemented - please integrate with auth SDK')\n } finally {\n isLoading.value = false\n }\n }\n\n const signUp = async (userData: SignUpData) => {\n isLoading.value = true\n try {\n // Integration point: Replace with actual auth SDK call\n // Example: const result = await authSDK.signUp(userData)\n \n throw new Error('Sign up not implemented - please integrate with auth SDK')\n } finally {\n isLoading.value = false\n }\n }\n\n const signOut = async () => {\n isLoading.value = true\n try {\n // Integration point: Replace with actual auth SDK call\n // Example: await authSDK.signOut()\n \n currentUser.value = null\n currentSession.value = null\n } finally {\n isLoading.value = false\n }\n }\n\n const refreshToken = async () => {\n if (!currentSession.value) return\n \n loading.value = true\n try {\n // Integration point: Replace with actual auth SDK call\n // Example: const newSession = await authSDK.refreshToken(currentSession.value.refreshToken)\n // currentSession.value = newSession\n } finally {\n loading.value = false\n }\n }\n\n const updateProfile = async (profileData: Partial<User>) => {\n loading.value = true\n try {\n // Integration point: Replace with actual auth SDK call\n // Example: const updatedUser = await authSDK.updateProfile(profileData)\n \n if (currentUser.value) {\n Object.assign(currentUser.value, profileData)\n }\n } finally {\n loading.value = false\n }\n }\n\n const initialize = async () => {\n if (isInitialized.value) return\n \n isLoading.value = true\n try {\n // Integration point: Check for existing session/token in localStorage, etc.\n // Example: const storedSession = localStorage.getItem('auth_session')\n // if (storedSession) { /* restore session */ }\n \n isInitialized.value = true\n } catch (error) {\n console.error('Auth initialization error:', error)\n } finally {\n isLoading.value = false\n }\n }\n\n // Auto-initialize on first use\n if (!isInitialized.value) {\n initialize()\n }\n\n return {\n // State\n user: computed(() => currentUser.value),\n currentUser: computed(() => currentUser.value),\n currentSession: computed(() => currentSession.value),\n isAuthenticated,\n isLoading: computed(() => isLoading.value),\n loading: computed(() => loading.value),\n\n // Methods\n signIn,\n signUp,\n signOut,\n refreshToken,\n updateProfile,\n initialize,\n }\n}"],"names":["currentUser","ref","currentSession","loading","isLoading","isInitialized","useStrandsAuth","isAuthenticated","computed","signIn","credentials","signUp","userData","signOut","refreshToken","updateProfile","profileData","initialize","error"],"mappings":";AAGA,MAAMA,IAAcC,EAAiB,IAAI,GACnCC,IAAiBD,EAAoB,IAAI,GACzCE,IAAUF,EAAI,EAAK,GACnBG,IAAYH,EAAI,EAAK,GACrBI,IAAgBJ,EAAI,EAAK;AAExB,SAASK,IAAiB;AAC/B,QAAMC,IAAkBC,EAAS,MAAMR,EAAY,UAAU,IAAI,GAEzDS,IAAS,OAAOC,MAAmC;AACzD,IAAAN,EAAU,QAAQ;AAClB,QAAI;AAKF,YAAM,IAAI,MAAM,0DAA0D;AAAA,IAC5E,UAAA;AACE,MAAAA,EAAU,QAAQ;AAAA,IACpB;AAAA,EACF,GAEMO,IAAS,OAAOC,MAAyB;AAC7C,IAAAR,EAAU,QAAQ;AAClB,QAAI;AAIF,YAAM,IAAI,MAAM,0DAA0D;AAAA,IAC5E,UAAA;AACE,MAAAA,EAAU,QAAQ;AAAA,IACpB;AAAA,EACF,GAEMS,IAAU,YAAY;AAC1B,IAAAT,EAAU,QAAQ;AAClB,QAAI;AAIF,MAAAJ,EAAY,QAAQ,MACpBE,EAAe,QAAQ;AAAA,IACzB,UAAA;AACE,MAAAE,EAAU,QAAQ;AAAA,IACpB;AAAA,EACF,GAEMU,IAAe,YAAY;AAC/B,IAAKZ,EAAe,UAEpBC,EAAQ,QAAQ,IAMdA,EAAQ,QAAQ;AAAA,EAEpB,GAEMY,IAAgB,OAAOC,MAA+B;AAC1D,IAAAb,EAAQ,QAAQ;AAChB,QAAI;AAIF,MAAIH,EAAY,SACd,OAAO,OAAOA,EAAY,OAAOgB,CAAW;AAAA,IAEhD,UAAA;AACE,MAAAb,EAAQ,QAAQ;AAAA,IAClB;AAAA,EACF,GAEMc,IAAa,YAAY;AAC7B,QAAI,CAAAZ,EAAc,OAElB;AAAA,MAAAD,EAAU,QAAQ;AAClB,UAAI;AAKF,QAAAC,EAAc,QAAQ;AAAA,MACxB,SAASa,GAAO;AACd,gBAAQ,MAAM,8BAA8BA,CAAK;AAAA,MACnD,UAAA;AACE,QAAAd,EAAU,QAAQ;AAAA,MACpB;AAAA;AAAA,EACF;AAGA,SAAKC,EAAc,SACjBY,EAAA,GAGK;AAAA;AAAA,IAEL,MAAMT,EAAS,MAAMR,EAAY,KAAK;AAAA,IACtC,aAAaQ,EAAS,MAAMR,EAAY,KAAK;AAAA,IAC7C,gBAAgBQ,EAAS,MAAMN,EAAe,KAAK;AAAA,IACnD,iBAAAK;AAAA,IACA,WAAWC,EAAS,MAAMJ,EAAU,KAAK;AAAA,IACzC,SAASI,EAAS,MAAML,EAAQ,KAAK;AAAA;AAAA,IAGrC,QAAAM;AAAA,IACA,QAAAE;AAAA,IACA,SAAAE;AAAA,IACA,cAAAC;AAAA,IACA,eAAAC;AAAA,IACA,YAAAE;AAAA,EAAA;AAEJ;"}
@@ -1,2 +0,0 @@
1
- "use strict";const e=require("vue"),n=e.ref(null),u=e.ref(null),l=e.ref(!1),t=e.ref(!1),r=e.ref(!1);function y(){const i=e.computed(()=>n.value!==null),o=async a=>{t.value=!0;try{throw new Error("Sign in not implemented - please integrate with auth SDK")}finally{t.value=!1}},c=async a=>{t.value=!0;try{throw new Error("Sign up not implemented - please integrate with auth SDK")}finally{t.value=!1}},f=async()=>{t.value=!0;try{n.value=null,u.value=null}finally{t.value=!1}},v=async()=>{u.value&&(l.value=!0,l.value=!1)},d=async a=>{l.value=!0;try{n.value&&Object.assign(n.value,a)}finally{l.value=!1}},s=async()=>{if(!r.value){t.value=!0;try{r.value=!0}catch(a){console.error("Auth initialization error:",a)}finally{t.value=!1}}};return r.value||s(),{user:e.computed(()=>n.value),currentUser:e.computed(()=>n.value),currentSession:e.computed(()=>u.value),isAuthenticated:i,isLoading:e.computed(()=>t.value),loading:e.computed(()=>l.value),signIn:o,signUp:c,signOut:f,refreshToken:v,updateProfile:d,initialize:s}}exports.useStrandsAuth=y;
2
- //# sourceMappingURL=useStrandsAuth-sAfTQeGC.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useStrandsAuth-sAfTQeGC.cjs","sources":["../../../apps/accounts-ui/src/vue/composables/useStrandsAuth.ts"],"sourcesContent":["import { ref, computed } from 'vue'\nimport type { User, Session, SignInCredentials, SignUpData } from '../../types'\n\nconst currentUser = ref<User | null>(null)\nconst currentSession = ref<Session | null>(null)\nconst loading = ref(false)\nconst isLoading = ref(false)\nconst isInitialized = ref(false)\n\nexport function useStrandsAuth() {\n const isAuthenticated = computed(() => currentUser.value !== null)\n\n const signIn = async (credentials: SignInCredentials) => {\n isLoading.value = true\n try {\n // Integration point: Replace with actual auth SDK call\n // Example: const result = await authSDK.signIn(credentials)\n \n // For now, throw an error to indicate this needs implementation\n throw new Error('Sign in not implemented - please integrate with auth SDK')\n } finally {\n isLoading.value = false\n }\n }\n\n const signUp = async (userData: SignUpData) => {\n isLoading.value = true\n try {\n // Integration point: Replace with actual auth SDK call\n // Example: const result = await authSDK.signUp(userData)\n \n throw new Error('Sign up not implemented - please integrate with auth SDK')\n } finally {\n isLoading.value = false\n }\n }\n\n const signOut = async () => {\n isLoading.value = true\n try {\n // Integration point: Replace with actual auth SDK call\n // Example: await authSDK.signOut()\n \n currentUser.value = null\n currentSession.value = null\n } finally {\n isLoading.value = false\n }\n }\n\n const refreshToken = async () => {\n if (!currentSession.value) return\n \n loading.value = true\n try {\n // Integration point: Replace with actual auth SDK call\n // Example: const newSession = await authSDK.refreshToken(currentSession.value.refreshToken)\n // currentSession.value = newSession\n } finally {\n loading.value = false\n }\n }\n\n const updateProfile = async (profileData: Partial<User>) => {\n loading.value = true\n try {\n // Integration point: Replace with actual auth SDK call\n // Example: const updatedUser = await authSDK.updateProfile(profileData)\n \n if (currentUser.value) {\n Object.assign(currentUser.value, profileData)\n }\n } finally {\n loading.value = false\n }\n }\n\n const initialize = async () => {\n if (isInitialized.value) return\n \n isLoading.value = true\n try {\n // Integration point: Check for existing session/token in localStorage, etc.\n // Example: const storedSession = localStorage.getItem('auth_session')\n // if (storedSession) { /* restore session */ }\n \n isInitialized.value = true\n } catch (error) {\n console.error('Auth initialization error:', error)\n } finally {\n isLoading.value = false\n }\n }\n\n // Auto-initialize on first use\n if (!isInitialized.value) {\n initialize()\n }\n\n return {\n // State\n user: computed(() => currentUser.value),\n currentUser: computed(() => currentUser.value),\n currentSession: computed(() => currentSession.value),\n isAuthenticated,\n isLoading: computed(() => isLoading.value),\n loading: computed(() => loading.value),\n\n // Methods\n signIn,\n signUp,\n signOut,\n refreshToken,\n updateProfile,\n initialize,\n }\n}"],"names":["currentUser","ref","currentSession","loading","isLoading","isInitialized","useStrandsAuth","isAuthenticated","computed","signIn","credentials","signUp","userData","signOut","refreshToken","updateProfile","profileData","initialize","error"],"mappings":"oCAGMA,EAAcC,EAAAA,IAAiB,IAAI,EACnCC,EAAiBD,EAAAA,IAAoB,IAAI,EACzCE,EAAUF,EAAAA,IAAI,EAAK,EACnBG,EAAYH,EAAAA,IAAI,EAAK,EACrBI,EAAgBJ,EAAAA,IAAI,EAAK,EAExB,SAASK,GAAiB,CAC/B,MAAMC,EAAkBC,EAAAA,SAAS,IAAMR,EAAY,QAAU,IAAI,EAEzDS,EAAS,MAAOC,GAAmC,CACzDN,EAAU,MAAQ,GAClB,GAAI,CAKF,MAAM,IAAI,MAAM,0DAA0D,CAC5E,QAAA,CACEA,EAAU,MAAQ,EACpB,CACF,EAEMO,EAAS,MAAOC,GAAyB,CAC7CR,EAAU,MAAQ,GAClB,GAAI,CAIF,MAAM,IAAI,MAAM,0DAA0D,CAC5E,QAAA,CACEA,EAAU,MAAQ,EACpB,CACF,EAEMS,EAAU,SAAY,CAC1BT,EAAU,MAAQ,GAClB,GAAI,CAIFJ,EAAY,MAAQ,KACpBE,EAAe,MAAQ,IACzB,QAAA,CACEE,EAAU,MAAQ,EACpB,CACF,EAEMU,EAAe,SAAY,CAC1BZ,EAAe,QAEpBC,EAAQ,MAAQ,GAMdA,EAAQ,MAAQ,GAEpB,EAEMY,EAAgB,MAAOC,GAA+B,CAC1Db,EAAQ,MAAQ,GAChB,GAAI,CAIEH,EAAY,OACd,OAAO,OAAOA,EAAY,MAAOgB,CAAW,CAEhD,QAAA,CACEb,EAAQ,MAAQ,EAClB,CACF,EAEMc,EAAa,SAAY,CAC7B,GAAI,CAAAZ,EAAc,MAElB,CAAAD,EAAU,MAAQ,GAClB,GAAI,CAKFC,EAAc,MAAQ,EACxB,OAASa,EAAO,CACd,QAAQ,MAAM,6BAA8BA,CAAK,CACnD,QAAA,CACEd,EAAU,MAAQ,EACpB,EACF,EAGA,OAAKC,EAAc,OACjBY,EAAA,EAGK,CAEL,KAAMT,EAAAA,SAAS,IAAMR,EAAY,KAAK,EACtC,YAAaQ,EAAAA,SAAS,IAAMR,EAAY,KAAK,EAC7C,eAAgBQ,EAAAA,SAAS,IAAMN,EAAe,KAAK,EACnD,gBAAAK,EACA,UAAWC,EAAAA,SAAS,IAAMJ,EAAU,KAAK,EACzC,QAASI,EAAAA,SAAS,IAAML,EAAQ,KAAK,EAGrC,OAAAM,EACA,OAAAE,EACA,QAAAE,EACA,aAAAC,EACA,cAAAC,EACA,WAAAE,CAAA,CAEJ"}