@strands.gg/accui 0.2.6 → 0.2.8

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 (67) hide show
  1. package/dist/accui.css +1 -1
  2. package/dist/nuxt/module.cjs.js +1 -1
  3. package/dist/nuxt/module.cjs.js.map +1 -1
  4. package/dist/nuxt/module.d.ts +2 -67
  5. package/dist/nuxt/module.d.ts.map +1 -1
  6. package/dist/nuxt/module.es.js +26 -36
  7. package/dist/nuxt/module.es.js.map +1 -1
  8. package/dist/nuxt/runtime/composables/useStrandsAuth.cjs.js.map +1 -1
  9. package/dist/nuxt/runtime/composables/useStrandsAuth.es.js.map +1 -1
  10. package/dist/nuxt/runtime/middleware/auth.global.cjs.js.map +1 -1
  11. package/dist/nuxt/runtime/middleware/auth.global.es.js.map +1 -1
  12. package/dist/nuxt/runtime/plugin.client.cjs.js +1 -1
  13. package/dist/nuxt/runtime/plugin.client.cjs.js.map +1 -1
  14. package/dist/nuxt/runtime/plugin.client.d.ts.map +1 -1
  15. package/dist/nuxt/runtime/plugin.client.es.js +9 -22
  16. package/dist/nuxt/runtime/plugin.client.es.js.map +1 -1
  17. package/dist/nuxt/runtime/plugin.server.cjs.js +1 -1
  18. package/dist/nuxt/runtime/plugin.server.cjs.js.map +1 -1
  19. package/dist/nuxt/runtime/plugin.server.d.ts.map +1 -1
  20. package/dist/nuxt/runtime/plugin.server.es.js +9 -4
  21. package/dist/nuxt/runtime/plugin.server.es.js.map +1 -1
  22. package/dist/nuxt-v4/module.cjs.js +5 -5
  23. package/dist/nuxt-v4/module.cjs.js.map +1 -1
  24. package/dist/nuxt-v4/module.d.ts +2 -67
  25. package/dist/nuxt-v4/module.d.ts.map +1 -1
  26. package/dist/nuxt-v4/module.es.js +31 -41
  27. package/dist/nuxt-v4/module.es.js.map +1 -1
  28. package/dist/nuxt-v4/runtime/composables/useStrandsAuth.cjs.js.map +1 -1
  29. package/dist/nuxt-v4/runtime/composables/useStrandsAuth.es.js.map +1 -1
  30. package/dist/nuxt-v4/runtime/middleware/auth.global.cjs.js.map +1 -1
  31. package/dist/nuxt-v4/runtime/middleware/auth.global.es.js.map +1 -1
  32. package/dist/nuxt-v4/runtime/plugin.client.cjs.js +1 -1
  33. package/dist/nuxt-v4/runtime/plugin.client.cjs.js.map +1 -1
  34. package/dist/nuxt-v4/runtime/plugin.client.d.ts.map +1 -1
  35. package/dist/nuxt-v4/runtime/plugin.client.es.js +12 -32
  36. package/dist/nuxt-v4/runtime/plugin.client.es.js.map +1 -1
  37. package/dist/nuxt-v4/runtime/plugin.server.cjs.js +1 -1
  38. package/dist/nuxt-v4/runtime/plugin.server.cjs.js.map +1 -1
  39. package/dist/nuxt-v4/runtime/plugin.server.d.ts.map +1 -1
  40. package/dist/nuxt-v4/runtime/plugin.server.es.js +14 -10
  41. package/dist/nuxt-v4/runtime/plugin.server.es.js.map +1 -1
  42. package/dist/nuxt-v4/types.d.ts +4 -4
  43. package/dist/nuxt-v4.d.ts +1 -2
  44. package/dist/nuxt-v4.d.ts.map +1 -1
  45. package/dist/nuxt.d.ts +1 -2
  46. package/dist/nuxt.d.ts.map +1 -1
  47. package/dist/shared/defaults.d.ts +3 -0
  48. package/dist/shared/defaults.d.ts.map +1 -0
  49. package/dist/strands-auth-ui.cjs.js +1 -1
  50. package/dist/strands-auth-ui.cjs.js.map +1 -1
  51. package/dist/strands-auth-ui.es.js +385 -381
  52. package/dist/strands-auth-ui.es.js.map +1 -1
  53. package/dist/types/index.d.ts +66 -2
  54. package/dist/types/index.d.ts.map +1 -1
  55. package/dist/useStrandsConfig-R8O__glt.cjs +2 -0
  56. package/dist/useStrandsConfig-R8O__glt.cjs.map +1 -0
  57. package/dist/useStrandsConfig-j-Bfv_s7.js +98 -0
  58. package/dist/useStrandsConfig-j-Bfv_s7.js.map +1 -0
  59. package/dist/vue/components/StrandsAuth.vue.d.ts.map +1 -1
  60. package/dist/vue/components/StrandsSignUp.vue.d.ts.map +1 -1
  61. package/dist/vue/composables/useStrandsConfig.d.ts +4 -30
  62. package/dist/vue/composables/useStrandsConfig.d.ts.map +1 -1
  63. package/package.json +1 -1
  64. package/dist/useStrandsConfig-CPWn6FBj.cjs +0 -2
  65. package/dist/useStrandsConfig-CPWn6FBj.cjs.map +0 -1
  66. package/dist/useStrandsConfig-Ds4Yslxo.js +0 -105
  67. package/dist/useStrandsConfig-Ds4Yslxo.js.map +0 -1
@@ -43,11 +43,75 @@ export interface OAuthProvider {
43
43
  scopes?: string[];
44
44
  }
45
45
  export interface StrandsAuthConfig {
46
- baseUrl: string;
46
+ /**
47
+ * Base URL for the Strands Auth API
48
+ * @default 'https://your-api.example.com'
49
+ */
50
+ baseUrl?: string;
51
+ /**
52
+ * Client ID for authentication (optional - authentication is now based on domain)
53
+ */
47
54
  clientId?: string;
48
- endpoints?: Partial<StrandsAuthEndpoints>;
55
+ /**
56
+ * Primary accent color for the auth components
57
+ * @default '#EA00A8'
58
+ */
59
+ accentColor?: string;
60
+ /**
61
+ * Default redirect URL after successful authentication
62
+ * @default '/'
63
+ */
64
+ redirectUrl?: string;
65
+ /**
66
+ * URL to redirect to after successful sign in
67
+ * @default '/dashboard'
68
+ */
69
+ onSignInUrl?: string;
70
+ /**
71
+ * URL to redirect to after successful sign out
72
+ * @default '/'
73
+ */
74
+ onSignOutUrl?: string;
75
+ /**
76
+ * Enable automatic token refresh
77
+ * @default true
78
+ */
79
+ autoRefresh?: boolean;
80
+ /**
81
+ * Token refresh interval in minutes
82
+ * @default 4
83
+ */
84
+ refreshInterval?: number;
85
+ /**
86
+ * Pages that should redirect to sign in if user is not authenticated
87
+ * @default []
88
+ */
89
+ protectedRoutes?: string[];
90
+ /**
91
+ * Pages that should redirect away if user IS authenticated
92
+ * @default ['/auth', '/login', '/register']
93
+ */
94
+ guestOnlyRoutes?: string[];
95
+ /**
96
+ * Enable development mode (shows debug info)
97
+ * @default false
98
+ */
49
99
  devMode?: boolean;
100
+ /**
101
+ * Support email address for contact links
102
+ * @optional
103
+ */
50
104
  supportEmail?: string;
105
+ /**
106
+ * Automatically import CSS styles
107
+ * Set to false if you want to manually import styles or use custom styling
108
+ * @default true
109
+ */
110
+ styles?: boolean;
111
+ /**
112
+ * Custom API endpoints
113
+ */
114
+ endpoints?: Partial<StrandsAuthEndpoints>;
51
115
  }
52
116
  export interface StrandsAuthEndpoints {
53
117
  signIn: string;
@@ -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;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../apps/accounts-ui/src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";const i=require("vue"),f={baseUrl:"https://your-api.example.com",accentColor:"#EA00A8",redirectUrl:"/",onSignInUrl:"/dashboard",onSignOutUrl:"/",autoRefresh:!0,refreshInterval:4,protectedRoutes:[],guestOnlyRoutes:["/auth","/login","/register"],devMode:!1,styles:!0,endpoints:{}},o={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}"},c=Symbol("strands-config"),d=i.ref(null);function v(t){d.value=t;try{i.provide(c,t)}catch(u){console.warn("[Strands Auth] Could not provide config via Vue provide/inject. Config available via global state only.",u)}}function h(t){const u=i.inject(c,null);let l=null;try{if(typeof window<"u"){if(window.__STRANDS_CONFIG__)l=window.__STRANDS_CONFIG__;else if(window.__NUXT__){const e=window.__NUXT__;l=e?.config?.public?.strandsAuth||e?.public?.strandsAuth||e?.strandsAuth}}}catch(e){console.error("[Strands Auth] Error accessing runtime configuration:",e)}const n=i.computed(()=>{const e={...f,...t||{},...u||{},...d.value||{},...l||{}};return e.baseUrl===f.baseUrl&&typeof window>"u"&&console.warn("[Strands Auth] No baseUrl configured for SSR. Please provide a baseUrl in your strandsAuth configuration."),e}),a=i.computed(()=>{const r=n.value.endpoints||{};return{signIn:r.signIn||o.signIn,signUp:r.signUp||o.signUp,signOut:r.signOut||o.signOut,refresh:r.refresh||o.refresh,passwordReset:r.passwordReset||o.passwordReset,passwordResetConfirm:r.passwordResetConfirm||o.passwordResetConfirm,profile:r.profile||o.profile,verifyEmail:r.verifyEmail||o.verifyEmail,oauthProviders:r.oauthProviders||o.oauthProviders,oauthProvider:r.oauthProvider||o.oauthProvider}});return{config:n,endpoints:a,getUrl:e=>{const r=n.value;if(!r.baseUrl)throw new Error("Base URL is required in configuration");let s;typeof e=="string"&&e in a.value?s=a.value[e]:typeof e=="string"?s=e:s=a.value[e];const p=r.baseUrl.replace(/\/$/,""),g=s.startsWith("/")?s:`/${s}`;return`${p}${g}`},getSupportEmail:()=>n.value.supportEmail||null}}function S(t){d.value=t}exports.STRANDS_AUTH_DEFAULTS=f;exports.provideStrandsConfig=v;exports.setStrandsConfig=S;exports.useStrandsConfig=h;
2
+ //# sourceMappingURL=useStrandsConfig-R8O__glt.cjs.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,98 @@
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
@@ -0,0 +1 @@
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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"}
@@ -1 +1 @@
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
+ {"version":3,"file":"StrandsAuth.vue.d.ts","sourceRoot":"","sources":["../../../../../apps/accounts-ui/src/vue/components/StrandsAuth.vue"],"names":[],"mappings":"AAgKA;AAmxBA,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;;AAu0B/C,wBASG"}
@@ -1 +1 @@
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
+ {"version":3,"file":"StrandsSignUp.vue.d.ts","sourceRoot":"","sources":["../../../../../apps/accounts-ui/src/vue/components/StrandsSignUp.vue"],"names":[],"mappings":"AAiJA;AA8TA,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;;AA2gBxB,wBASG"}
@@ -1,37 +1,11 @@
1
- export interface StrandsAuthConfig {
2
- baseUrl: string;
3
- supportEmail?: string;
4
- endpoints?: {
5
- signIn?: string;
6
- signUp?: string;
7
- signOut?: string;
8
- refresh?: string;
9
- passwordReset?: string;
10
- passwordResetConfirm?: string;
11
- profile?: string;
12
- verifyEmail?: string;
13
- oauthProviders?: string;
14
- oauthProvider?: string;
15
- };
16
- }
17
- export interface StrandsAuthEndpoints {
18
- signIn: string;
19
- signUp: string;
20
- signOut: string;
21
- refresh: string;
22
- passwordReset: string;
23
- passwordResetConfirm: string;
24
- profile: string;
25
- verifyEmail: string;
26
- oauthProviders: string;
27
- oauthProvider: string;
28
- }
1
+ import { StrandsAuthConfig, StrandsAuthEndpoints } from '../../types';
2
+ export type { StrandsAuthConfig, StrandsAuthEndpoints } from '../../types';
29
3
  export declare function provideStrandsConfig(config: StrandsAuthConfig): void;
30
4
  export declare function useStrandsConfig(fallbackConfig?: Partial<StrandsAuthConfig>): {
31
- config: import('vue').ComputedRef<StrandsAuthConfig>;
5
+ config: import('vue').ComputedRef<any>;
32
6
  endpoints: import('vue').ComputedRef<StrandsAuthEndpoints>;
33
7
  getUrl: (endpoint: keyof StrandsAuthEndpoints | string) => string;
34
- getSupportEmail: () => string | null;
8
+ getSupportEmail: () => any;
35
9
  };
36
10
  export declare function setStrandsConfig(config: StrandsAuthConfig): void;
37
11
  //# 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,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
+ {"version":3,"file":"useStrandsConfig.d.ts","sourceRoot":"","sources":["../../../../../apps/accounts-ui/src/vue/composables/useStrandsConfig.ts"],"names":[],"mappings":"AAIA,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAoB1E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,QAQ7D;AAED,wBAAgB,gBAAgB,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC;;;uBA6DhD,MAAM,oBAAoB,GAAG,MAAM;;EAoC9D;AAGD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,QAEzD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strands.gg/accui",
3
- "version": "0.2.6",
3
+ "version": "0.2.8",
4
4
  "description": "Strands Authentication UI Components",
5
5
  "type": "module",
6
6
  "main": "./dist/strands-auth-ui.cjs.js",
@@ -1,2 +0,0 @@
1
- "use strict";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-CPWn6FBj.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useStrandsConfig-CPWn6FBj.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,105 +0,0 @@
1
- import { ref as p, provide as v, inject as w, computed as f } from "vue";
2
- const e = {
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 s = null;
20
- try {
21
- if (typeof window < "u") {
22
- if (window.__STRANDS_CONFIG__)
23
- s = window.__STRANDS_CONFIG__, console.log("[useStrandsConfig] Found config from window.__STRANDS_CONFIG__:", s);
24
- else if (window.__NUXT__) {
25
- const o = window.__NUXT__;
26
- console.log("[useStrandsConfig] window.__NUXT__ contents:", o), s = o?.config?.public?.strandsAuth || o?.public?.strandsAuth || o?.strandsAuth || o?.data?.[0]?.strandsAuth, console.log("[useStrandsConfig] Found nuxtConfig from window.__NUXT__:", s);
27
- }
28
- }
29
- try {
30
- if (typeof window < "u" && window.$nuxt) {
31
- const o = window.$nuxt;
32
- o?.$config?.public?.strandsAuth && (s = o.$config.public.strandsAuth, console.log("[useStrandsConfig] Found config from $nuxt.$config:", s));
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: s,
46
- fallbackConfig: i,
47
- currentConfig: o
48
- }), !o && s && s.baseUrl && (o = {
49
- baseUrl: s.baseUrl,
50
- endpoints: s.endpoints || {},
51
- supportEmail: s.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 || e.signIn,
71
- signUp: n.signUp || e.signUp,
72
- signOut: n.signOut || e.signOut,
73
- refresh: n.refresh || e.refresh,
74
- passwordReset: n.passwordReset || e.passwordReset,
75
- passwordResetConfirm: n.passwordResetConfirm || e.passwordResetConfirm,
76
- profile: n.profile || e.profile,
77
- verifyEmail: n.verifyEmail || e.verifyEmail,
78
- oauthProviders: n.oauthProviders || e.oauthProviders,
79
- oauthProvider: n.oauthProvider || e.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 p,
102
- U as s,
103
- S as u
104
- };
105
- //# sourceMappingURL=useStrandsConfig-Ds4Yslxo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useStrandsConfig-Ds4Yslxo.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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"}