@quvel-kit/core 1.3.5 → 1.3.7

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 (35) hide show
  1. package/dist/auth/index.d.ts +1 -0
  2. package/dist/auth/index.d.ts.map +1 -1
  3. package/dist/auth/index.js +2 -0
  4. package/dist/{stores → auth/stores}/sessionStore.d.ts +12 -12
  5. package/dist/auth/stores/sessionStore.d.ts.map +1 -0
  6. package/dist/{stores → auth/stores}/sessionStore.js +6 -6
  7. package/dist/boot/quvel.d.ts +5 -6
  8. package/dist/boot/quvel.d.ts.map +1 -1
  9. package/dist/boot/quvel.js +9 -5
  10. package/dist/build/quasarConfig.d.ts +62 -2
  11. package/dist/build/quasarConfig.d.ts.map +1 -1
  12. package/dist/build/quasarConfig.js +129 -111
  13. package/dist/composables/useMetaConfig.d.ts.map +1 -1
  14. package/dist/composables/useMetaConfig.js +11 -12
  15. package/dist/config/quvel.d.ts.map +1 -1
  16. package/dist/config/quvel.js +2 -1
  17. package/dist/config/quvel.types.d.ts +10 -0
  18. package/dist/config/quvel.types.d.ts.map +1 -1
  19. package/dist/container/ServiceContainer.d.ts +7 -8
  20. package/dist/container/ServiceContainer.d.ts.map +1 -1
  21. package/dist/index.d.ts +0 -2
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +0 -3
  24. package/dist/services/TaskService.d.ts +22 -10
  25. package/dist/services/TaskService.d.ts.map +1 -1
  26. package/dist/services/TaskService.js +5 -2
  27. package/dist/types/task.types.d.ts +21 -5
  28. package/dist/types/task.types.d.ts.map +1 -1
  29. package/dist/types/user.types.d.ts +20 -1
  30. package/dist/types/user.types.d.ts.map +1 -1
  31. package/package.json +1 -1
  32. package/dist/models/User.d.ts +0 -32
  33. package/dist/models/User.d.ts.map +0 -1
  34. package/dist/models/User.js +0 -48
  35. package/dist/stores/sessionStore.d.ts.map +0 -1
@@ -10,4 +10,5 @@ export type { DefineAuthGuardConfig } from './boot/defineAuthGuard.js';
10
10
  export type { AuthMeta } from './types/index.js';
11
11
  export { createAuthMeta, createGuestOnlyAuth, createProtectedAuth, createPublicAuth, createSkipAuth, } from './utils/auth-meta.js';
12
12
  export { AuthStatus } from './enums/AuthStatusEnum.js';
13
+ export { useSessionStore } from './stores/sessionStore.js';
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,yBAAyB,EACzB,SAAS,GACV,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,8BAA8B,GAC/B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGvE,YAAY,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,yBAAyB,EACzB,SAAS,GACV,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,8BAA8B,GAC/B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGvE,YAAY,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAGvD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC"}
@@ -11,3 +11,5 @@ export { defineAuthGuard } from './boot/defineAuthGuard.js';
11
11
  export { createAuthMeta, createGuestOnlyAuth, createProtectedAuth, createPublicAuth, createSkipAuth, } from './utils/auth-meta.js';
12
12
  // Enums
13
13
  export { AuthStatus } from './enums/AuthStatusEnum.js';
14
+ // Stores
15
+ export { useSessionStore } from './stores/sessionStore.js';
@@ -1,33 +1,33 @@
1
- import type { IUser } from '../types/user.types.js';
1
+ import type { IUser, QuvelTypes } from '../../types/user.types.js';
2
2
  /**
3
3
  * Type for the authenticated user.
4
- * Supports custom user models via generic type parameter.
4
+ * Uses QuvelTypes['User'] which can be augmented by consuming applications.
5
5
  */
6
- type StateUser<T extends IUser = IUser> = T | null;
6
+ type StateUser = QuvelTypes['User'] | null;
7
7
  /**
8
8
  * Interface defining the structure of the session state.
9
9
  */
10
- interface SessionState<T extends IUser = IUser> {
11
- user: StateUser<T>;
10
+ interface SessionState {
11
+ user: StateUser;
12
12
  initialized: boolean;
13
13
  }
14
14
  /**
15
15
  * Interface defining getters for the session store.
16
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>;
17
+ type SessionGetters = {
18
+ isAuthenticated: (state: SessionState) => boolean;
19
+ isInitialized: (state: SessionState) => boolean;
20
+ getUser: (state: SessionState) => StateUser;
21
21
  };
22
22
  /**
23
23
  * Interface defining actions for the session store.
24
24
  */
25
- interface SessionActions<T extends IUser = IUser> {
25
+ interface SessionActions {
26
26
  setSession(data: IUser): void;
27
27
  clearSession(): void;
28
28
  markInitialized(): void;
29
29
  fetchSession(): Promise<void>;
30
- getUserFactory(): (data: IUser) => T;
30
+ getUserFactory(): (data: IUser) => QuvelTypes['User'];
31
31
  }
32
32
  /**
33
33
  * Pinia store for managing user session state.
@@ -66,6 +66,6 @@ interface SessionActions<T extends IUser = IUser> {
66
66
  * });
67
67
  * ```
68
68
  */
69
- export declare const useSessionStore: import("pinia").StoreDefinition<"session", SessionState<IUser>, SessionGetters<IUser>, SessionActions<IUser>>;
69
+ export declare const useSessionStore: import("pinia").StoreDefinition<"session", SessionState, SessionGetters, SessionActions>;
70
70
  export {};
71
71
  //# sourceMappingURL=sessionStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionStore.d.ts","sourceRoot":"","sources":["../../../src/auth/stores/sessionStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAGnE;;;GAGG;AACH,KAAK,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AAE3C;;GAEG;AACH,UAAU,YAAY;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,KAAK,cAAc,GAAG;IACpB,eAAe,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC;IAClD,aAAa,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC;IAChD,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,SAAS,CAAC;CAC7C,CAAC;AAEF;;GAEG;AACH,UAAU,cAAc;IACtB,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,UAAU,CAAC,MAAM,CAAC,CAAC;CACvD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,eAAe,0FAiG1B,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import { acceptHMRUpdate, defineStore } from 'pinia';
2
- import { defaultUserFactory } from '../models/User.js';
3
- import { AuthService } from '../auth/services/AuthService.js';
2
+ import { AuthService } from '../services/AuthService.js';
4
3
  /**
5
4
  * Pinia store for managing user session state.
6
5
  *
@@ -63,11 +62,13 @@ export const useSessionStore = defineStore('session', {
63
62
  * This allows users to provide custom user models.
64
63
  */
65
64
  getUserFactory() {
65
+ // Default factory just returns the data as-is (IUser compatible)
66
+ const defaultFactory = (data) => data;
66
67
  try {
67
- return this.$quvel.config.userFactory || defaultUserFactory;
68
+ return this.$quvel.config.userFactory || defaultFactory;
68
69
  }
69
70
  catch {
70
- return defaultUserFactory;
71
+ return defaultFactory;
71
72
  }
72
73
  },
73
74
  /**
@@ -104,8 +105,7 @@ export const useSessionStore = defineStore('session', {
104
105
  return;
105
106
  }
106
107
  try {
107
- const authService = this.$quvel.get(AuthService);
108
- const userData = await authService.fetchSession();
108
+ const userData = await this.$quvel.get(AuthService).fetchSession();
109
109
  if (userData) {
110
110
  this.setSession(userData);
111
111
  }
@@ -1,25 +1,24 @@
1
1
  import type { App } from 'vue';
2
2
  import type { QSsrContext } from '@quasar/app-vite';
3
- import type { ServiceRegistry } from '../modules/types.js';
3
+ import type { QuvelConfig } from '../config/quvel.types.js';
4
4
  /**
5
5
  * Define Quvel boot function
6
6
  *
7
7
  * This helper creates a Quasar boot function that initializes the Quvel service container
8
8
  * with services from modules.
9
9
  *
10
- * @param serviceRegistry - Services from modules (getServices(modules))
10
+ * @param quvelConfig - The Quvel configuration from defineQuvelConfig()
11
11
  * @returns Boot function for Quasar
12
12
  *
13
13
  * @example
14
14
  * ```ts
15
15
  * import { defineQuvelBoot } from '@quvel-kit/core';
16
- * import { getServices } from '@quvel-kit/core';
17
- * import { modules } from '../modules';
16
+ * import { config } from 'src/quvel';
18
17
  *
19
- * export default defineQuvelBoot(getServices(modules));
18
+ * export default defineQuvelBoot(config);
20
19
  * ```
21
20
  */
22
- export declare function defineQuvelBoot(serviceRegistry: ServiceRegistry): ({ ssrContext, app }: {
21
+ export declare function defineQuvelBoot(quvelConfig: QuvelConfig): ({ ssrContext, app }: {
23
22
  ssrContext?: QSsrContext | null;
24
23
  app: App;
25
24
  }) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"quvel.d.ts","sourceRoot":"","sources":["../../src/boot/quvel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAK3D;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,eAAe,EAAE,eAAe,IACtD,qBAAqB;IAC3B,UAAU,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,GAAG,EAAE,GAAG,CAAC;CACV,UAmBF"}
1
+ {"version":3,"file":"quvel.d.ts","sourceRoot":"","sources":["../../src/boot/quvel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAI5D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,WAAW,IAC9C,qBAAqB;IAC3B,UAAU,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,GAAG,EAAE,GAAG,CAAC;CACV,UAyBF"}
@@ -6,25 +6,29 @@ import { ContainerKey, setClientContainer } from '../composables/useQuvel.js';
6
6
  * This helper creates a Quasar boot function that initializes the Quvel service container
7
7
  * with services from modules.
8
8
  *
9
- * @param serviceRegistry - Services from modules (getServices(modules))
9
+ * @param quvelConfig - The Quvel configuration from defineQuvelConfig()
10
10
  * @returns Boot function for Quasar
11
11
  *
12
12
  * @example
13
13
  * ```ts
14
14
  * import { defineQuvelBoot } from '@quvel-kit/core';
15
- * import { getServices } from '@quvel-kit/core';
16
- * import { modules } from '../modules';
15
+ * import { config } from 'src/quvel';
17
16
  *
18
- * export default defineQuvelBoot(getServices(modules));
17
+ * export default defineQuvelBoot(config);
19
18
  * ```
20
19
  */
21
- export function defineQuvelBoot(serviceRegistry) {
20
+ export function defineQuvelBoot(quvelConfig) {
22
21
  return ({ ssrContext, app }) => {
23
22
  const serviceMap = new Map();
23
+ const serviceRegistry = quvelConfig.getServices();
24
24
  for (const [name, ServiceCls] of Object.entries(serviceRegistry)) {
25
25
  serviceMap.set(name, ServiceCls);
26
26
  }
27
27
  const container = createContainer(ssrContext, serviceMap);
28
+ // Apply config from QuvelConfig
29
+ if (quvelConfig.userFactory) {
30
+ container.config.userFactory = quvelConfig.userFactory;
31
+ }
28
32
  if (ssrContext) {
29
33
  ssrContext.$quvel = container;
30
34
  }
@@ -4,10 +4,69 @@
4
4
  * Configuration utilities for Quasar applications
5
5
  */
6
6
  /**
7
- * Configuration helper for Quasar applications
7
+ * Create a configuration helper for Quasar applications
8
8
  *
9
- * Provides infrastructure settings and app metadata
9
+ * Loads environment variables from .env files in the current working directory
10
+ * and provides infrastructure settings and app metadata.
11
+ *
12
+ * @returns Configuration object with helpers for HTTPS, infrastructure, app, and SSR settings
10
13
  */
14
+ declare function createQuasarConfig(): {
15
+ /**
16
+ * HTTPS/SSL configuration
17
+ */
18
+ https: {
19
+ /** Check if HTTPS is enabled */
20
+ isEnabled(): boolean;
21
+ /** Get SSL certificate paths (returns false if HTTPS disabled) */
22
+ getCerts(): {
23
+ key: string;
24
+ cert: string;
25
+ ca: string;
26
+ } | false;
27
+ };
28
+ /**
29
+ * Infrastructure configuration
30
+ */
31
+ infra: {
32
+ /** Check if running in local development mode */
33
+ isLocal(): boolean;
34
+ /** Get host based on type */
35
+ getHost(type?: "dev" | "tenant" | "prod"): string;
36
+ /** Get dev server port for a specific mode */
37
+ getPort(mode: "ssr" | "spa" | "capacitor" | "electron" | "pwa"): number;
38
+ /** Get Vite HMR port for SSR/PWA modes */
39
+ getHmrPort(mode: "ssr" | "pwa"): number;
40
+ /** Get a production server port (SSR only) */
41
+ getProdPort(): number;
42
+ /** Get a list of allowed hosts */
43
+ getAllowedHosts(): string[];
44
+ /** Get HMR configuration for reverse proxy setups */
45
+ getHMR(): {
46
+ protocol: string;
47
+ host: string;
48
+ port: number;
49
+ };
50
+ };
51
+ /**
52
+ * Application metadata
53
+ */
54
+ app: {
55
+ /** Get application ID */
56
+ getId(): string;
57
+ /** Get application name */
58
+ getName(): string;
59
+ /** Get application short name */
60
+ getShortName(): string;
61
+ };
62
+ /**
63
+ * SSR configuration
64
+ */
65
+ ssr: {
66
+ /** Check if PWA is enabled in SSR mode */
67
+ isPwaEnabled(): boolean;
68
+ };
69
+ };
11
70
  export declare const config: {
12
71
  /**
13
72
  * HTTPS/SSL configuration
@@ -64,4 +123,5 @@ export declare const config: {
64
123
  isPwaEnabled(): boolean;
65
124
  };
66
125
  };
126
+ export { createQuasarConfig };
67
127
  //# sourceMappingURL=quasarConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"quasarConfig.d.ts","sourceRoot":"","sources":["../../src/build/quasarConfig.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmBH;;;;GAIG;AACH,eAAO,MAAM,MAAM;IACjB;;OAEG;;QAED,gCAAgC;qBACnB,OAAO;QAIpB,kEAAkE;oBACtD;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,GAAG,KAAK;;IAa/D;;OAEG;;QAED,iDAAiD;mBACtC,OAAO;QAIlB,6BAA6B;uBACf,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAW,MAAM;QAWxD,8CAA8C;sBAChC,KAAK,GAAG,KAAK,GAAG,WAAW,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM;QAYvE,0CAA0C;yBACzB,KAAK,GAAG,KAAK,GAAG,MAAM;QASvC,8CAA8C;uBAC/B,MAAM;QAIrB,kCAAkC;2BACf,MAAM,EAAE;QAI3B,qDAAqD;kBAC3C;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE;;IAS5D;;OAEG;;QAED,yBAAyB;iBAChB,MAAM;QAIf,2BAA2B;mBAChB,MAAM;QAIjB,iCAAiC;wBACjB,MAAM;;IAKxB;;OAEG;;QAED,0CAA0C;wBAC1B,OAAO;;CAI1B,CAAC"}
1
+ {"version":3,"file":"quasarConfig.d.ts","sourceRoot":"","sources":["../../src/build/quasarConfig.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;;;;;;GAOG;AACH,iBAAS,kBAAkB;IAgBzB;;OAEG;;QAED,gCAAgC;qBACnB,OAAO;QAIpB,kEAAkE;oBACtD;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,GAAG,KAAK;;IAa/D;;OAEG;;QAED,iDAAiD;mBACtC,OAAO;QAIlB,6BAA6B;uBACf,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAW,MAAM;QAWxD,8CAA8C;sBAChC,KAAK,GAAG,KAAK,GAAG,WAAW,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM;QAYvE,0CAA0C;yBACzB,KAAK,GAAG,KAAK,GAAG,MAAM;QASvC,8CAA8C;uBAC/B,MAAM;QAIrB,kCAAkC;2BACf,MAAM,EAAE;QAI3B,qDAAqD;kBAC3C;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE;;IAS5D;;OAEG;;QAED,yBAAyB;iBAChB,MAAM;QAIf,2BAA2B;mBAChB,MAAM;QAIjB,iCAAiC;wBACjB,MAAM;;IAKxB;;OAEG;;QAED,0CAA0C;wBAC1B,OAAO;;EAK1B;AAOD,eAAO,MAAM,MAAM;IA5HjB;;OAEG;;QAED,gCAAgC;qBACnB,OAAO;QAIpB,kEAAkE;oBACtD;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,GAAG,KAAK;;IAa/D;;OAEG;;QAED,iDAAiD;mBACtC,OAAO;QAIlB,6BAA6B;uBACf,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAW,MAAM;QAWxD,8CAA8C;sBAChC,KAAK,GAAG,KAAK,GAAG,WAAW,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM;QAYvE,0CAA0C;yBACzB,KAAK,GAAG,KAAK,GAAG,MAAM;QASvC,8CAA8C;uBAC/B,MAAM;QAIrB,kCAAkC;2BACf,MAAM,EAAE;QAI3B,qDAAqD;kBAC3C;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE;;IAS5D;;OAEG;;QAED,yBAAyB;iBAChB,MAAM;QAIf,2BAA2B;mBAChB,MAAM;QAIjB,iCAAiC;wBACjB,MAAM;;IAKxB;;OAEG;;QAED,0CAA0C;wBAC1B,OAAO;;CAmBzB,CAAC;AAEH,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -5,122 +5,140 @@
5
5
  */
6
6
  import { EnvConfig } from './envConfig.js';
7
7
  import { loadEnvFiles } from './loadEnv.js';
8
- // Determine which env files to load based on NODE_ENV
9
- const nodeEnv = process.env.NODE_ENV || 'development';
10
- const envMode = nodeEnv === 'production' ? 'prod' : 'dev';
11
- const envFiles = [
12
- '.env',
13
- `.env.${envMode}`,
14
- '.env.local',
15
- `.env.${envMode}.local`,
16
- ];
17
- const envVars = loadEnvFiles(process.cwd(), envFiles);
18
- const envConfig = new EnvConfig({ env: envVars });
19
8
  /**
20
- * Configuration helper for Quasar applications
9
+ * Create a configuration helper for Quasar applications
21
10
  *
22
- * Provides infrastructure settings and app metadata
11
+ * Loads environment variables from .env files in the current working directory
12
+ * and provides infrastructure settings and app metadata.
13
+ *
14
+ * @returns Configuration object with helpers for HTTPS, infrastructure, app, and SSR settings
23
15
  */
24
- export const config = {
25
- /**
26
- * HTTPS/SSL configuration
27
- */
28
- https: {
29
- /** Check if HTTPS is enabled */
30
- isEnabled() {
31
- return envConfig.getBoolean('HTTPS_ENABLED', true);
32
- },
33
- /** Get SSL certificate paths (returns false if HTTPS disabled) */
34
- getCerts() {
35
- if (!this.isEnabled()) {
36
- return false;
37
- }
38
- return {
39
- key: envConfig.get('CERT_KEY_PATH', '../docker/certs/selfsigned.key'),
40
- cert: envConfig.get('CERT_PATH', '../docker/certs/selfsigned.crt'),
41
- ca: envConfig.get('CERT_CA_PATH', '../docker/certs/ca.pem'),
42
- };
43
- },
44
- },
45
- /**
46
- * Infrastructure configuration
47
- */
48
- infra: {
49
- /** Check if running in local development mode */
50
- isLocal() {
51
- return envConfig.getBoolean('LOCAL', false);
16
+ function createQuasarConfig() {
17
+ // Determine which env files to load based on NODE_ENV
18
+ const nodeEnv = process.env.NODE_ENV || 'development';
19
+ const envMode = nodeEnv === 'production' ? 'prod' : 'dev';
20
+ const envFiles = [
21
+ '.env',
22
+ `.env.${envMode}`,
23
+ '.env.local',
24
+ `.env.${envMode}.local`,
25
+ ];
26
+ const envVars = loadEnvFiles(process.cwd(), envFiles);
27
+ const envConfig = new EnvConfig({ env: envVars });
28
+ return {
29
+ /**
30
+ * HTTPS/SSL configuration
31
+ */
32
+ https: {
33
+ /** Check if HTTPS is enabled */
34
+ isEnabled() {
35
+ return envConfig.getBoolean('HTTPS_ENABLED', true);
36
+ },
37
+ /** Get SSL certificate paths (returns false if HTTPS disabled) */
38
+ getCerts() {
39
+ if (!this.isEnabled()) {
40
+ return false;
41
+ }
42
+ return {
43
+ key: envConfig.get('CERT_KEY_PATH', '../docker/certs/selfsigned.key'),
44
+ cert: envConfig.get('CERT_PATH', '../docker/certs/selfsigned.crt'),
45
+ ca: envConfig.get('CERT_CA_PATH', '../docker/certs/ca.pem'),
46
+ };
47
+ },
52
48
  },
53
- /** Get host based on type */
54
- getHost(type = 'dev') {
55
- switch (type) {
56
- case 'tenant':
57
- return envConfig.get('DEV_TENANT_HOST', 'cap-tenant.quvel.127.0.0.1.nip.io');
58
- case 'prod':
59
- return envConfig.get('PROD_HOST', '0.0.0.0');
60
- default:
61
- return envConfig.get('DEV_HOST', 'quvel.127.0.0.1.nip.io');
62
- }
49
+ /**
50
+ * Infrastructure configuration
51
+ */
52
+ infra: {
53
+ /** Check if running in local development mode */
54
+ isLocal() {
55
+ return envConfig.getBoolean('LOCAL', false);
56
+ },
57
+ /** Get host based on type */
58
+ getHost(type = 'dev') {
59
+ switch (type) {
60
+ case 'tenant':
61
+ return envConfig.get('DEV_TENANT_HOST', 'localhost');
62
+ case 'prod':
63
+ return envConfig.get('PROD_HOST', '0.0.0.0');
64
+ default:
65
+ return envConfig.get('DEV_HOST', 'localhost');
66
+ }
67
+ },
68
+ /** Get dev server port for a specific mode */
69
+ getPort(mode) {
70
+ const defaults = {
71
+ ssr: 3000,
72
+ spa: 3001,
73
+ capacitor: 3002,
74
+ electron: 3003,
75
+ pwa: 3004,
76
+ };
77
+ return envConfig.getNumber(`${mode.toUpperCase()}_DEV_PORT`, defaults[mode]);
78
+ },
79
+ /** Get Vite HMR port for SSR/PWA modes */
80
+ getHmrPort(mode) {
81
+ const defaults = {
82
+ ssr: 9001,
83
+ pwa: 9003,
84
+ };
85
+ return envConfig.getNumber(`${mode.toUpperCase()}_VITE_PORT`, defaults[mode]);
86
+ },
87
+ /** Get a production server port (SSR only) */
88
+ getProdPort() {
89
+ return envConfig.getNumber('SSR_PROD_PORT', 3000);
90
+ },
91
+ /** Get a list of allowed hosts */
92
+ getAllowedHosts() {
93
+ return envConfig.getArray('ALLOWED_HOSTS', ['localhost', '127.0.0.1']);
94
+ },
95
+ /** Get HMR configuration for reverse proxy setups */
96
+ getHMR() {
97
+ return {
98
+ protocol: envConfig.get('HMR_PROTOCOL', 'wss'),
99
+ host: envConfig.get('HMR_HOST', 'localhost'),
100
+ port: envConfig.getNumber('HMR_PORT', 443),
101
+ };
102
+ },
63
103
  },
64
- /** Get dev server port for a specific mode */
65
- getPort(mode) {
66
- const defaults = {
67
- ssr: 3000,
68
- spa: 3001,
69
- capacitor: 3002,
70
- electron: 3003,
71
- pwa: 3004,
72
- };
73
- return envConfig.getNumber(`${mode.toUpperCase()}_DEV_PORT`, defaults[mode]);
104
+ /**
105
+ * Application metadata
106
+ */
107
+ app: {
108
+ /** Get application ID */
109
+ getId() {
110
+ return envConfig.get('APP_ID', 'com.example.app');
111
+ },
112
+ /** Get application name */
113
+ getName() {
114
+ return envConfig.get('VITE_APP_NAME', 'Quasar App');
115
+ },
116
+ /** Get application short name */
117
+ getShortName() {
118
+ return envConfig.get('APP_SHORT_NAME', 'App');
119
+ },
74
120
  },
75
- /** Get Vite HMR port for SSR/PWA modes */
76
- getHmrPort(mode) {
77
- const defaults = {
78
- ssr: 9001,
79
- pwa: 9003,
80
- };
81
- return envConfig.getNumber(`${mode.toUpperCase()}_VITE_PORT`, defaults[mode]);
82
- },
83
- /** Get a production server port (SSR only) */
84
- getProdPort() {
85
- return envConfig.getNumber('SSR_PROD_PORT', 3000);
86
- },
87
- /** Get a list of allowed hosts */
88
- getAllowedHosts() {
89
- return envConfig.getArray('ALLOWED_HOSTS', ['quvel.127.0.0.1.nip.io']);
90
- },
91
- /** Get HMR configuration for reverse proxy setups */
92
- getHMR() {
93
- return {
94
- protocol: envConfig.get('HMR_PROTOCOL', 'wss'),
95
- host: envConfig.get('HMR_HOST', 'quvel.127.0.0.1.nip.io'),
96
- port: envConfig.getNumber('HMR_PORT', 443),
97
- };
98
- },
99
- },
100
- /**
101
- * Application metadata
102
- */
103
- app: {
104
- /** Get application ID */
105
- getId() {
106
- return envConfig.get('APP_ID', 'quvel.irv.codes');
107
- },
108
- /** Get application name */
109
- getName() {
110
- return envConfig.get('VITE_APP_NAME', 'QuVel Kit');
111
- },
112
- /** Get application short name */
113
- getShortName() {
114
- return envConfig.get('APP_SHORT_NAME', 'QuVel');
115
- },
116
- },
117
- /**
118
- * SSR configuration
119
- */
120
- ssr: {
121
- /** Check if PWA is enabled in SSR mode */
122
- isPwaEnabled() {
123
- return envConfig.getBoolean('SSR_PWA', false);
121
+ /**
122
+ * SSR configuration
123
+ */
124
+ ssr: {
125
+ /** Check if PWA is enabled in SSR mode */
126
+ isPwaEnabled() {
127
+ return envConfig.getBoolean('SSR_PWA', false);
128
+ },
124
129
  },
130
+ };
131
+ }
132
+ /**
133
+ * Default config instance
134
+ */
135
+ let _config = null;
136
+ export const config = new Proxy({}, {
137
+ get(_target, prop) {
138
+ if (!_config) {
139
+ _config = createQuasarConfig();
140
+ }
141
+ return _config[prop];
125
142
  },
126
- };
143
+ });
144
+ export { createQuasarConfig };
@@ -1 +1 @@
1
- {"version":3,"file":"useMetaConfig.d.ts","sourceRoot":"","sources":["../../src/composables/useMetaConfig.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAwEpF"}
1
+ {"version":3,"file":"useMetaConfig.d.ts","sourceRoot":"","sources":["../../src/composables/useMetaConfig.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAoEpF"}
@@ -16,19 +16,18 @@ export function useMetaConfig(pageTitle, overrides) {
16
16
  // Get app meta-configuration from the service container
17
17
  const { config } = useQuvel();
18
18
  const appMeta = config.meta || {};
19
- // Use app configuration or fallback to defaults
20
- const title = pageTitle ?? appMeta?.title ?? 'A Modern Hybrid App Framework';
19
+ // Use app configuration or fallback to empty defaults
20
+ const title = pageTitle ?? appMeta?.title ?? '';
21
21
  // Create the title template function from app config or use default
22
22
  const titleTemplate = appMeta?.titleTemplate
23
23
  ? (title) => appMeta.titleTemplate.replace('%s', title)
24
- : (title) => `${title} - QuVel Kit`;
25
- const description = appMeta?.description ??
26
- 'QuVel Kit is a Laravel & Quasar hybrid framework optimized for SSR and seamless development.';
27
- const keywords = appMeta?.keywords ?? 'Quasar, Laravel, SSR, Hybrid, Framework';
28
- const ogTitle = appMeta?.ogTitle ?? pageTitle ?? 'QuVel Kit';
29
- const ogDescription = appMeta?.ogDescription ?? 'A powerful Laravel & Quasar SSR framework for building modern apps.';
30
- const twitterTitle = appMeta?.twitterTitle ?? pageTitle ?? 'QuVel Kit';
31
- const twitterDescription = appMeta?.twitterDescription ?? 'A Laravel & Quasar hybrid framework optimized for SSR.';
24
+ : (title) => title;
25
+ const description = appMeta?.description ?? '';
26
+ const keywords = appMeta?.keywords ?? '';
27
+ const ogTitle = appMeta?.ogTitle ?? pageTitle ?? '';
28
+ const ogDescription = appMeta?.ogDescription ?? '';
29
+ const twitterTitle = appMeta?.twitterTitle ?? pageTitle ?? '';
30
+ const twitterDescription = appMeta?.twitterDescription ?? '';
32
31
  useMeta({
33
32
  title,
34
33
  titleTemplate,
@@ -63,8 +62,8 @@ export function useMetaConfig(pageTitle, overrides) {
63
62
  innerHTML: JSON.stringify({
64
63
  '@context': 'https://schema.org',
65
64
  '@type': 'WebSite',
66
- name: appMeta?.title ?? 'QuVel Kit',
67
- url: config.frontend?.url ?? 'https://quvelkit.com',
65
+ name: appMeta?.title ?? '',
66
+ url: config.frontend?.url ?? '',
68
67
  description,
69
68
  }),
70
69
  },
@@ -1 +1 @@
1
- {"version":3,"file":"quvel.d.ts","sourceRoot":"","sources":["../../src/config/quvel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAItE,OAAO,EAAqB,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAI7F;;GAEG;AACH,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAErF;;GAEG;AACH,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,WAAW,CA4CvE"}
1
+ {"version":3,"file":"quvel.d.ts","sourceRoot":"","sources":["../../src/config/quvel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAItE,OAAO,EAAqB,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAI7F;;GAEG;AACH,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAErF;;GAEG;AACH,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,WAAW,CA8CvE"}
@@ -36,7 +36,7 @@ export { DEFAULT_LOCALE_MAPPING };
36
36
  * ```
37
37
  */
38
38
  export function defineQuvelConfig(config) {
39
- const { modules = [], localeMapping, core = true, } = config;
39
+ const { modules = [], localeMapping, core = true, userFactory, } = config;
40
40
  const allModules = [];
41
41
  if (core) {
42
42
  const coreOptions = typeof core === 'object' ? core : {};
@@ -55,6 +55,7 @@ export function defineQuvelConfig(config) {
55
55
  modules: allModules,
56
56
  messages,
57
57
  localeMapping: resolvedLocaleMapping,
58
+ userFactory,
58
59
  getRoutes() {
59
60
  return getRoutes(allModules);
60
61
  },
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import type { RouteRecordRaw } from 'vue-router';
7
7
  import type { Module, ServiceRegistry } from '../modules/types.js';
8
+ import type { UserFactory } from '../types/user.types.js';
8
9
  /**
9
10
  * Locale mapping configuration for validation
10
11
  * Maps i18n locale codes to Zod locale codes
@@ -38,6 +39,11 @@ export interface QuvelConfigInput {
38
39
  */
39
40
  includeI18n?: boolean;
40
41
  };
42
+ /**
43
+ * User factory function for creating user instances
44
+ * Override to use a custom user model
45
+ */
46
+ userFactory?: UserFactory;
41
47
  }
42
48
  /**
43
49
  * Resolved Quvel configuration
@@ -56,6 +62,10 @@ export interface QuvelConfig {
56
62
  * Locale mapping for validation
57
63
  */
58
64
  localeMapping: LocaleMapping;
65
+ /**
66
+ * User factory function for creating user instances
67
+ */
68
+ userFactory?: UserFactory;
59
69
  /**
60
70
  * Get all routes from modules
61
71
  */
@@ -1 +1 @@
1
- {"version":3,"file":"quvel.types.d.ts","sourceRoot":"","sources":["../../src/config/quvel.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEnE;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG;QACf;;;WAGG;QACH,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAElD;;OAEG;IACH,aAAa,EAAE,aAAa,CAAC;IAE7B;;OAEG;IACH,SAAS,IAAI,cAAc,EAAE,CAAC;IAE9B;;OAEG;IACH,WAAW,IAAI,eAAe,CAAC;IAE/B;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1D"}
1
+ {"version":3,"file":"quvel.types.d.ts","sourceRoot":"","sources":["../../src/config/quvel.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG;QACf;;;WAGG;QACH,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,CAAC;IAEF;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAElD;;OAEG;IACH,aAAa,EAAE,aAAa,CAAC;IAE7B;;OAEG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;OAEG;IACH,SAAS,IAAI,cAAc,EAAE,CAAC;IAE9B;;OAEG;IACH,WAAW,IAAI,eAAe,CAAC;IAE/B;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1D"}
@@ -92,14 +92,13 @@ export declare class ServiceContainer {
92
92
  get api(): ApiService;
93
93
  get i18n(): I18nService;
94
94
  get validation(): ValidationService;
95
- get task(): <Result = unknown, Payload = unknown>(options: import("../index.js").TaskOptions<Result, Payload>, mutableProps?: (keyof import("../index.js").TaskOptions<Result, Payload>)[]) => {
96
- isActive: import("vue").ComputedRef<boolean>;
97
- run: (customOptions?: Partial<import("../index.js").TaskOptions<Result, Payload>>) => Promise<Result | false>;
98
- reset: () => void;
99
- state: import("vue").Ref<import("../index.js").TaskState>;
100
- error: import("vue").Ref<unknown>;
101
- errors: import("vue").Ref<import("../index.js").ErrorBag>;
102
- result: import("vue").Ref<Result | undefined>;
95
+ get task(): {
96
+ <Result>(options: {
97
+ task: () => Result | Promise<Result>;
98
+ } & Omit<import("../index.js").TaskOptions<Result, void>, "task">, mutableProps?: (keyof import("../index.js").TaskOptions<Result, void>)[]): import("../services/TaskService.js").TaskReturn<Result, void>;
99
+ <Result, Payload>(options: {
100
+ task: (payload: Payload) => Result | Promise<Result>;
101
+ } & Omit<import("../index.js").TaskOptions<Result, Payload>, "task">, mutableProps?: (keyof import("../index.js").TaskOptions<Result, Payload>)[]): import("../services/TaskService.js").TaskReturn<Result, Payload>;
103
102
  };
104
103
  get ws(): WebSocketService;
105
104
  get theme(): ThemeService;
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceContainer.d.ts","sourceRoot":"","sources":["../../src/container/ServiceContainer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,OAAO,EACP,YAAY,EAGb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAC,WAAW,EAAC,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAC,iBAAiB,EAAC,MAAM,kCAAkC,CAAC;AAEnE,OAAO,EAAC,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AAGzD;;;;;;;GAOG;AACH,qBAAa,gBAAgB;IAMzB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAL/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2C;IACpE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAwC;IAC1E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;gBAGjB,WAAW,CAAC,GAAE,WAAW,GAAG,IAAI,aAAA,EACjD,cAAc,GAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAa;IAQvD;;OAEG;IACH,IAAI,MAAM,IAAI,SAAS,CAEtB;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,WAAW,GAAG,IAAI,GAAG,SAAS,CAE/C;IAED;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,GAAG,GAAI,CAAC,SAAS,OAAO,EAAE,cAAc,YAAY,CAAC,CAAC,CAAC,KAAG,CAAC,CAkBzD;IAEF;;OAEG;IACH,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAIzD;;OAEG;IACH,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,SAAS,UAAQ,GAAG,OAAO;IAgBxF;;OAEG;IACH,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;IAIrE;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAUpC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;OAEG;IACH,OAAO,CAAC,WAAW;IAUnB;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,OAAO,CAAC,OAAO;IASf;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IAEH,IAAI,GAAG,IAAI,UAAU,CAEpB;IAED,IAAI,GAAG,IAAI,UAAU,CAEpB;IAED,IAAI,IAAI,IAAI,WAAW,CAEtB;IAED,IAAI,UAAU,IAAI,iBAAiB,CAElC;IAED,IAAI,IAAI;;2BA1LP,CAAF;;;;;;MA8LE;IAED,IAAI,EAAE,IAAI,gBAAgB,CAEzB;IAED,IAAI,KAAK,IAAI,YAAY,CAExB;CACF"}
1
+ {"version":3,"file":"ServiceContainer.d.ts","sourceRoot":"","sources":["../../src/container/ServiceContainer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,OAAO,EACP,YAAY,EAGb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAC,WAAW,EAAC,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAC,iBAAiB,EAAC,MAAM,kCAAkC,CAAC;AAEnE,OAAO,EAAC,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AAGzD;;;;;;;GAOG;AACH,qBAAa,gBAAgB;IAMzB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAL/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2C;IACpE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAwC;IAC1E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;gBAGjB,WAAW,CAAC,GAAE,WAAW,GAAG,IAAI,aAAA,EACjD,cAAc,GAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAa;IAQvD;;OAEG;IACH,IAAI,MAAM,IAAI,SAAS,CAEtB;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,WAAW,GAAG,IAAI,GAAG,SAAS,CAE/C;IAED;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,GAAG,GAAI,CAAC,SAAS,OAAO,EAAE,cAAc,YAAY,CAAC,CAAC,CAAC,KAAG,CAAC,CAkBzD;IAEF;;OAEG;IACH,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAIzD;;OAEG;IACH,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,SAAS,UAAQ,GAAG,OAAO;IAgBxF;;OAEG;IACH,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;IAIrE;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAUpC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;OAEG;IACH,OAAO,CAAC,WAAW;IAUnB;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,OAAO,CAAC,OAAO;IASf;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IAEH,IAAI,GAAG,IAAI,UAAU,CAEpB;IAED,IAAI,GAAG,IAAI,UAAU,CAEpB;IAED,IAAI,IAAI,IAAI,WAAW,CAEtB;IAED,IAAI,UAAU,IAAI,iBAAiB,CAElC;IAED,IAAI,IAAI;;;;;;;MAIP;IAED,IAAI,EAAE,IAAI,gBAAgB,CAEzB;IAED,IAAI,KAAK,IAAI,YAAY,CAExB;CACF"}
package/dist/index.d.ts CHANGED
@@ -23,7 +23,6 @@ export { createConfigFromEnv, createConfig } from './utils/config.js';
23
23
  export { BaseLogger } from './services/logger/BaseLogger.js';
24
24
  export { ConsoleLogger } from './services/logger/ConsoleLogger.js';
25
25
  export { NullLogger } from './services/logger/NullLogger.js';
26
- export { User, defaultUserFactory } from './models/User.js';
27
26
  export * from './types/config.types.js';
28
27
  export * from './types/logging.types.js';
29
28
  export * from './types/app.types.js';
@@ -46,7 +45,6 @@ export * from './utils/assets.js';
46
45
  export * from './utils/pagination.js';
47
46
  export { defineQuvelBoot } from './boot/quvel.js';
48
47
  export { serviceContainerPlugin } from './stores/plugins/serviceContainer.js';
49
- export { useSessionStore } from './stores/sessionStore.js';
50
48
  export { defineQuvelModule } from './module.js';
51
49
  export type { QuvelModuleOptions } from './module.js';
52
50
  export { defineQuvelConfig, DEFAULT_LOCALE_MAPPING } from './config/quvel.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AAGjC,YAAY,EACV,OAAO,IAAI,QAAQ,EACnB,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtE,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG7D,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAG5D,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAGtC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AAGjC,YAAY,EACV,OAAO,IAAI,QAAQ,EACnB,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtE,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG7D,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAGtC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAG9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC"}
package/dist/index.js CHANGED
@@ -32,8 +32,6 @@ export { createConfigFromEnv, createConfig } from './utils/config.js';
32
32
  export { BaseLogger } from './services/logger/BaseLogger.js';
33
33
  export { ConsoleLogger } from './services/logger/ConsoleLogger.js';
34
34
  export { NullLogger } from './services/logger/NullLogger.js';
35
- // Models
36
- export { User, defaultUserFactory } from './models/User.js';
37
35
  // Types
38
36
  export * from './types/config.types.js';
39
37
  export * from './types/logging.types.js';
@@ -60,7 +58,6 @@ export * from './utils/pagination.js';
60
58
  export { defineQuvelBoot } from './boot/quvel.js';
61
59
  // Stores
62
60
  export { serviceContainerPlugin } from './stores/plugins/serviceContainer.js';
63
- export { useSessionStore } from './stores/sessionStore.js';
64
61
  // Module
65
62
  export { defineQuvelModule } from './module.js';
66
63
  // Config
@@ -5,6 +5,18 @@
5
5
  */
6
6
  import { type Ref, type ComputedRef } from 'vue';
7
7
  import type { TaskOptions, TaskState, ErrorBag } from '../types/task.types.js';
8
+ /**
9
+ * Return type for the task() method
10
+ */
11
+ export interface TaskReturn<Result, Payload = void> {
12
+ isActive: ComputedRef<boolean>;
13
+ run: (customOptions?: Partial<TaskOptions<Result, Payload>>) => Promise<Result | false>;
14
+ reset: () => void;
15
+ state: Ref<TaskState>;
16
+ error: Ref<unknown>;
17
+ errors: Ref<ErrorBag>;
18
+ result: Ref<Result | undefined>;
19
+ }
8
20
  import type { RegisterService } from '../container/types.js';
9
21
  import type { ServiceContainer } from '../container/ServiceContainer.js';
10
22
  import { Service } from './Service.js';
@@ -25,17 +37,17 @@ export declare class TaskService extends Service implements RegisterService {
25
37
  */
26
38
  register({ i18n }: ServiceContainer): void;
27
39
  /**
28
- * Creates a new managed task
40
+ * Creates a new managed task (no payload) - infers Result from callback return
41
+ */
42
+ task<Result>(options: {
43
+ task: () => Result | Promise<Result>;
44
+ } & Omit<TaskOptions<Result, void>, 'task'>, mutableProps?: (keyof TaskOptions<Result, void>)[]): TaskReturn<Result, void>;
45
+ /**
46
+ * Creates a new managed task (with payload) - infers Result and Payload from callback
29
47
  */
30
- task<Result = unknown, Payload = unknown>(options: TaskOptions<Result, Payload>, mutableProps?: (keyof TaskOptions<Result, Payload>)[]): {
31
- isActive: ComputedRef<boolean>;
32
- run: (customOptions?: Partial<TaskOptions<Result, Payload>>) => Promise<Result | false>;
33
- reset: () => void;
34
- state: Ref<TaskState>;
35
- error: Ref<unknown>;
36
- errors: Ref<ErrorBag>;
37
- result: Ref<Result | undefined>;
38
- };
48
+ task<Result, Payload>(options: {
49
+ task: (payload: Payload) => Result | Promise<Result>;
50
+ } & Omit<TaskOptions<Result, Payload>, 'task'>, mutableProps?: (keyof TaskOptions<Result, Payload>)[]): TaskReturn<Result, Payload>;
39
51
  /**
40
52
  * Resets the task state
41
53
  */
@@ -1 +1 @@
1
- {"version":3,"file":"TaskService.d.ts","sourceRoot":"","sources":["../../src/services/TaskService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAiB,KAAK,GAAG,EAAE,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC;AAChE,OAAO,KAAK,EAQV,WAAW,EACX,SAAS,EACT,QAAQ,EACT,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAKvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD;;GAEG;AACH,qBAAa,WAAY,SAAQ,OAAQ,YAAW,eAAe;IACjE,OAAO,CAAC,IAAI,CAAe;IAE3B;;OAEG;IACH,QAAQ,CAAC,aAAa;;OAEnB;IAEH;;OAEG;IACI,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,gBAAgB,GAAG,IAAI;IAIjD;;OAEG;IACI,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAC7C,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,YAAY,GAAE,CAAC,MAAM,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAO,GACxD;QACD,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QAC/B,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;QACxF,KAAK,EAAE,MAAM,IAAI,CAAC;QAClB,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QACtB,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACpB,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;KACjC;IAsCD;;OAEG;IACH,OAAO,CAAC,SAAS;IAYjB;;OAEG;YACW,OAAO;IAgErB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoBxB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgC5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA2C5B;;OAEG;YACW,wBAAwB;CAqBvC"}
1
+ {"version":3,"file":"TaskService.d.ts","sourceRoot":"","sources":["../../src/services/TaskService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAiB,KAAK,GAAG,EAAE,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC;AAChE,OAAO,KAAK,EAQV,WAAW,EACX,SAAS,EACT,QAAQ,EACT,MAAM,wBAAwB,CAAC;AAEhC;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAChD,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;IACxF,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACtB,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACpB,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACjC;AACD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAKvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD;;GAEG;AACH,qBAAa,WAAY,SAAQ,OAAQ,YAAW,eAAe;IACjE,OAAO,CAAC,IAAI,CAAe;IAE3B;;OAEG;IACH,QAAQ,CAAC,aAAa;;OAEnB;IAEH;;OAEG;IACI,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,gBAAgB,GAAG,IAAI;IAIjD;;OAEG;IACI,IAAI,CAAC,MAAM,EAChB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,EAC3F,YAAY,CAAC,EAAE,CAAC,MAAM,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,GACjD,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;IAE3B;;OAEG;IACI,IAAI,CAAC,MAAM,EAAE,OAAO,EACzB,OAAO,EAAE;QAAE,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAAG,IAAI,CACtE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,MAAM,CACP,EACD,YAAY,CAAC,EAAE,CAAC,MAAM,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,GACpD,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC;IA8C9B;;OAEG;IACH,OAAO,CAAC,SAAS;IAYjB;;OAEG;YACW,OAAO;IAmErB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoBxB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgC5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA2C5B;;OAEG;YACW,wBAAwB;CAqBvC"}
@@ -27,7 +27,7 @@ export class TaskService extends Service {
27
27
  this.i18n = i18n;
28
28
  }
29
29
  /**
30
- * Creates a new managed task
30
+ * Creates a new managed task (implementation)
31
31
  */
32
32
  task(options, mutableProps = []) {
33
33
  const currentError = ref();
@@ -79,7 +79,10 @@ export class TaskService extends Service {
79
79
  showLoading(0, taskOptions.loadingOptions);
80
80
  }
81
81
  try {
82
- const result = await taskOptions.task(await resolveValue(taskOptions.taskPayload));
82
+ // Resolve payload and call task - cast needed for conditional type handling
83
+ const payload = await resolveValue(taskOptions.taskPayload);
84
+ const taskFn = taskOptions.task;
85
+ const result = await taskFn(payload);
83
86
  currentResult.value = result;
84
87
  currentState.value = 'success';
85
88
  this.handleTaskCompletion(result, currentErrors, taskOptions.successHandlers, taskOptions.showNotification?.success, false);
@@ -50,24 +50,40 @@ export type ErrorCallbackOrValue<Err = unknown> = Array<ErrorHandler<Err>> | ((e
50
50
  * Callback for Laravel error handler
51
51
  */
52
52
  export type ErrorHandlerCallback = (err: AxiosError, context: ErrorHandlerContext<LaravelErrorResponse>) => void;
53
+ /**
54
+ * Extracts the return type from a task callback (unwraps Promise if async)
55
+ */
56
+ export type InferTaskResult<T> = T extends (...args: never[]) => Promise<infer R> ? R : T extends (...args: never[]) => infer R ? R : unknown;
57
+ /**
58
+ * Extracts the payload type from a task callback's first parameter
59
+ */
60
+ export type InferTaskPayload<T> = T extends (payload: infer P) => unknown ? P : void;
61
+ /**
62
+ * Task callback type - conditional based on whether Payload is void
63
+ */
64
+ export type TaskCallback<Result, Payload> = Payload extends void ? () => Result | Promise<Result> : (payload: Payload) => Result | Promise<Result>;
65
+ /**
66
+ * Task payload resolver type - only present when Payload is not void
67
+ */
68
+ export type TaskPayloadResolver<Payload> = Payload extends void ? never : Payload | (() => Payload) | (() => Promise<Payload>);
53
69
  /**
54
70
  * Defines the options available when creating a new task
55
71
  *
56
72
  * @template Result The result type of the task
57
73
  * @template Payload The payload type of the task
58
74
  */
59
- export interface TaskOptions<Result = unknown, Payload = unknown> {
75
+ export interface TaskOptions<Result = unknown, Payload = void> {
60
76
  /**
61
77
  * The primary function executed when the task runs
62
78
  *
63
79
  * @returns The result of the task function
64
80
  */
65
- task: ((payload?: Payload) => Result) | ((payload?: Payload) => Promise<Result>);
81
+ task: TaskCallback<Result, Payload>;
66
82
  /**
67
- * Optional payload resolver for the task function.
68
- * Can be a direct value, a sync or async function.
83
+ * Payload resolver for the task function.
84
+ * Required when Payload is specified, not allowed when Payload is void.
69
85
  */
70
- taskPayload?: Payload | (() => Payload) | (() => Promise<Payload>);
86
+ taskPayload?: TaskPayloadResolver<Payload>;
71
87
  /**
72
88
  * Function executed at the end of the task, regardless of success or failure
73
89
  */
@@ -1 +1 @@
1
- {"version":3,"file":"task.types.d.ts","sourceRoot":"","sources":["../../src/types/task.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task.types.d.ts","sourceRoot":"","sources":["../../src/types/task.types.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export interface IUser {
9
9
  name: string;
10
10
  email: string;
11
11
  email_verified_at: string | null;
12
- two_factor_enabled?: boolean;
12
+ two_factor_enabled: boolean;
13
13
  createdAt: string;
14
14
  updatedAt: string;
15
15
  avatarUrl?: string;
@@ -21,4 +21,23 @@ export interface IUser {
21
21
  * Users can provide their own factory to create custom user models.
22
22
  */
23
23
  export type UserFactory<T extends IUser = IUser> = (data: IUser) => T;
24
+ /**
25
+ * QuvelTypes Interface
26
+ *
27
+ * This interface is designed to be augmented by consuming applications.
28
+ * Apps can override the User type with their own implementations.
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * // In your app's types/quvel.d.ts
33
+ * declare module '@quvel-kit/core' {
34
+ * interface QuvelTypes {
35
+ * User: import('../models/User').User;
36
+ * }
37
+ * }
38
+ * ```
39
+ */
40
+ export interface QuvelTypes {
41
+ User: IUser;
42
+ }
24
43
  //# sourceMappingURL=user.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"user.types.d.ts","sourceRoot":"","sources":["../../src/types/user.types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,GAAC,IAAI,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"user.types.d.ts","sourceRoot":"","sources":["../../src/types/user.types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC;AAEtE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,KAAK,CAAC;CACb"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quvel-kit/core",
3
- "version": "1.3.5",
3
+ "version": "1.3.7",
4
4
  "description": "Core utilities for Quvel UI",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,32 +0,0 @@
1
- import type { IUser } from '../types/user.types';
2
- /**
3
- * Base User Model
4
- *
5
- * Default implementation of the IUser interface.
6
- * Applications can extend this class or provide their own implementation.
7
- */
8
- export declare class User implements IUser {
9
- id: number;
10
- name: string;
11
- email: string;
12
- email_verified_at: string | null;
13
- two_factor_enabled?: boolean;
14
- createdAt: string;
15
- updatedAt: string;
16
- constructor(data?: Partial<IUser>);
17
- /**
18
- * Create a User instance from API data
19
- *
20
- * @param data - API response data
21
- * @returns User instance
22
- */
23
- static fromApi(data: IUser): User;
24
- }
25
- /**
26
- * Default User Factory
27
- *
28
- * Default factory function for creating user instances.
29
- * Can be overridden in AppConfig.
30
- */
31
- export declare const defaultUserFactory: (data: IUser) => User;
32
- //# sourceMappingURL=User.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"User.d.ts","sourceRoot":"","sources":["../../src/models/User.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAEjD;;;;;GAKG;AACH,qBAAa,IAAK,YAAW,KAAK;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,GAAC,IAAI,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;gBAEN,IAAI,GAAE,OAAO,CAAC,KAAK,CAAM;IAUrC;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;CAWlC;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,KAAK,KAAG,IAA0B,CAAC"}
@@ -1,48 +0,0 @@
1
- /**
2
- * Base User Model
3
- *
4
- * Default implementation of the IUser interface.
5
- * Applications can extend this class or provide their own implementation.
6
- */
7
- export class User {
8
- id;
9
- name;
10
- email;
11
- email_verified_at;
12
- two_factor_enabled;
13
- createdAt;
14
- updatedAt;
15
- constructor(data = {}) {
16
- this.id = data.id ?? 0;
17
- this.name = data.name ?? '';
18
- this.email = data.email ?? '';
19
- this.email_verified_at = data.email_verified_at ?? null;
20
- this.two_factor_enabled = data.two_factor_enabled;
21
- this.createdAt = data.createdAt ?? '';
22
- this.updatedAt = data.updatedAt ?? '';
23
- }
24
- /**
25
- * Create a User instance from API data
26
- *
27
- * @param data - API response data
28
- * @returns User instance
29
- */
30
- static fromApi(data) {
31
- return new User({
32
- id: data.id,
33
- name: data.name,
34
- email: data.email,
35
- email_verified_at: data.email_verified_at,
36
- two_factor_enabled: data.two_factor_enabled,
37
- createdAt: data.createdAt,
38
- updatedAt: data.updatedAt,
39
- });
40
- }
41
- }
42
- /**
43
- * Default User Factory
44
- *
45
- * Default factory function for creating user instances.
46
- * Can be overridden in AppConfig.
47
- */
48
- export const defaultUserFactory = (data) => User.fromApi(data);
@@ -1 +0,0 @@
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"}