@quvel-kit/core 1.1.0

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 (285) hide show
  1. package/README.md +670 -0
  2. package/dist/auth/boot/defineAuthGuard.d.ts +54 -0
  3. package/dist/auth/boot/defineAuthGuard.d.ts.map +1 -0
  4. package/dist/auth/boot/defineAuthGuard.js +72 -0
  5. package/dist/auth/enums/AuthStatusEnum.d.ts +13 -0
  6. package/dist/auth/enums/AuthStatusEnum.d.ts.map +1 -0
  7. package/dist/auth/enums/AuthStatusEnum.js +13 -0
  8. package/dist/auth/index.d.ts +13 -0
  9. package/dist/auth/index.d.ts.map +1 -0
  10. package/dist/auth/index.js +13 -0
  11. package/dist/auth/services/AuthGuard.d.ts +58 -0
  12. package/dist/auth/services/AuthGuard.d.ts.map +1 -0
  13. package/dist/auth/services/AuthGuard.js +51 -0
  14. package/dist/auth/services/AuthService.d.ts +52 -0
  15. package/dist/auth/services/AuthService.d.ts.map +1 -0
  16. package/dist/auth/services/AuthService.js +67 -0
  17. package/dist/auth/services/PasswordResetService.d.ts +34 -0
  18. package/dist/auth/services/PasswordResetService.d.ts.map +1 -0
  19. package/dist/auth/services/PasswordResetService.js +45 -0
  20. package/dist/auth/services/TwoFactorChallengeService.d.ts +22 -0
  21. package/dist/auth/services/TwoFactorChallengeService.d.ts.map +1 -0
  22. package/dist/auth/services/TwoFactorChallengeService.js +29 -0
  23. package/dist/auth/services/TwoFactorService.d.ts +64 -0
  24. package/dist/auth/services/TwoFactorService.d.ts.map +1 -0
  25. package/dist/auth/services/TwoFactorService.js +68 -0
  26. package/dist/auth/services/index.d.ts +8 -0
  27. package/dist/auth/services/index.d.ts.map +1 -0
  28. package/dist/auth/services/index.js +5 -0
  29. package/dist/auth/types/auth-meta.d.ts +54 -0
  30. package/dist/auth/types/auth-meta.d.ts.map +1 -0
  31. package/dist/auth/types/auth-meta.js +6 -0
  32. package/dist/auth/types/index.d.ts +5 -0
  33. package/dist/auth/types/index.d.ts.map +1 -0
  34. package/dist/auth/types/index.js +4 -0
  35. package/dist/auth/utils/auth-meta.d.ts +75 -0
  36. package/dist/auth/utils/auth-meta.d.ts.map +1 -0
  37. package/dist/auth/utils/auth-meta.js +93 -0
  38. package/dist/boot/quvel.d.ts +26 -0
  39. package/dist/boot/quvel.d.ts.map +1 -0
  40. package/dist/boot/quvel.js +38 -0
  41. package/dist/build/index.d.ts +9 -0
  42. package/dist/build/index.d.ts.map +1 -0
  43. package/dist/build/index.js +8 -0
  44. package/dist/build/loadEnv.d.ts +14 -0
  45. package/dist/build/loadEnv.d.ts.map +1 -0
  46. package/dist/build/loadEnv.js +33 -0
  47. package/dist/build/quasarConfig.d.ts +67 -0
  48. package/dist/build/quasarConfig.d.ts.map +1 -0
  49. package/dist/build/quasarConfig.js +126 -0
  50. package/dist/components/Common/TaskErrors.vue +47 -0
  51. package/dist/components/Inputs/BaseInput.vue +88 -0
  52. package/dist/components/Misc/ClientOnly.vue +22 -0
  53. package/dist/components/Transitions/FadeInOut.vue +9 -0
  54. package/dist/components/Transitions/SlowExpand.vue +13 -0
  55. package/dist/components/WebSocketChannelManager.vue +634 -0
  56. package/dist/components/index.d.ts +12 -0
  57. package/dist/components/index.d.ts.map +1 -0
  58. package/dist/components/index.js +16 -0
  59. package/dist/composables/index.d.ts +19 -0
  60. package/dist/composables/index.d.ts.map +1 -0
  61. package/dist/composables/index.js +16 -0
  62. package/dist/composables/useClient.d.ts +16 -0
  63. package/dist/composables/useClient.d.ts.map +1 -0
  64. package/dist/composables/useClient.js +28 -0
  65. package/dist/composables/useMetaConfig.d.ts +14 -0
  66. package/dist/composables/useMetaConfig.d.ts.map +1 -0
  67. package/dist/composables/useMetaConfig.js +77 -0
  68. package/dist/composables/useQueryMessageHandler.d.ts +44 -0
  69. package/dist/composables/useQueryMessageHandler.d.ts.map +1 -0
  70. package/dist/composables/useQueryMessageHandler.js +74 -0
  71. package/dist/composables/useQuvel.d.ts +15 -0
  72. package/dist/composables/useQuvel.d.ts.map +1 -0
  73. package/dist/composables/useQuvel.js +38 -0
  74. package/dist/composables/useRecaptcha.d.ts +35 -0
  75. package/dist/composables/useRecaptcha.d.ts.map +1 -0
  76. package/dist/composables/useRecaptcha.js +87 -0
  77. package/dist/composables/useScopedService.d.ts +18 -0
  78. package/dist/composables/useScopedService.d.ts.map +1 -0
  79. package/dist/composables/useScopedService.js +25 -0
  80. package/dist/composables/useScript.d.ts +25 -0
  81. package/dist/composables/useScript.d.ts.map +1 -0
  82. package/dist/composables/useScript.js +106 -0
  83. package/dist/composables/useUrlQueryHandler.d.ts +38 -0
  84. package/dist/composables/useUrlQueryHandler.d.ts.map +1 -0
  85. package/dist/composables/useUrlQueryHandler.js +76 -0
  86. package/dist/composables/useWebSockets.d.ts +18 -0
  87. package/dist/composables/useWebSockets.d.ts.map +1 -0
  88. package/dist/composables/useWebSockets.js +55 -0
  89. package/dist/composables/useWindowEvent.d.ts +16 -0
  90. package/dist/composables/useWindowEvent.d.ts.map +1 -0
  91. package/dist/composables/useWindowEvent.js +27 -0
  92. package/dist/composables/useXsrf.d.ts +29 -0
  93. package/dist/composables/useXsrf.d.ts.map +1 -0
  94. package/dist/composables/useXsrf.js +59 -0
  95. package/dist/config/QuasarConfigBuilder.d.ts +100 -0
  96. package/dist/config/QuasarConfigBuilder.d.ts.map +1 -0
  97. package/dist/config/QuasarConfigBuilder.js +98 -0
  98. package/dist/config/i18n.d.ts +23 -0
  99. package/dist/config/i18n.d.ts.map +1 -0
  100. package/dist/config/i18n.js +43 -0
  101. package/dist/config/index.d.ts +8 -0
  102. package/dist/config/index.d.ts.map +1 -0
  103. package/dist/config/index.js +7 -0
  104. package/dist/config/moduleTransformer.d.ts +18 -0
  105. package/dist/config/moduleTransformer.d.ts.map +1 -0
  106. package/dist/config/moduleTransformer.js +76 -0
  107. package/dist/config/quvel.d.ts +40 -0
  108. package/dist/config/quvel.d.ts.map +1 -0
  109. package/dist/config/quvel.js +59 -0
  110. package/dist/config/quvel.types.d.ts +59 -0
  111. package/dist/config/quvel.types.d.ts.map +1 -0
  112. package/dist/config/quvel.types.js +6 -0
  113. package/dist/container/ServiceContainer.d.ts +107 -0
  114. package/dist/container/ServiceContainer.d.ts.map +1 -0
  115. package/dist/container/ServiceContainer.js +201 -0
  116. package/dist/container/types/vue.d.ts +9 -0
  117. package/dist/container/types.d.ts +81 -0
  118. package/dist/container/types.d.ts.map +1 -0
  119. package/dist/container/types.js +1 -0
  120. package/dist/i18n/en-US/common.d.ts +19 -0
  121. package/dist/i18n/en-US/common.d.ts.map +1 -0
  122. package/dist/i18n/en-US/common.js +17 -0
  123. package/dist/i18n/en-US/index.d.ts +21 -0
  124. package/dist/i18n/en-US/index.d.ts.map +1 -0
  125. package/dist/i18n/en-US/index.js +4 -0
  126. package/dist/i18n/es-MX/common.d.ts +19 -0
  127. package/dist/i18n/es-MX/common.d.ts.map +1 -0
  128. package/dist/i18n/es-MX/common.js +17 -0
  129. package/dist/i18n/es-MX/index.d.ts +21 -0
  130. package/dist/i18n/es-MX/index.d.ts.map +1 -0
  131. package/dist/i18n/es-MX/index.js +4 -0
  132. package/dist/index.d.ts +54 -0
  133. package/dist/index.d.ts.map +1 -0
  134. package/dist/index.js +67 -0
  135. package/dist/models/User.d.ts +32 -0
  136. package/dist/models/User.d.ts.map +1 -0
  137. package/dist/models/User.js +48 -0
  138. package/dist/module.d.ts +21 -0
  139. package/dist/module.d.ts.map +1 -0
  140. package/dist/module.js +45 -0
  141. package/dist/modules/helpers.d.ts +30 -0
  142. package/dist/modules/helpers.d.ts.map +1 -0
  143. package/dist/modules/helpers.js +45 -0
  144. package/dist/modules/index.d.ts +8 -0
  145. package/dist/modules/index.d.ts.map +1 -0
  146. package/dist/modules/index.js +6 -0
  147. package/dist/modules/types.d.ts +141 -0
  148. package/dist/modules/types.d.ts.map +1 -0
  149. package/dist/modules/types.js +7 -0
  150. package/dist/pages/ErrorNotFound.vue +300 -0
  151. package/dist/pages/index.d.ts +7 -0
  152. package/dist/pages/index.d.ts.map +1 -0
  153. package/dist/pages/index.js +6 -0
  154. package/dist/services/ApiService.d.ts +90 -0
  155. package/dist/services/ApiService.d.ts.map +1 -0
  156. package/dist/services/ApiService.js +159 -0
  157. package/dist/services/I18nService.d.ts +67 -0
  158. package/dist/services/I18nService.d.ts.map +1 -0
  159. package/dist/services/I18nService.js +92 -0
  160. package/dist/services/LogService.d.ts +31 -0
  161. package/dist/services/LogService.d.ts.map +1 -0
  162. package/dist/services/LogService.js +49 -0
  163. package/dist/services/Service.d.ts +10 -0
  164. package/dist/services/Service.d.ts.map +1 -0
  165. package/dist/services/Service.js +8 -0
  166. package/dist/services/TaskService.d.ts +64 -0
  167. package/dist/services/TaskService.d.ts.map +1 -0
  168. package/dist/services/TaskService.js +188 -0
  169. package/dist/services/ThemeService.d.ts +28 -0
  170. package/dist/services/ThemeService.d.ts.map +1 -0
  171. package/dist/services/ThemeService.js +77 -0
  172. package/dist/services/ValidationService.d.ts +55 -0
  173. package/dist/services/ValidationService.d.ts.map +1 -0
  174. package/dist/services/ValidationService.js +81 -0
  175. package/dist/services/WebSocketService.d.ts +59 -0
  176. package/dist/services/WebSocketService.d.ts.map +1 -0
  177. package/dist/services/WebSocketService.js +148 -0
  178. package/dist/services/logger/BaseLogger.d.ts +35 -0
  179. package/dist/services/logger/BaseLogger.d.ts.map +1 -0
  180. package/dist/services/logger/BaseLogger.js +66 -0
  181. package/dist/services/logger/ConsoleLogger.d.ts +21 -0
  182. package/dist/services/logger/ConsoleLogger.d.ts.map +1 -0
  183. package/dist/services/logger/ConsoleLogger.js +60 -0
  184. package/dist/services/logger/NullLogger.d.ts +10 -0
  185. package/dist/services/logger/NullLogger.d.ts.map +1 -0
  186. package/dist/services/logger/NullLogger.js +10 -0
  187. package/dist/stores/plugins/serviceContainer.d.ts +10 -0
  188. package/dist/stores/plugins/serviceContainer.d.ts.map +1 -0
  189. package/dist/stores/plugins/serviceContainer.js +14 -0
  190. package/dist/stores/sessionStore.d.ts +71 -0
  191. package/dist/stores/sessionStore.d.ts.map +1 -0
  192. package/dist/stores/sessionStore.js +125 -0
  193. package/dist/types/app.types.d.ts +202 -0
  194. package/dist/types/app.types.d.ts.map +1 -0
  195. package/dist/types/app.types.js +6 -0
  196. package/dist/types/config.types.d.ts +2 -0
  197. package/dist/types/config.types.d.ts.map +1 -0
  198. package/dist/types/config.types.js +1 -0
  199. package/dist/types/global.d.ts +33 -0
  200. package/dist/types/i18n.types.d.ts +21 -0
  201. package/dist/types/i18n.types.d.ts.map +1 -0
  202. package/dist/types/i18n.types.js +6 -0
  203. package/dist/types/laravel.types.d.ts +167 -0
  204. package/dist/types/laravel.types.d.ts.map +1 -0
  205. package/dist/types/laravel.types.js +6 -0
  206. package/dist/types/logging.types.d.ts +81 -0
  207. package/dist/types/logging.types.d.ts.map +1 -0
  208. package/dist/types/logging.types.js +22 -0
  209. package/dist/types/pinia.d.ts +24 -0
  210. package/dist/types/scripts.types.d.ts +31 -0
  211. package/dist/types/scripts.types.d.ts.map +1 -0
  212. package/dist/types/scripts.types.js +6 -0
  213. package/dist/types/ssr.d.ts +11 -0
  214. package/dist/types/task.types.d.ts +121 -0
  215. package/dist/types/task.types.d.ts.map +1 -0
  216. package/dist/types/task.types.js +7 -0
  217. package/dist/types/theme.types.d.ts +13 -0
  218. package/dist/types/theme.types.d.ts.map +1 -0
  219. package/dist/types/theme.types.js +17 -0
  220. package/dist/types/user.types.d.ts +24 -0
  221. package/dist/types/user.types.d.ts.map +1 -0
  222. package/dist/types/user.types.js +1 -0
  223. package/dist/types/vue-shim.d.ts +11 -0
  224. package/dist/types/websocket.types.d.ts +62 -0
  225. package/dist/types/websocket.types.d.ts.map +1 -0
  226. package/dist/types/websocket.types.js +6 -0
  227. package/dist/utils/apiInterceptors.d.ts +76 -0
  228. package/dist/utils/apiInterceptors.d.ts.map +1 -0
  229. package/dist/utils/apiInterceptors.js +149 -0
  230. package/dist/utils/assets.d.ts +40 -0
  231. package/dist/utils/assets.d.ts.map +1 -0
  232. package/dist/utils/assets.js +340 -0
  233. package/dist/utils/axios.d.ts +19 -0
  234. package/dist/utils/axios.d.ts.map +1 -0
  235. package/dist/utils/axios.js +113 -0
  236. package/dist/utils/config.d.ts +16 -0
  237. package/dist/utils/config.d.ts.map +1 -0
  238. package/dist/utils/config.js +48 -0
  239. package/dist/utils/container.d.ts +12 -0
  240. package/dist/utils/container.d.ts.map +1 -0
  241. package/dist/utils/container.js +11 -0
  242. package/dist/utils/deepMerge.d.ts +28 -0
  243. package/dist/utils/deepMerge.d.ts.map +1 -0
  244. package/dist/utils/deepMerge.js +59 -0
  245. package/dist/utils/envConfig.d.ts +73 -0
  246. package/dist/utils/envConfig.d.ts.map +1 -0
  247. package/dist/utils/envConfig.js +161 -0
  248. package/dist/utils/error.d.ts +44 -0
  249. package/dist/utils/error.d.ts.map +1 -0
  250. package/dist/utils/error.js +67 -0
  251. package/dist/utils/headers.d.ts +36 -0
  252. package/dist/utils/headers.d.ts.map +1 -0
  253. package/dist/utils/headers.js +54 -0
  254. package/dist/utils/i18n.d.ts +26 -0
  255. package/dist/utils/i18n.d.ts.map +1 -0
  256. package/dist/utils/i18n.js +56 -0
  257. package/dist/utils/index.d.ts +14 -0
  258. package/dist/utils/index.d.ts.map +1 -0
  259. package/dist/utils/index.js +13 -0
  260. package/dist/utils/loading.d.ts +29 -0
  261. package/dist/utils/loading.d.ts.map +1 -0
  262. package/dist/utils/loading.js +46 -0
  263. package/dist/utils/logging.d.ts +20 -0
  264. package/dist/utils/logging.d.ts.map +1 -0
  265. package/dist/utils/logging.js +54 -0
  266. package/dist/utils/notify.d.ts +15 -0
  267. package/dist/utils/notify.d.ts.map +1 -0
  268. package/dist/utils/notify.js +30 -0
  269. package/dist/utils/object.d.ts +28 -0
  270. package/dist/utils/object.d.ts.map +1 -0
  271. package/dist/utils/object.js +48 -0
  272. package/dist/utils/pagination.d.ts +60 -0
  273. package/dist/utils/pagination.d.ts.map +1 -0
  274. package/dist/utils/pagination.js +252 -0
  275. package/dist/utils/paths.d.ts +54 -0
  276. package/dist/utils/paths.d.ts.map +1 -0
  277. package/dist/utils/paths.js +48 -0
  278. package/dist/utils/platform.d.ts +25 -0
  279. package/dist/utils/platform.d.ts.map +1 -0
  280. package/dist/utils/platform.js +64 -0
  281. package/dist/utils/scripts.d.ts +20 -0
  282. package/dist/utils/scripts.d.ts.map +1 -0
  283. package/dist/utils/scripts.js +39 -0
  284. package/global.d.ts +29 -0
  285. package/package.json +119 -0
@@ -0,0 +1,81 @@
1
+ import * as z from 'zod/v4';
2
+ import { Service } from './Service.js';
3
+ /**
4
+ * Default locale mapping for validation
5
+ * Maps common locale codes to Zod v4 locale codes
6
+ */
7
+ export const DEFAULT_LOCALE_MAPPING = {
8
+ 'en': 'en',
9
+ 'en-US': 'en',
10
+ 'en-GB': 'en',
11
+ 'es': 'es',
12
+ 'es-MX': 'es',
13
+ 'es-ES': 'es',
14
+ };
15
+ /**
16
+ * Validation Service with Zod v4 locale integration
17
+ */
18
+ export class ValidationService extends Service {
19
+ static localeMapping = DEFAULT_LOCALE_MAPPING;
20
+ i18n;
21
+ currentLocale = 'en';
22
+ /**
23
+ * Set custom locale mapping for validation
24
+ * Optional - uses DEFAULT_LOCALE_MAPPING if not called
25
+ *
26
+ * @param mapping - Locale mapping (e.g., { 'en-US': 'en', 'es-MX': 'es' })
27
+ */
28
+ static setLocaleMapping(mapping) {
29
+ ValidationService.localeMapping = mapping;
30
+ }
31
+ constructor(config, ssrContext) {
32
+ super(config, ssrContext);
33
+ }
34
+ /**
35
+ * Register with container - inject dependencies and set initial locale
36
+ */
37
+ register({ i18n }) {
38
+ this.i18n = i18n;
39
+ this.setLocale(this.i18n.locale);
40
+ }
41
+ /**
42
+ * Set Zod validation locale based on language code
43
+ * Uses the locale mapping configured via setLocaleMapping()
44
+ */
45
+ setLocale(locale) {
46
+ const localeMap = ValidationService.localeMapping;
47
+ const zodLocale = localeMap[locale] || 'en';
48
+ if (zodLocale !== this.currentLocale) {
49
+ this.currentLocale = zodLocale;
50
+ const localeConfig = z.locales[zodLocale];
51
+ if (localeConfig && typeof localeConfig === 'function') {
52
+ z.config(localeConfig());
53
+ }
54
+ else {
55
+ z.config(z.locales.en());
56
+ }
57
+ }
58
+ }
59
+ validate(value, schema, firstOnly) {
60
+ this.setLocale(this.i18n.locale);
61
+ const result = schema.safeParse(value);
62
+ if (result.success) {
63
+ return firstOnly ? true : [];
64
+ }
65
+ if (firstOnly) {
66
+ const firstIssue = result.error.issues[0];
67
+ return firstIssue?.message || 'Invalid input';
68
+ }
69
+ return result.error.issues.map((issue) => issue.message);
70
+ }
71
+ /**
72
+ * Creates a Quasar-compatible validation rule that stops at the first error
73
+ * This is the recommended way to create validation rules for QInput
74
+ *
75
+ * @param schema - The Zod schema
76
+ * @returns A Quasar validation rule function
77
+ */
78
+ createInputRule(schema) {
79
+ return (value) => this.validate(value, schema, true);
80
+ }
81
+ }
@@ -0,0 +1,59 @@
1
+ /**
2
+ * WebSocket Service
3
+ *
4
+ * Service for managing Laravel Echo WebSocket connections with Pusher
5
+ */
6
+ import type Echo from 'laravel-echo';
7
+ import type { QSsrContext } from '@quasar/app-vite';
8
+ import type { ServiceContainer } from '../container/ServiceContainer.js';
9
+ import type { RegisterService } from '../container/types.js';
10
+ import type { EncryptedChannelType, PresenceChannelType, PrivateChannelType, PublicChannelType, SubscribeOptions } from '../types/websocket.types.js';
11
+ import { Service } from './Service.js';
12
+ import { AppConfig } from "../types/app.types";
13
+ /**
14
+ * WebSocket Service for Laravel Echo connections
15
+ *
16
+ * Manages WebSocket connections using Laravel Echo and Pusher
17
+ */
18
+ export declare class WebSocketService extends Service implements RegisterService {
19
+ #private;
20
+ private api;
21
+ private connectionPromise;
22
+ private isConnected;
23
+ private apiKey;
24
+ private cluster;
25
+ private readonly isSsr;
26
+ constructor(config: AppConfig, ssrContext?: QSsrContext | null);
27
+ /**
28
+ * Get the Echo instance
29
+ */
30
+ get echo(): Echo<'pusher'> | null;
31
+ /**
32
+ * Register with container - inject dependencies and get config
33
+ */
34
+ register({ api, config }: ServiceContainer): void;
35
+ /**
36
+ * Connect to WebSocket server
37
+ */
38
+ connect(): Promise<void>;
39
+ /**
40
+ * Unified subscription method for all channel types
41
+ */
42
+ subscribe<T = unknown>(options: SubscribeOptions<T> & {
43
+ type: 'public' | 'publicNotification';
44
+ }): Promise<PublicChannelType>;
45
+ subscribe<T = unknown>(options: SubscribeOptions<T> & {
46
+ type: 'private' | 'privateNotification';
47
+ }): Promise<PrivateChannelType>;
48
+ subscribe<T = unknown>(options: SubscribeOptions<T> & {
49
+ type: 'presence';
50
+ }): Promise<PresenceChannelType>;
51
+ subscribe<T = unknown>(options: SubscribeOptions<T> & {
52
+ type: 'encrypted';
53
+ }): Promise<EncryptedChannelType>;
54
+ /**
55
+ * Disconnect from the WebSocket server
56
+ */
57
+ disconnect(): void;
58
+ }
59
+ //# sourceMappingURL=WebSocketService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebSocketService.d.ts","sourceRoot":"","sources":["../../src/services/WebSocketService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAE7C;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,OAAQ,YAAW,eAAe;;IAEtE,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0C;gBAEpD,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,IAAI;IAI9D;;OAEG;IACH,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAEhC;IAED;;OAEG;IACH,QAAQ,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,gBAAgB,GAAG,IAAI;IASjD;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwDxB;;OAEG;IACG,SAAS,CAAC,CAAC,GAAG,OAAO,EACzB,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,QAAQ,GAAG,oBAAoB,CAAA;KAAE,GACvE,OAAO,CAAC,iBAAiB,CAAC;IACvB,SAAS,CAAC,CAAC,GAAG,OAAO,EACzB,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,SAAS,GAAG,qBAAqB,CAAA;KAAE,GACzE,OAAO,CAAC,kBAAkB,CAAC;IACxB,SAAS,CAAC,CAAC,GAAG,OAAO,EACzB,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,GAClD,OAAO,CAAC,mBAAmB,CAAC;IACzB,SAAS,CAAC,CAAC,GAAG,OAAO,EACzB,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,GACnD,OAAO,CAAC,oBAAoB,CAAC;IAuEhC;;OAEG;IACH,UAAU,IAAI,IAAI;CAMnB"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * WebSocket Service
3
+ *
4
+ * Service for managing Laravel Echo WebSocket connections with Pusher
5
+ */
6
+ import { Service } from './Service.js';
7
+ /**
8
+ * WebSocket Service for Laravel Echo connections
9
+ *
10
+ * Manages WebSocket connections using Laravel Echo and Pusher
11
+ */
12
+ export class WebSocketService extends Service {
13
+ #echo = null;
14
+ api;
15
+ connectionPromise = null;
16
+ isConnected = false;
17
+ apiKey = '';
18
+ cluster = '';
19
+ isSsr = typeof window === 'undefined';
20
+ constructor(config, ssrContext) {
21
+ super(config, ssrContext);
22
+ }
23
+ /**
24
+ * Get the Echo instance
25
+ */
26
+ get echo() {
27
+ return this.#echo;
28
+ }
29
+ /**
30
+ * Register with container - inject dependencies and get config
31
+ */
32
+ register({ api, config }) {
33
+ this.api = api;
34
+ const broadcasting = config?.broadcasting?.pusher;
35
+ this.apiKey = broadcasting?.key ?? import.meta.env.VITE_PUSHER_APP_KEY ?? '';
36
+ this.cluster = broadcasting?.options?.cluster ?? import.meta.env.VITE_PUSHER_APP_CLUSTER ?? '';
37
+ }
38
+ /**
39
+ * Connect to WebSocket server
40
+ */
41
+ connect() {
42
+ if (this.isConnected || this.isSsr)
43
+ return Promise.resolve();
44
+ if (this.connectionPromise)
45
+ return this.connectionPromise;
46
+ this.connectionPromise = new Promise((resolve, reject) => {
47
+ void Promise.all([import('pusher-js'), import('laravel-echo')]).then(([Pusher, EchoModule]) => {
48
+ const EchoConstructor = EchoModule.default;
49
+ if (!this.isSsr && !window.Pusher) {
50
+ window.Pusher = Pusher;
51
+ }
52
+ this.#echo = new EchoConstructor({
53
+ broadcaster: 'pusher',
54
+ key: this.apiKey,
55
+ cluster: this.cluster,
56
+ authorizer: (channel) => {
57
+ const apiService = this.api;
58
+ return {
59
+ authorize: async (socketId, callback) => {
60
+ try {
61
+ const data = await apiService.post('/broadcasting/auth', {
62
+ socket_id: socketId,
63
+ channel_name: channel.name,
64
+ });
65
+ return callback(false, data);
66
+ }
67
+ catch {
68
+ return callback(true, null);
69
+ }
70
+ },
71
+ };
72
+ },
73
+ });
74
+ this.#echo.connector.pusher.connection.bind('connected', () => {
75
+ this.isConnected = true;
76
+ this.connectionPromise = null;
77
+ resolve();
78
+ });
79
+ this.#echo.connector.pusher.connection.bind('disconnected', () => {
80
+ this.isConnected = false;
81
+ this.connectionPromise = null;
82
+ });
83
+ this.#echo.connector.pusher.connection.bind('error', (err) => {
84
+ console.error('[WebSocket Error]', err);
85
+ reject(new Error('WebSocket connection error'));
86
+ });
87
+ });
88
+ });
89
+ return this.connectionPromise;
90
+ }
91
+ async subscribe(options) {
92
+ if (this.isSsr)
93
+ return false;
94
+ await this.connect();
95
+ if (!this.#echo)
96
+ return false;
97
+ const { channelName, type, event, callback, presenceHandlers } = options;
98
+ let channel;
99
+ switch (type) {
100
+ case 'public':
101
+ case 'publicNotification':
102
+ channel = this.#echo.channel(channelName);
103
+ break;
104
+ case 'private':
105
+ case 'privateNotification':
106
+ channel = this.#echo.private(channelName);
107
+ break;
108
+ case 'presence':
109
+ channel = this.#echo.join(channelName);
110
+ break;
111
+ case 'encrypted':
112
+ channel = this.#echo.encryptedPrivate(channelName);
113
+ break;
114
+ default:
115
+ throw new Error('Unknown channel type');
116
+ }
117
+ if (type.endsWith('Notification')) {
118
+ return channel.notification(callback);
119
+ }
120
+ if (event) {
121
+ channel.listen(event, callback);
122
+ }
123
+ if (type === 'presence' && presenceHandlers) {
124
+ if (presenceHandlers.onListening) {
125
+ channel.listen(presenceHandlers.onListening.event, presenceHandlers.onListening.callback);
126
+ }
127
+ if (presenceHandlers.onHere) {
128
+ channel.here((members) => presenceHandlers.onHere?.(members));
129
+ }
130
+ if (presenceHandlers.onJoining) {
131
+ channel.joining((member) => presenceHandlers.onJoining?.(member));
132
+ }
133
+ if (presenceHandlers.onLeaving) {
134
+ channel.leaving((member) => presenceHandlers.onLeaving?.(member));
135
+ }
136
+ }
137
+ return channel;
138
+ }
139
+ /**
140
+ * Disconnect from the WebSocket server
141
+ */
142
+ disconnect() {
143
+ this.#echo?.disconnect();
144
+ this.#echo = null;
145
+ this.connectionPromise = null;
146
+ this.isConnected = false;
147
+ }
148
+ }
@@ -0,0 +1,35 @@
1
+ import { LogLevel } from '../../types/logging.types.js';
2
+ import type { LoggerInterface, TraceInfo } from '../../types/logging.types.js';
3
+ /**
4
+ * Abstract base logger class
5
+ * Provides common functionality for all logger implementations
6
+ */
7
+ export declare abstract class BaseLogger implements LoggerInterface {
8
+ protected readonly traceInfo: TraceInfo;
9
+ constructor(traceInfo: TraceInfo);
10
+ /**
11
+ * Gets the current trace info
12
+ */
13
+ getTraceInfo(): TraceInfo;
14
+ /**
15
+ * Format a log message with trace context
16
+ */
17
+ protected formatMessage(level: LogLevel, message: string, context?: Record<string, unknown>): string;
18
+ /**
19
+ * Abstract method for logging - must be implemented by subclasses
20
+ */
21
+ protected abstract writeLog(level: LogLevel, message: string, context?: Record<string, unknown>): void;
22
+ emergency(message: string, context?: Record<string, unknown>): void;
23
+ alert(message: string, context?: Record<string, unknown>): void;
24
+ critical(message: string, context?: Record<string, unknown>): void;
25
+ error(message: string, context?: Record<string, unknown>): void;
26
+ warning(message: string, context?: Record<string, unknown>): void;
27
+ notice(message: string, context?: Record<string, unknown>): void;
28
+ info(message: string, context?: Record<string, unknown>): void;
29
+ debug(message: string, context?: Record<string, unknown>): void;
30
+ /**
31
+ * Logs with an arbitrary level
32
+ */
33
+ log(level: string, message: string, context?: Record<string, unknown>): void;
34
+ }
35
+ //# sourceMappingURL=BaseLogger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseLogger.d.ts","sourceRoot":"","sources":["../../../src/services/logger/BaseLogger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAE/E;;;GAGG;AACH,8BAAsB,UAAW,YAAW,eAAe;IAC7C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS;gBAApB,SAAS,EAAE,SAAS;IAEnD;;OAEG;IACH,YAAY,IAAI,SAAS;IAIzB;;OAEG;IACH,SAAS,CAAC,aAAa,CACrB,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,MAAM;IAiBT;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAEtG,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAInE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/D,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIlE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/D,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIjE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIhE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI9D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/D;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAK7E"}
@@ -0,0 +1,66 @@
1
+ import { LogLevel } from '../../types/logging.types.js';
2
+ /**
3
+ * Abstract base logger class
4
+ * Provides common functionality for all logger implementations
5
+ */
6
+ export class BaseLogger {
7
+ traceInfo;
8
+ constructor(traceInfo) {
9
+ this.traceInfo = traceInfo;
10
+ }
11
+ /**
12
+ * Gets the current trace info
13
+ */
14
+ getTraceInfo() {
15
+ return this.traceInfo;
16
+ }
17
+ /**
18
+ * Format a log message with trace context
19
+ */
20
+ formatMessage(level, message, context) {
21
+ const parts = [
22
+ `[${level.toUpperCase()}]`,
23
+ `[${this.traceInfo.timestamp}]`,
24
+ `[${this.traceInfo.runtime}]`,
25
+ this.traceInfo.id ? `[trace:${this.traceInfo.id}]` : null,
26
+ this.traceInfo.tenant !== 'unknown' ? `[tenant:${this.traceInfo.tenant}]` : null,
27
+ message,
28
+ ].filter(Boolean);
29
+ if (context && Object.keys(context).length > 0) {
30
+ parts.push(JSON.stringify(context));
31
+ }
32
+ return parts.join(' ');
33
+ }
34
+ emergency(message, context) {
35
+ this.writeLog(LogLevel.EMERGENCY, message, context);
36
+ }
37
+ alert(message, context) {
38
+ this.writeLog(LogLevel.ALERT, message, context);
39
+ }
40
+ critical(message, context) {
41
+ this.writeLog(LogLevel.CRITICAL, message, context);
42
+ }
43
+ error(message, context) {
44
+ this.writeLog(LogLevel.ERROR, message, context);
45
+ }
46
+ warning(message, context) {
47
+ this.writeLog(LogLevel.WARNING, message, context);
48
+ }
49
+ notice(message, context) {
50
+ this.writeLog(LogLevel.NOTICE, message, context);
51
+ }
52
+ info(message, context) {
53
+ this.writeLog(LogLevel.INFO, message, context);
54
+ }
55
+ debug(message, context) {
56
+ this.writeLog(LogLevel.DEBUG, message, context);
57
+ }
58
+ /**
59
+ * Logs with an arbitrary level
60
+ */
61
+ log(level, message, context) {
62
+ // Map string level to LogLevel enum
63
+ const logLevel = level.toLowerCase() || LogLevel.INFO;
64
+ this.writeLog(logLevel, message, context);
65
+ }
66
+ }
@@ -0,0 +1,21 @@
1
+ import { LogLevel } from '../../types/logging.types.js';
2
+ import type { TraceInfo } from '../../types/logging.types.js';
3
+ import { BaseLogger } from './BaseLogger.js';
4
+ /**
5
+ * Console logger implementation
6
+ * Logs to the browser console with level filtering
7
+ */
8
+ export declare class ConsoleLogger extends BaseLogger {
9
+ private readonly minLevel;
10
+ constructor(traceInfo: TraceInfo, minLevel?: LogLevel);
11
+ /**
12
+ * Check if a log level should be displayed
13
+ */
14
+ private shouldLog;
15
+ /**
16
+ * Map log level to console method
17
+ */
18
+ private getConsoleMethod;
19
+ protected writeLog(level: LogLevel, message: string, context?: Record<string, unknown>): void;
20
+ }
21
+ //# sourceMappingURL=ConsoleLogger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConsoleLogger.d.ts","sourceRoot":"","sources":["../../../src/services/logger/ConsoleLogger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAgB7C;;;GAGG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;gBAExB,SAAS,EAAE,SAAS,EAAE,QAAQ,GAAE,QAAwB;IAKpE;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAS9F"}
@@ -0,0 +1,60 @@
1
+ import { LogLevel } from '../../types/logging.types.js';
2
+ import { BaseLogger } from './BaseLogger.js';
3
+ /**
4
+ * Log level priority mapping (higher number = higher priority)
5
+ */
6
+ const LOG_LEVEL_PRIORITY = {
7
+ [LogLevel.EMERGENCY]: 8,
8
+ [LogLevel.ALERT]: 7,
9
+ [LogLevel.CRITICAL]: 6,
10
+ [LogLevel.ERROR]: 5,
11
+ [LogLevel.WARNING]: 4,
12
+ [LogLevel.NOTICE]: 3,
13
+ [LogLevel.INFO]: 2,
14
+ [LogLevel.DEBUG]: 1,
15
+ };
16
+ /**
17
+ * Console logger implementation
18
+ * Logs to the browser console with level filtering
19
+ */
20
+ export class ConsoleLogger extends BaseLogger {
21
+ minLevel;
22
+ constructor(traceInfo, minLevel = LogLevel.INFO) {
23
+ super(traceInfo);
24
+ this.minLevel = minLevel;
25
+ }
26
+ /**
27
+ * Check if a log level should be displayed
28
+ */
29
+ shouldLog(level) {
30
+ return LOG_LEVEL_PRIORITY[level] >= LOG_LEVEL_PRIORITY[this.minLevel];
31
+ }
32
+ /**
33
+ * Map log level to console method
34
+ */
35
+ getConsoleMethod(level) {
36
+ switch (level) {
37
+ case LogLevel.EMERGENCY:
38
+ case LogLevel.ALERT:
39
+ case LogLevel.CRITICAL:
40
+ case LogLevel.ERROR:
41
+ return 'error';
42
+ case LogLevel.WARNING:
43
+ return 'warn';
44
+ case LogLevel.NOTICE:
45
+ case LogLevel.INFO:
46
+ return 'info';
47
+ case LogLevel.DEBUG:
48
+ default:
49
+ return 'log';
50
+ }
51
+ }
52
+ writeLog(level, message, context) {
53
+ if (!this.shouldLog(level)) {
54
+ return;
55
+ }
56
+ const formatted = this.formatMessage(level, message, context);
57
+ const method = this.getConsoleMethod(level);
58
+ console[method](formatted);
59
+ }
60
+ }
@@ -0,0 +1,10 @@
1
+ import type { LogLevel } from '../../types/logging.types.js';
2
+ import { BaseLogger } from './BaseLogger.js';
3
+ /**
4
+ * Null logger implementation
5
+ * Does nothing - useful for disabling logs
6
+ */
7
+ export declare class NullLogger extends BaseLogger {
8
+ protected writeLog(_level: LogLevel, _message: string, _context?: Record<string, unknown>): void;
9
+ }
10
+ //# sourceMappingURL=NullLogger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NullLogger.d.ts","sourceRoot":"","sources":["../../../src/services/logger/NullLogger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;GAGG;AACH,qBAAa,UAAW,SAAQ,UAAU;IACxC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAGjG"}
@@ -0,0 +1,10 @@
1
+ import { BaseLogger } from './BaseLogger.js';
2
+ /**
3
+ * Null logger implementation
4
+ * Does nothing - useful for disabling logs
5
+ */
6
+ export class NullLogger extends BaseLogger {
7
+ writeLog(_level, _message, _context) {
8
+ // No-op
9
+ }
10
+ }
@@ -0,0 +1,10 @@
1
+ import type { PiniaPluginContext } from 'pinia';
2
+ import type { QSsrContext } from '@quasar/app-vite';
3
+ /**
4
+ * Pinia plugin to inject the Quvel service container into every store as `$quvel`.
5
+ * Handles SSR context or falls back to the client container.
6
+ */
7
+ export declare function serviceContainerPlugin(context: PiniaPluginContext, ssrContext?: QSsrContext | null): {
8
+ $quvel: import("vue").Raw<import("../../index.js").ServiceContainer>;
9
+ };
10
+ //# sourceMappingURL=serviceContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceContainer.d.ts","sourceRoot":"","sources":["../../../src/stores/plugins/serviceContainer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIpD;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,kBAAkB,EAC3B,UAAU,CAAC,EAAE,WAAW,GAAG,IAAI;;EAUhC"}
@@ -0,0 +1,14 @@
1
+ import { useQuvel } from '../../composables/useQuvel.js';
2
+ import { markRaw } from 'vue';
3
+ /**
4
+ * Pinia plugin to inject the Quvel service container into every store as `$quvel`.
5
+ * Handles SSR context or falls back to the client container.
6
+ */
7
+ export function serviceContainerPlugin(context, ssrContext) {
8
+ // markRaw to prevent Vue from making it reactive
9
+ const rawContainer = markRaw(ssrContext?.$quvel ?? useQuvel());
10
+ context.store.$quvel = rawContainer;
11
+ return {
12
+ $quvel: rawContainer,
13
+ };
14
+ }
@@ -0,0 +1,71 @@
1
+ import type { IUser } from '../types/user.types.js';
2
+ /**
3
+ * Type for the authenticated user.
4
+ * Supports custom user models via generic type parameter.
5
+ */
6
+ type StateUser<T extends IUser = IUser> = T | null;
7
+ /**
8
+ * Interface defining the structure of the session state.
9
+ */
10
+ interface SessionState<T extends IUser = IUser> {
11
+ user: StateUser<T>;
12
+ initialized: boolean;
13
+ }
14
+ /**
15
+ * Interface defining getters for the session store.
16
+ */
17
+ type SessionGetters<T extends IUser = IUser> = {
18
+ isAuthenticated: (state: SessionState<T>) => boolean;
19
+ isInitialized: (state: SessionState<T>) => boolean;
20
+ getUser: (state: SessionState<T>) => StateUser<T>;
21
+ };
22
+ /**
23
+ * Interface defining actions for the session store.
24
+ */
25
+ interface SessionActions<T extends IUser = IUser> {
26
+ setSession(data: IUser): void;
27
+ clearSession(): void;
28
+ markInitialized(): void;
29
+ fetchSession(): Promise<void>;
30
+ getUserFactory(): (data: IUser) => T;
31
+ }
32
+ /**
33
+ * Pinia store for managing user session state.
34
+ *
35
+ * This is a generic session store that can be extended with auth-specific
36
+ * actions (login, signup, etc.) in your application.
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * // Use in a component
41
+ * const session = useSessionStore();
42
+ *
43
+ * // Check auth status
44
+ * if (session.isAuthenticated) {
45
+ * console.log(session.user?.name);
46
+ * }
47
+ *
48
+ * // Set session (typically after login)
49
+ * session.setSession(userData);
50
+ *
51
+ * // Clear session (typically after logout)
52
+ * session.clearSession();
53
+ * ```
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * // Extend with custom actions
58
+ * export const useAuthStore = defineStore('auth', {
59
+ * ...useSessionStore(),
60
+ * actions: {
61
+ * async login(email: string, password: string) {
62
+ * const response = await authService.login(email, password);
63
+ * this.setSession(response.user);
64
+ * }
65
+ * }
66
+ * });
67
+ * ```
68
+ */
69
+ export declare const useSessionStore: import("pinia").StoreDefinition<"session", SessionState<IUser>, SessionGetters<IUser>, SessionActions<IUser>>;
70
+ export {};
71
+ //# sourceMappingURL=sessionStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionStore.d.ts","sourceRoot":"","sources":["../../src/stores/sessionStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAIpD;;;GAGG;AACH,KAAK,SAAS,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;AAEnD;;GAEG;AACH,UAAU,YAAY,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK;IAC5C,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,KAAK,cAAc,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,IAAI;IAC7C,eAAe,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;IACrD,aAAa,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;IACnD,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC;CACnD,CAAC;AAEF;;GAEG;AACH,UAAU,cAAc,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK;IAC9C,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;IAC9B,YAAY,IAAI,IAAI,CAAC;IACrB,eAAe,IAAI,IAAI,CAAC;IACxB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,cAAc,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC;CACtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,eAAe,+GA+F1B,CAAC"}