@molecule/app-angular 1.0.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 (110) hide show
  1. package/LICENSE +115 -0
  2. package/dist/i18n-reactive.d.ts +41 -0
  3. package/dist/i18n-reactive.d.ts.map +1 -0
  4. package/dist/i18n-reactive.js +46 -0
  5. package/dist/i18n-reactive.js.map +1 -0
  6. package/dist/index.d.ts +84 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +84 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/providers.d.ts +96 -0
  11. package/dist/providers.d.ts.map +1 -0
  12. package/dist/providers.js +144 -0
  13. package/dist/providers.js.map +1 -0
  14. package/dist/services/async-state.service.d.ts +50 -0
  15. package/dist/services/async-state.service.d.ts.map +1 -0
  16. package/dist/services/async-state.service.js +109 -0
  17. package/dist/services/async-state.service.js.map +1 -0
  18. package/dist/services/auth.service.d.ts +105 -0
  19. package/dist/services/auth.service.d.ts.map +1 -0
  20. package/dist/services/auth.service.js +124 -0
  21. package/dist/services/auth.service.js.map +1 -0
  22. package/dist/services/capacitor-app.service.d.ts +46 -0
  23. package/dist/services/capacitor-app.service.d.ts.map +1 -0
  24. package/dist/services/capacitor-app.service.js +53 -0
  25. package/dist/services/capacitor-app.service.js.map +1 -0
  26. package/dist/services/change-password.service.d.ts +37 -0
  27. package/dist/services/change-password.service.d.ts.map +1 -0
  28. package/dist/services/change-password.service.js +34 -0
  29. package/dist/services/change-password.service.js.map +1 -0
  30. package/dist/services/device.service.d.ts +35 -0
  31. package/dist/services/device.service.d.ts.map +1 -0
  32. package/dist/services/device.service.js +29 -0
  33. package/dist/services/device.service.js.map +1 -0
  34. package/dist/services/forms.service.d.ts +237 -0
  35. package/dist/services/forms.service.d.ts.map +1 -0
  36. package/dist/services/forms.service.js +280 -0
  37. package/dist/services/forms.service.js.map +1 -0
  38. package/dist/services/http.service.d.ts +118 -0
  39. package/dist/services/http.service.d.ts.map +1 -0
  40. package/dist/services/http.service.js +171 -0
  41. package/dist/services/http.service.js.map +1 -0
  42. package/dist/services/i18n.service.d.ts +111 -0
  43. package/dist/services/i18n.service.d.ts.map +1 -0
  44. package/dist/services/i18n.service.js +135 -0
  45. package/dist/services/i18n.service.js.map +1 -0
  46. package/dist/services/index.d.ts +27 -0
  47. package/dist/services/index.d.ts.map +1 -0
  48. package/dist/services/index.js +27 -0
  49. package/dist/services/index.js.map +1 -0
  50. package/dist/services/logger.service.d.ts +79 -0
  51. package/dist/services/logger.service.d.ts.map +1 -0
  52. package/dist/services/logger.service.js +110 -0
  53. package/dist/services/logger.service.js.map +1 -0
  54. package/dist/services/login.service.d.ts +37 -0
  55. package/dist/services/login.service.d.ts.map +1 -0
  56. package/dist/services/login.service.js +34 -0
  57. package/dist/services/login.service.js.map +1 -0
  58. package/dist/services/oauth.service.d.ts +110 -0
  59. package/dist/services/oauth.service.d.ts.map +1 -0
  60. package/dist/services/oauth.service.js +214 -0
  61. package/dist/services/oauth.service.js.map +1 -0
  62. package/dist/services/password-reset.service.d.ts +41 -0
  63. package/dist/services/password-reset.service.d.ts.map +1 -0
  64. package/dist/services/password-reset.service.js +45 -0
  65. package/dist/services/password-reset.service.js.map +1 -0
  66. package/dist/services/platform.service.d.ts +39 -0
  67. package/dist/services/platform.service.d.ts.map +1 -0
  68. package/dist/services/platform.service.js +33 -0
  69. package/dist/services/platform.service.js.map +1 -0
  70. package/dist/services/promise.service.d.ts +40 -0
  71. package/dist/services/promise.service.d.ts.map +1 -0
  72. package/dist/services/promise.service.js +85 -0
  73. package/dist/services/promise.service.js.map +1 -0
  74. package/dist/services/push.service.d.ts +45 -0
  75. package/dist/services/push.service.d.ts.map +1 -0
  76. package/dist/services/push.service.js +64 -0
  77. package/dist/services/push.service.js.map +1 -0
  78. package/dist/services/router.service.d.ts +114 -0
  79. package/dist/services/router.service.d.ts.map +1 -0
  80. package/dist/services/router.service.js +142 -0
  81. package/dist/services/router.service.js.map +1 -0
  82. package/dist/services/signup.service.d.ts +37 -0
  83. package/dist/services/signup.service.d.ts.map +1 -0
  84. package/dist/services/signup.service.js +34 -0
  85. package/dist/services/signup.service.js.map +1 -0
  86. package/dist/services/state.service.d.ts +82 -0
  87. package/dist/services/state.service.d.ts.map +1 -0
  88. package/dist/services/state.service.js +122 -0
  89. package/dist/services/state.service.js.map +1 -0
  90. package/dist/services/storage.service.d.ts +111 -0
  91. package/dist/services/storage.service.d.ts.map +1 -0
  92. package/dist/services/storage.service.js +167 -0
  93. package/dist/services/storage.service.js.map +1 -0
  94. package/dist/services/theme.service.d.ts +89 -0
  95. package/dist/services/theme.service.d.ts.map +1 -0
  96. package/dist/services/theme.service.js +116 -0
  97. package/dist/services/theme.service.js.map +1 -0
  98. package/dist/services/version.service.d.ts +44 -0
  99. package/dist/services/version.service.d.ts.map +1 -0
  100. package/dist/services/version.service.js +63 -0
  101. package/dist/services/version.service.js.map +1 -0
  102. package/dist/tokens.d.ts +47 -0
  103. package/dist/tokens.d.ts.map +1 -0
  104. package/dist/tokens.js +39 -0
  105. package/dist/tokens.js.map +1 -0
  106. package/dist/types.d.ts +42 -0
  107. package/dist/types.d.ts.map +1 -0
  108. package/dist/types.js +7 -0
  109. package/dist/types.js.map +1 -0
  110. package/package.json +61 -0
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Angular utility for async-capable state management.
3
+ *
4
+ * @module
5
+ */
6
+ import { type Observable } from 'rxjs';
7
+ /**
8
+ * Async state manager.
9
+ */
10
+ export interface AsyncStateManager<T> {
11
+ state$: Observable<T>;
12
+ getState: () => T;
13
+ setState: (value: T | ((prev: T) => T) | Promise<T | ((prev: T) => T)>) => void;
14
+ extendState: (partial: Partial<T> | ((prev: T) => Partial<T>) | Promise<Partial<T> | ((prev: T) => Partial<T>)>) => void;
15
+ destroy: () => void;
16
+ }
17
+ /**
18
+ * Creates an async-capable state manager.
19
+ *
20
+ * @param initialState - Initial state value
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * interface AppState {
25
+ * count: number
26
+ * name: string
27
+ * }
28
+ *
29
+ * const { state$, setState, extendState, destroy } = createAsyncState<AppState>({
30
+ * count: 0,
31
+ * name: 'world',
32
+ * })
33
+ *
34
+ * state$.subscribe(state => console.log(state))
35
+ *
36
+ * // Sync
37
+ * setState({ count: 1, name: 'hello' })
38
+ * setState(prev => ({ ...prev, count: prev.count + 1 }))
39
+ *
40
+ * // Async
41
+ * setState(fetchState())
42
+ *
43
+ * // Partial updates
44
+ * extendState({ count: 42 })
45
+ * extendState(fetchPartialState())
46
+ * ```
47
+ * @returns The created instance.
48
+ */
49
+ export declare const createAsyncState: <T>(initialState: T) => AsyncStateManager<T>;
50
+ //# sourceMappingURL=async-state.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-state.service.d.ts","sourceRoot":"","sources":["../../src/services/async-state.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,MAAM,CAAA;AAEvD;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAC,CAAA;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAC/E,WAAW,EAAE,CACX,OAAO,EACL,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KACvF,IAAI,CAAA;IACT,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,cAAc,CAAC,KAAG,iBAAiB,CAAC,CAAC,CAqFxE,CAAA"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Angular utility for async-capable state management.
3
+ *
4
+ * @module
5
+ */
6
+ import { BehaviorSubject } from 'rxjs';
7
+ /**
8
+ * Creates an async-capable state manager.
9
+ *
10
+ * @param initialState - Initial state value
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * interface AppState {
15
+ * count: number
16
+ * name: string
17
+ * }
18
+ *
19
+ * const { state$, setState, extendState, destroy } = createAsyncState<AppState>({
20
+ * count: 0,
21
+ * name: 'world',
22
+ * })
23
+ *
24
+ * state$.subscribe(state => console.log(state))
25
+ *
26
+ * // Sync
27
+ * setState({ count: 1, name: 'hello' })
28
+ * setState(prev => ({ ...prev, count: prev.count + 1 }))
29
+ *
30
+ * // Async
31
+ * setState(fetchState())
32
+ *
33
+ * // Partial updates
34
+ * extendState({ count: 42 })
35
+ * extendState(fetchPartialState())
36
+ * ```
37
+ * @returns The created instance.
38
+ */
39
+ export const createAsyncState = (initialState) => {
40
+ const subject = new BehaviorSubject(initialState);
41
+ let destroyed = false;
42
+ const getState = () => subject.getValue();
43
+ const setState = (value) => {
44
+ if (value instanceof Promise) {
45
+ value.then((resolved) => {
46
+ if (destroyed)
47
+ return;
48
+ if (typeof resolved === 'function') {
49
+ subject.next(resolved(subject.getValue()));
50
+ }
51
+ else {
52
+ subject.next(resolved);
53
+ }
54
+ }, () => {
55
+ // Silently swallow errors from resolved Promises to avoid unhandled rejections
56
+ });
57
+ return;
58
+ }
59
+ if (destroyed)
60
+ return;
61
+ if (typeof value === 'function') {
62
+ subject.next(value(subject.getValue()));
63
+ }
64
+ else {
65
+ subject.next(value);
66
+ }
67
+ };
68
+ const extendState = (partial) => {
69
+ if (partial instanceof Promise) {
70
+ partial.then((resolved) => {
71
+ if (destroyed)
72
+ return;
73
+ let resolvedPartial;
74
+ if (typeof resolved === 'function') {
75
+ resolvedPartial = resolved(subject.getValue());
76
+ }
77
+ else {
78
+ resolvedPartial = resolved;
79
+ }
80
+ subject.next({ ...subject.getValue(), ...resolvedPartial });
81
+ }, () => {
82
+ // Silently swallow errors from resolved Promises to avoid unhandled rejections
83
+ });
84
+ return;
85
+ }
86
+ if (destroyed)
87
+ return;
88
+ let resolvedPartial;
89
+ if (typeof partial === 'function') {
90
+ resolvedPartial = partial(subject.getValue());
91
+ }
92
+ else {
93
+ resolvedPartial = partial;
94
+ }
95
+ subject.next({ ...subject.getValue(), ...resolvedPartial });
96
+ };
97
+ const destroy = () => {
98
+ destroyed = true;
99
+ subject.complete();
100
+ };
101
+ return {
102
+ state$: subject.asObservable(),
103
+ getState,
104
+ setState,
105
+ extendState,
106
+ destroy,
107
+ };
108
+ };
109
+ //# sourceMappingURL=async-state.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-state.service.js","sourceRoot":"","sources":["../../src/services/async-state.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAmB,MAAM,MAAM,CAAA;AAgBvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAI,YAAe,EAAwB,EAAE;IAC3E,MAAM,OAAO,GAAG,IAAI,eAAe,CAAI,YAAY,CAAC,CAAA;IACpD,IAAI,SAAS,GAAG,KAAK,CAAA;IAErB,MAAM,QAAQ,GAAG,GAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAA;IAE5C,MAAM,QAAQ,GAAG,CAAC,KAA2D,EAAQ,EAAE;QACrF,IAAI,KAAK,YAAY,OAAO,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CACR,CAAC,QAAQ,EAAE,EAAE;gBACX,IAAI,SAAS;oBAAE,OAAM;gBAErB,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;oBACnC,OAAO,CAAC,IAAI,CAAE,QAA2B,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;gBAChE,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBACxB,CAAC;YACH,CAAC,EACD,GAAG,EAAE;gBACH,+EAA+E;YACjF,CAAC,CACF,CAAA;YACD,OAAM;QACR,CAAC;QAED,IAAI,SAAS;YAAE,OAAM;QAErB,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAE,KAAwB,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;QAC7D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrB,CAAC;IACH,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,CAClB,OAC0F,EACpF,EAAE;QACR,IAAI,OAAO,YAAY,OAAO,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CACV,CAAC,QAAQ,EAAE,EAAE;gBACX,IAAI,SAAS;oBAAE,OAAM;gBAErB,IAAI,eAA2B,CAAA;gBAE/B,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;oBACnC,eAAe,GAAI,QAAoC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAC7E,CAAC;qBAAM,CAAC;oBACN,eAAe,GAAG,QAAQ,CAAA;gBAC5B,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,eAAe,EAAE,CAAC,CAAA;YAC7D,CAAC,EACD,GAAG,EAAE;gBACH,+EAA+E;YACjF,CAAC,CACF,CAAA;YACD,OAAM;QACR,CAAC;QAED,IAAI,SAAS;YAAE,OAAM;QAErB,IAAI,eAA2B,CAAA;QAE/B,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,eAAe,GAAI,OAAmC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC5E,CAAC;aAAM,CAAC;YACN,eAAe,GAAG,OAAO,CAAA;QAC3B,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,eAAe,EAAE,CAAC,CAAA;IAC7D,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,GAAS,EAAE;QACzB,SAAS,GAAG,IAAI,CAAA;QAChB,OAAO,CAAC,QAAQ,EAAE,CAAA;IACpB,CAAC,CAAA;IAED,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE;QAC9B,QAAQ;QACR,QAAQ;QACR,WAAW;QACX,OAAO;KACR,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Angular service for authentication.
3
+ *
4
+ * @module
5
+ */
6
+ import { type OnDestroy } from '@angular/core';
7
+ import { type Observable } from 'rxjs';
8
+ import type { AuthClient, AuthResult, AuthState, LoginCredentials, RegisterData } from '@molecule/app-auth';
9
+ import * as i0 from "@angular/core";
10
+ /**
11
+ * Angular service for authentication.
12
+ *
13
+ * Wraps molecule auth client and exposes state as RxJS observables.
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * @Component({
18
+ * selector: 'app-user-menu',
19
+ * template: `
20
+ * <div *ngIf="isAuthenticated$ | async">
21
+ * <span>{{ (user$ | async)?.name }}</span>
22
+ * <button (click)="logout()">Logout</button>
23
+ * </div>
24
+ * `
25
+ * })
26
+ * export class UserMenuComponent {
27
+ * user$ = this.authService.user$
28
+ * isAuthenticated$ = this.authService.isAuthenticated$
29
+ *
30
+ * constructor(private authService: MoleculeAuthService) {}
31
+ *
32
+ * logout() {
33
+ * this.authService.logout()
34
+ * }
35
+ * }
36
+ * ```
37
+ */
38
+ export declare class MoleculeAuthService<T = unknown> implements OnDestroy {
39
+ private client;
40
+ private stateSubject;
41
+ private unsubscribe;
42
+ /**
43
+ * Observable of the full auth state.
44
+ */
45
+ state$: Observable<AuthState<T>>;
46
+ /**
47
+ * Observable of the authenticated user.
48
+ */
49
+ user$: Observable<T | null>;
50
+ /**
51
+ * Observable of authentication status.
52
+ */
53
+ isAuthenticated$: Observable<boolean>;
54
+ /**
55
+ * Observable of loading status.
56
+ */
57
+ isLoading$: Observable<boolean>;
58
+ constructor(client: AuthClient<T>);
59
+ /**
60
+ * Get the current auth state snapshot.
61
+ * @returns The current authentication state including user, loading, and authenticated flags.
62
+ */
63
+ get state(): AuthState<T>;
64
+ /**
65
+ * Get the current user snapshot.
66
+ * @returns The authenticated user object, or `null` if not authenticated.
67
+ */
68
+ get user(): T | null;
69
+ /**
70
+ * Check if user is currently authenticated.
71
+ * @returns `true` if the user is authenticated, `false` otherwise.
72
+ */
73
+ get isAuthenticated(): boolean;
74
+ /**
75
+ * Login with credentials.
76
+ *
77
+ * @param credentials - The email/password or provider-specific login credentials.
78
+ * @returns A promise that resolves to the authentication result with user data and tokens.
79
+ */
80
+ login(credentials: LoginCredentials): Promise<AuthResult<T>>;
81
+ /**
82
+ * Logout the current user.
83
+ * @returns A promise that resolves when the user has been logged out.
84
+ */
85
+ logout(): Promise<void>;
86
+ /**
87
+ * Register a new user.
88
+ *
89
+ * @param data - The registration payload including email, password, and profile fields.
90
+ * @returns A promise that resolves to the authentication result for the newly registered user.
91
+ */
92
+ register(data: RegisterData): Promise<AuthResult<T>>;
93
+ /**
94
+ * Refresh the authentication token.
95
+ * @returns A promise that resolves to the authentication result with refreshed tokens.
96
+ */
97
+ refresh(): Promise<AuthResult<T>>;
98
+ /**
99
+ * Clean up auth state subscription on service destruction.
100
+ */
101
+ ngOnDestroy(): void;
102
+ static ɵfac: i0.ɵɵFactoryDeclaration<MoleculeAuthService<any>, never>;
103
+ static ɵprov: i0.ɵɵInjectableDeclaration<MoleculeAuthService<any>>;
104
+ }
105
+ //# sourceMappingURL=auth.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.service.d.ts","sourceRoot":"","sources":["../../src/services/auth.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,eAAe,CAAA;AAClE,OAAO,EAA8C,KAAK,UAAU,EAAE,MAAM,MAAM,CAAA;AAElF,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,YAAY,EACb,MAAM,oBAAoB,CAAA;;AAI3B;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAGa,mBAAmB,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,SAAS;IAwB/B,OAAO,CAAC,MAAM;IAvB/C,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,WAAW,CAA4B;IAE/C;;OAEG;IACH,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IAEhC;;OAEG;IACH,KAAK,EAAE,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAE3B;;OAEG;IACH,gBAAgB,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;IAErC;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;gBAEU,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAyB9D;;;OAGG;IACH,IAAI,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,CAExB;IAED;;;OAGG;IACH,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,CAEnB;IAED;;;OAGG;IACH,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAI5D;;;OAGG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAIpD;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAIjC;;OAEG;IACH,WAAW,IAAI,IAAI;yCAhHR,mBAAmB;6CAAnB,mBAAmB;CAoH/B"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Angular service for authentication.
3
+ *
4
+ * @module
5
+ */
6
+ import { Inject, Injectable } from '@angular/core';
7
+ import { BehaviorSubject, distinctUntilChanged, map } from 'rxjs';
8
+ import { AUTH_CLIENT } from '../tokens.js';
9
+ import * as i0 from "@angular/core";
10
+ /**
11
+ * Angular service for authentication.
12
+ *
13
+ * Wraps molecule auth client and exposes state as RxJS observables.
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * @Component({
18
+ * selector: 'app-user-menu',
19
+ * template: `
20
+ * <div *ngIf="isAuthenticated$ | async">
21
+ * <span>{{ (user$ | async)?.name }}</span>
22
+ * <button (click)="logout()">Logout</button>
23
+ * </div>
24
+ * `
25
+ * })
26
+ * export class UserMenuComponent {
27
+ * user$ = this.authService.user$
28
+ * isAuthenticated$ = this.authService.isAuthenticated$
29
+ *
30
+ * constructor(private authService: MoleculeAuthService) {}
31
+ *
32
+ * logout() {
33
+ * this.authService.logout()
34
+ * }
35
+ * }
36
+ * ```
37
+ */
38
+ export class MoleculeAuthService {
39
+ constructor(client) {
40
+ this.client = client;
41
+ this.unsubscribe = null;
42
+ this.stateSubject = new BehaviorSubject(client.getState());
43
+ this.unsubscribe = client.onAuthChange(() => {
44
+ this.stateSubject.next(client.getState());
45
+ });
46
+ this.state$ = this.stateSubject.asObservable();
47
+ this.user$ = this.state$.pipe(map((state) => state.user), distinctUntilChanged());
48
+ this.isAuthenticated$ = this.state$.pipe(map((state) => state.authenticated), distinctUntilChanged());
49
+ this.isLoading$ = this.state$.pipe(map((state) => state.loading), distinctUntilChanged());
50
+ }
51
+ /**
52
+ * Get the current auth state snapshot.
53
+ * @returns The current authentication state including user, loading, and authenticated flags.
54
+ */
55
+ get state() {
56
+ return this.client.getState();
57
+ }
58
+ /**
59
+ * Get the current user snapshot.
60
+ * @returns The authenticated user object, or `null` if not authenticated.
61
+ */
62
+ get user() {
63
+ return this.state.user;
64
+ }
65
+ /**
66
+ * Check if user is currently authenticated.
67
+ * @returns `true` if the user is authenticated, `false` otherwise.
68
+ */
69
+ get isAuthenticated() {
70
+ return this.state.authenticated;
71
+ }
72
+ /**
73
+ * Login with credentials.
74
+ *
75
+ * @param credentials - The email/password or provider-specific login credentials.
76
+ * @returns A promise that resolves to the authentication result with user data and tokens.
77
+ */
78
+ login(credentials) {
79
+ return this.client.login(credentials);
80
+ }
81
+ /**
82
+ * Logout the current user.
83
+ * @returns A promise that resolves when the user has been logged out.
84
+ */
85
+ logout() {
86
+ return this.client.logout();
87
+ }
88
+ /**
89
+ * Register a new user.
90
+ *
91
+ * @param data - The registration payload including email, password, and profile fields.
92
+ * @returns A promise that resolves to the authentication result for the newly registered user.
93
+ */
94
+ register(data) {
95
+ return this.client.register(data);
96
+ }
97
+ /**
98
+ * Refresh the authentication token.
99
+ * @returns A promise that resolves to the authentication result with refreshed tokens.
100
+ */
101
+ refresh() {
102
+ return this.client.refresh();
103
+ }
104
+ /**
105
+ * Clean up auth state subscription on service destruction.
106
+ */
107
+ ngOnDestroy() {
108
+ this.unsubscribe?.();
109
+ this.stateSubject.complete();
110
+ }
111
+ static { this.ɵfac = function MoleculeAuthService_Factory(__ngFactoryType__) { /* @ts-ignore */
112
+ return new (__ngFactoryType__ || MoleculeAuthService)(i0.ɵɵinject(AUTH_CLIENT)); }; }
113
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MoleculeAuthService, factory: MoleculeAuthService.ɵfac, providedIn: 'root' }); }
114
+ }
115
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MoleculeAuthService, [{
116
+ type: Injectable,
117
+ args: [{
118
+ providedIn: 'root',
119
+ }]
120
+ }], () => [{ type: undefined, decorators: [{
121
+ type: Inject,
122
+ args: [AUTH_CLIENT]
123
+ }] }], null); })();
124
+ //# sourceMappingURL=auth.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../src/services/auth.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,UAAU,EAAkB,MAAM,eAAe,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,GAAG,EAAmB,MAAM,MAAM,CAAA;AAUlF,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,MAAM,OAAO,mBAAmB;IAwB9B,YAAyC,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;QAtBtD,gBAAW,GAAwB,IAAI,CAAA;QAuB7C,IAAI,CAAC,YAAY,GAAG,IAAI,eAAe,CAAe,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;QAExE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE;YAC1C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC3C,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAA;QAE9C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAC3B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAC1B,oBAAoB,EAAE,CACvB,CAAA;QAED,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CACtC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,EACnC,oBAAoB,EAAE,CACvB,CAAA;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAChC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAC7B,oBAAoB,EAAE,CACvB,CAAA;IACH,CAAC;IAED;;;OAGG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA;IAC/B,CAAC;IAED;;;OAGG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA;IACxB,CAAC;IAED;;;OAGG;IACH,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAA;IACjC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAA6B;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IACvC,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA;IAC7B,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,IAAkB;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACnC,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;IAC9B,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,WAAW,EAAE,EAAE,CAAA;QACpB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAA;IAC9B,CAAC;;qCAnHU,mBAAmB,cAwBV,WAAW;uEAxBpB,mBAAmB,WAAnB,mBAAmB,mBAFlB,MAAM;;iFAEP,mBAAmB;cAH/B,UAAU;eAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;sBAyBc,MAAM;uBAAC,WAAW"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Angular Capacitor app service with reactive state.
3
+ *
4
+ * @module
5
+ */
6
+ import { type Observable } from 'rxjs';
7
+ import type { CapacitorAppOptions, CapacitorAppState } from '@molecule/app-platform';
8
+ /**
9
+ * Capacitor app manager interface.
10
+ */
11
+ export interface CapacitorAppManager {
12
+ state$: Observable<CapacitorAppState>;
13
+ ready$: Observable<boolean>;
14
+ initialize: () => Promise<void>;
15
+ destroy: () => void;
16
+ }
17
+ /**
18
+ * Creates an Angular Capacitor app service with reactive state.
19
+ *
20
+ * Wraps `createCapacitorApp` from `@molecule/app-platform` and exposes
21
+ * state changes as RxJS observables.
22
+ *
23
+ * @param options - Capacitor app configuration options
24
+ * @returns Capacitor app manager with observables and action methods
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const capacitorApp = createCapacitorAppState({
29
+ * pushNotifications: true,
30
+ * deepLinks: true,
31
+ * onDeepLink: (url) => router.navigate(url),
32
+ * })
33
+ *
34
+ * capacitorApp.state$.subscribe(state => {
35
+ * console.log('App state:', state)
36
+ * })
37
+ *
38
+ * capacitorApp.ready$.subscribe(ready => {
39
+ * if (ready) console.log('App is ready!')
40
+ * })
41
+ *
42
+ * await capacitorApp.initialize()
43
+ * ```
44
+ */
45
+ export declare const createCapacitorAppState: (options?: CapacitorAppOptions) => CapacitorAppManager;
46
+ //# sourceMappingURL=capacitor-app.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capacitor-app.service.d.ts","sourceRoot":"","sources":["../../src/services/capacitor-app.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAA8C,KAAK,UAAU,EAAE,MAAM,MAAM,CAAA;AAElF,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAGpF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAA;IACrC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;IAC3B,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,uBAAuB,GAAI,UAAU,mBAAmB,KAAG,mBAqBvE,CAAA"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Angular Capacitor app service with reactive state.
3
+ *
4
+ * @module
5
+ */
6
+ import { BehaviorSubject, distinctUntilChanged, map } from 'rxjs';
7
+ import { createCapacitorApp } from '@molecule/app-platform';
8
+ /**
9
+ * Creates an Angular Capacitor app service with reactive state.
10
+ *
11
+ * Wraps `createCapacitorApp` from `@molecule/app-platform` and exposes
12
+ * state changes as RxJS observables.
13
+ *
14
+ * @param options - Capacitor app configuration options
15
+ * @returns Capacitor app manager with observables and action methods
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const capacitorApp = createCapacitorAppState({
20
+ * pushNotifications: true,
21
+ * deepLinks: true,
22
+ * onDeepLink: (url) => router.navigate(url),
23
+ * })
24
+ *
25
+ * capacitorApp.state$.subscribe(state => {
26
+ * console.log('App state:', state)
27
+ * })
28
+ *
29
+ * capacitorApp.ready$.subscribe(ready => {
30
+ * if (ready) console.log('App is ready!')
31
+ * })
32
+ *
33
+ * await capacitorApp.initialize()
34
+ * ```
35
+ */
36
+ export const createCapacitorAppState = (options) => {
37
+ const app = createCapacitorApp(options);
38
+ const stateSubject = new BehaviorSubject(app.getState());
39
+ const unsubscribe = app.subscribe((state) => {
40
+ stateSubject.next(state);
41
+ });
42
+ return {
43
+ state$: stateSubject.asObservable(),
44
+ ready$: stateSubject.pipe(map((state) => state.ready), distinctUntilChanged()),
45
+ initialize: () => app.initialize(),
46
+ destroy: () => {
47
+ unsubscribe();
48
+ app.destroy();
49
+ stateSubject.complete();
50
+ },
51
+ };
52
+ };
53
+ //# sourceMappingURL=capacitor-app.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capacitor-app.service.js","sourceRoot":"","sources":["../../src/services/capacitor-app.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,GAAG,EAAmB,MAAM,MAAM,CAAA;AAGlF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAY3D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,OAA6B,EAAuB,EAAE;IAC5F,MAAM,GAAG,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAA;IACvC,MAAM,YAAY,GAAG,IAAI,eAAe,CAAoB,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;IAE3E,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1C,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,MAAM,EAAE,YAAY,CAAC,YAAY,EAAE;QACnC,MAAM,EAAE,YAAY,CAAC,IAAI,CACvB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAC3B,oBAAoB,EAAE,CACvB;QACD,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE;QAClC,OAAO,EAAE,GAAG,EAAE;YACZ,WAAW,EAAE,CAAA;YACb,GAAG,CAAC,OAAO,EAAE,CAAA;YACb,YAAY,CAAC,QAAQ,EAAE,CAAA;QACzB,CAAC;KACF,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Angular utility for changing password with async state tracking.
3
+ *
4
+ * @module
5
+ */
6
+ import type { Observable } from 'rxjs';
7
+ import type { AuthClient } from '@molecule/app-auth';
8
+ import type { PromiseState } from '@molecule/app-utilities';
9
+ /**
10
+ * Change password state manager.
11
+ */
12
+ export interface ChangePasswordStateManager {
13
+ state$: Observable<PromiseState<void>>;
14
+ getState: () => PromiseState<void>;
15
+ changePassword: (oldPassword: string, newPassword: string) => Promise<void>;
16
+ reset: () => void;
17
+ destroy: () => void;
18
+ }
19
+ /**
20
+ * Creates a change password state manager with async state tracking.
21
+ *
22
+ * @param client - Auth client
23
+ * @returns Change password state manager
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * const changeManager = createChangePasswordState(authClient)
28
+ *
29
+ * changeManager.state$.subscribe(state => {
30
+ * console.log(state.status) // 'idle' | 'pending' | 'resolved' | 'rejected'
31
+ * })
32
+ *
33
+ * await changeManager.changePassword('oldpass', 'newpass')
34
+ * ```
35
+ */
36
+ export declare function createChangePasswordState(client: AuthClient): ChangePasswordStateManager;
37
+ //# sourceMappingURL=change-password.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-password.service.d.ts","sourceRoot":"","sources":["../../src/services/change-password.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAEtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAI3D;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA;IACtC,QAAQ,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,CAAA;IAClC,cAAc,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3E,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,UAAU,GAAG,0BAA0B,CAYxF"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Angular utility for changing password with async state tracking.
3
+ *
4
+ * @module
5
+ */
6
+ import { createPromiseState } from './promise.service.js';
7
+ /**
8
+ * Creates a change password state manager with async state tracking.
9
+ *
10
+ * @param client - Auth client
11
+ * @returns Change password state manager
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const changeManager = createChangePasswordState(authClient)
16
+ *
17
+ * changeManager.state$.subscribe(state => {
18
+ * console.log(state.status) // 'idle' | 'pending' | 'resolved' | 'rejected'
19
+ * })
20
+ *
21
+ * await changeManager.changePassword('oldpass', 'newpass')
22
+ * ```
23
+ */
24
+ export function createChangePasswordState(client) {
25
+ const manager = createPromiseState((oldPassword, newPassword) => client.changePassword(oldPassword, newPassword));
26
+ return {
27
+ state$: manager.state$,
28
+ getState: manager.getState,
29
+ changePassword: manager.call,
30
+ reset: manager.reset,
31
+ destroy: manager.destroy,
32
+ };
33
+ }
34
+ //# sourceMappingURL=change-password.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-password.service.js","sourceRoot":"","sources":["../../src/services/change-password.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAazD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAkB;IAC1D,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,WAAmB,EAAE,WAAmB,EAAE,EAAE,CAC9E,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAChD,CAAA;IAED,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,cAAc,EAAE,OAAO,CAAC,IAAI;QAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAA;AACH,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Angular device service for accessing device information.
3
+ *
4
+ * @module
5
+ */
6
+ import type { DeviceInfo, FeatureSupport, HardwareInfo, ScreenInfo } from '@molecule/app-device';
7
+ /**
8
+ * Device service interface.
9
+ */
10
+ export interface DeviceService {
11
+ deviceInfo: DeviceInfo;
12
+ screenInfo: ScreenInfo;
13
+ hardwareInfo: HardwareInfo;
14
+ featureSupport: FeatureSupport;
15
+ supports: (feature: keyof FeatureSupport) => boolean;
16
+ isOnline: () => boolean;
17
+ isStandalone: () => boolean;
18
+ language: string;
19
+ languages: string[];
20
+ }
21
+ /**
22
+ * Creates an Angular device service with static device information.
23
+ *
24
+ * @returns Device service with device, screen, hardware, and feature info
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const device = createDeviceService()
29
+ *
30
+ * console.log(device.deviceInfo.browser.name)
31
+ * console.log(device.supports('pushNotifications'))
32
+ * ```
33
+ */
34
+ export declare const createDeviceService: () => DeviceService;
35
+ //# sourceMappingURL=device.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.service.d.ts","sourceRoot":"","sources":["../../src/services/device.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAGhG;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,UAAU,CAAA;IACtB,UAAU,EAAE,UAAU,CAAA;IACtB,YAAY,EAAE,YAAY,CAAA;IAC1B,cAAc,EAAE,cAAc,CAAA;IAC9B,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,cAAc,KAAK,OAAO,CAAA;IACpD,QAAQ,EAAE,MAAM,OAAO,CAAA;IACvB,YAAY,EAAE,MAAM,OAAO,CAAA;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,mBAAmB,QAAO,aActC,CAAA"}
@@ -0,0 +1,29 @@
1
+ import { getProvider } from '@molecule/app-device';
2
+ /**
3
+ * Creates an Angular device service with static device information.
4
+ *
5
+ * @returns Device service with device, screen, hardware, and feature info
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const device = createDeviceService()
10
+ *
11
+ * console.log(device.deviceInfo.browser.name)
12
+ * console.log(device.supports('pushNotifications'))
13
+ * ```
14
+ */
15
+ export const createDeviceService = () => {
16
+ const provider = getProvider();
17
+ return {
18
+ deviceInfo: provider.getDeviceInfo(),
19
+ screenInfo: provider.getScreenInfo(),
20
+ hardwareInfo: provider.getHardwareInfo(),
21
+ featureSupport: provider.getFeatureSupport(),
22
+ supports: (feature) => provider.supports(feature),
23
+ isOnline: () => provider.isOnline(),
24
+ isStandalone: () => provider.isStandalone(),
25
+ language: provider.getLanguage(),
26
+ languages: provider.getLanguages(),
27
+ };
28
+ };
29
+ //# sourceMappingURL=device.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.service.js","sourceRoot":"","sources":["../../src/services/device.service.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAiBlD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAkB,EAAE;IACrD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAE9B,OAAO;QACL,UAAU,EAAE,QAAQ,CAAC,aAAa,EAAE;QACpC,UAAU,EAAE,QAAQ,CAAC,aAAa,EAAE;QACpC,YAAY,EAAE,QAAQ,CAAC,eAAe,EAAE;QACxC,cAAc,EAAE,QAAQ,CAAC,iBAAiB,EAAE;QAC5C,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QACjD,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACnC,YAAY,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE;QAC3C,QAAQ,EAAE,QAAQ,CAAC,WAAW,EAAE;QAChC,SAAS,EAAE,QAAQ,CAAC,YAAY,EAAE;KACnC,CAAA;AACH,CAAC,CAAA"}