@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 @@
1
+ {"version":3,"file":"platform.service.d.ts","sourceRoot":"","sources":["../../src/services/platform.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAgB,MAAM,wBAAwB,CAAA;AAGpE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,OAAO,CAAA;IACd,aAAa,EAAE,OAAO,CAAA;IACtB,YAAY,EAAE,OAAO,CAAA;IACrB,UAAU,EAAE,CAAC,GAAG,SAAS,EAAE,QAAQ,EAAE,KAAK,OAAO,CAAA;CAClD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,qBAAqB,QAAO,eAaxC,CAAA"}
@@ -0,0 +1,33 @@
1
+ import { getPlatformInfo, isPlatform } from '@molecule/app-platform';
2
+ /**
3
+ * Creates an Angular platform service with static platform information.
4
+ *
5
+ * @returns Platform service with platform flags and isPlatform check
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const platform = createPlatformService()
10
+ *
11
+ * if (platform.isMobile) {
12
+ * console.log('Running on mobile')
13
+ * }
14
+ *
15
+ * if (platform.isPlatform('ios', 'android')) {
16
+ * console.log('Running on iOS or Android')
17
+ * }
18
+ * ```
19
+ */
20
+ export const createPlatformService = () => {
21
+ const info = getPlatformInfo();
22
+ return {
23
+ platform: info.platform,
24
+ isNative: info.isNative,
25
+ isMobile: info.isMobile,
26
+ isDesktop: info.isDesktop,
27
+ isWeb: info.isWeb,
28
+ isDevelopment: info.isDevelopment,
29
+ isProduction: info.isProduction,
30
+ isPlatform: (...platforms) => isPlatform(...platforms),
31
+ };
32
+ };
33
+ //# sourceMappingURL=platform.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.service.js","sourceRoot":"","sources":["../../src/services/platform.service.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAgBpE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAoB,EAAE;IACzD,MAAM,IAAI,GAAiB,eAAe,EAAE,CAAA;IAE5C,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,UAAU,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;KACvD,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Angular utility for tracking async function state.
3
+ *
4
+ * @module
5
+ */
6
+ import { type Observable } from 'rxjs';
7
+ import type { PromiseState } from '@molecule/app-utilities';
8
+ /**
9
+ * Promise state manager.
10
+ * @returns The result.
11
+ */
12
+ export interface PromiseStateManager<T> {
13
+ state$: Observable<PromiseState<T>>;
14
+ getState: () => PromiseState<T>;
15
+ call: (...args: any[]) => Promise<T>;
16
+ cancel: (message?: string) => void;
17
+ reset: () => void;
18
+ destroy: () => void;
19
+ }
20
+ /**
21
+ * Creates a promise state manager for tracking async function state.
22
+ *
23
+ * @param asyncFn - The async function to track
24
+ * @returns Promise state manager with observable state
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const { state$, call, cancel, reset, destroy } = createPromiseState(
29
+ * (id: string) => fetch(`/api/users/${id}`).then(r => r.json())
30
+ * )
31
+ *
32
+ * state$.subscribe(state => {
33
+ * console.log(state.status, state.value, state.error)
34
+ * })
35
+ *
36
+ * await call('123')
37
+ * ```
38
+ */
39
+ export declare const createPromiseState: <T extends (...args: any[]) => Promise<any>>(asyncFn: T) => PromiseStateManager<Awaited<ReturnType<T>>>;
40
+ //# sourceMappingURL=promise.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promise.service.d.ts","sourceRoot":"","sources":["../../src/services/promise.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,MAAM,CAAA;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAE3D;;;GAGG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,MAAM,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;IACnC,QAAQ,EAAE,MAAM,YAAY,CAAC,CAAC,CAAC,CAAA;IAC/B,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IACpC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAQD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EAC3E,SAAS,CAAC,KACT,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAqE5C,CAAA"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Angular utility for tracking async function state.
3
+ *
4
+ * @module
5
+ */
6
+ /* eslint-disable @typescript-eslint/no-explicit-any */
7
+ import { BehaviorSubject } from 'rxjs';
8
+ const createIdleState = () => ({
9
+ status: 'idle',
10
+ value: null,
11
+ error: null,
12
+ });
13
+ /**
14
+ * Creates a promise state manager for tracking async function state.
15
+ *
16
+ * @param asyncFn - The async function to track
17
+ * @returns Promise state manager with observable state
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const { state$, call, cancel, reset, destroy } = createPromiseState(
22
+ * (id: string) => fetch(`/api/users/${id}`).then(r => r.json())
23
+ * )
24
+ *
25
+ * state$.subscribe(state => {
26
+ * console.log(state.status, state.value, state.error)
27
+ * })
28
+ *
29
+ * await call('123')
30
+ * ```
31
+ */
32
+ export const createPromiseState = (asyncFn) => {
33
+ const subject = new BehaviorSubject(createIdleState());
34
+ let callId = 0;
35
+ let destroyed = false;
36
+ const getState = () => subject.getValue();
37
+ const call = (...args) => {
38
+ callId += 1;
39
+ const thisCallId = callId;
40
+ if (!destroyed) {
41
+ subject.next({ status: 'pending', value: null, error: null });
42
+ }
43
+ const promise = asyncFn(...args);
44
+ return promise.then((resolved) => {
45
+ if (thisCallId === callId && !destroyed) {
46
+ subject.next({ status: 'resolved', value: resolved, error: null });
47
+ }
48
+ return resolved;
49
+ }, (err) => {
50
+ const rejection = err instanceof Error ? err : new Error(String(err));
51
+ if (thisCallId === callId && !destroyed) {
52
+ subject.next({ status: 'rejected', value: null, error: rejection });
53
+ }
54
+ throw rejection;
55
+ });
56
+ };
57
+ const cancel = (message) => {
58
+ callId += 1;
59
+ if (!destroyed) {
60
+ subject.next({
61
+ status: 'rejected',
62
+ value: null,
63
+ error: message ? new Error(message) : null,
64
+ });
65
+ }
66
+ };
67
+ const reset = () => {
68
+ if (!destroyed) {
69
+ subject.next(createIdleState());
70
+ }
71
+ };
72
+ const destroy = () => {
73
+ destroyed = true;
74
+ subject.complete();
75
+ };
76
+ return {
77
+ state$: subject.asObservable(),
78
+ getState,
79
+ call,
80
+ cancel,
81
+ reset,
82
+ destroy,
83
+ };
84
+ };
85
+ //# sourceMappingURL=promise.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promise.service.js","sourceRoot":"","sources":["../../src/services/promise.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,uDAAuD;AACvD,OAAO,EAAE,eAAe,EAAmB,MAAM,MAAM,CAAA;AAiBvD,MAAM,eAAe,GAAG,GAAuB,EAAE,CAAC,CAAC;IACjD,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;CACZ,CAAC,CAAA;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,OAAU,EACmC,EAAE;IAG/C,MAAM,OAAO,GAAG,IAAI,eAAe,CAAkB,eAAe,EAAK,CAAC,CAAA;IAC1E,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,IAAI,SAAS,GAAG,KAAK,CAAA;IAErB,MAAM,QAAQ,GAAG,GAAoB,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAA;IAE1D,MAAM,IAAI,GAAG,CAAC,GAAG,IAAW,EAAc,EAAE;QAC1C,MAAM,IAAI,CAAC,CAAA;QACX,MAAM,UAAU,GAAG,MAAM,CAAA;QAEzB,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAC/D,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAA;QAEhC,OAAO,OAAO,CAAC,IAAI,CACjB,CAAC,QAAW,EAAE,EAAE;YACd,IAAI,UAAU,KAAK,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;gBACxC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YACpE,CAAC;YACD,OAAO,QAAQ,CAAA;QACjB,CAAC,EACD,CAAC,GAAY,EAAE,EAAE;YACf,MAAM,SAAS,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YAErE,IAAI,UAAU,KAAK,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;gBACxC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;YACrE,CAAC;YAED,MAAM,SAAS,CAAA;QACjB,CAAC,CACF,CAAA;IACH,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,CAAC,OAAgB,EAAQ,EAAE;QACxC,MAAM,IAAI,CAAC,CAAA;QAEX,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,UAAU;gBAClB,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;aAC3C,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,eAAe,EAAK,CAAC,CAAA;QACpC,CAAC;IACH,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,IAAI;QACJ,MAAM;QACN,KAAK;QACL,OAAO;KACR,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Angular push notifications service with reactive state.
3
+ *
4
+ * @module
5
+ */
6
+ import { type Observable } from 'rxjs';
7
+ import type { NotificationActionListener, NotificationReceivedListener, PermissionStatus, PushRegisterOptions, PushToken, TokenChangeListener } from '@molecule/app-push';
8
+ /**
9
+ * Push service interface.
10
+ */
11
+ export interface PushService {
12
+ permission$: Observable<PermissionStatus | null>;
13
+ token$: Observable<PushToken | null>;
14
+ getPermission: () => PermissionStatus | null;
15
+ getToken: () => PushToken | null;
16
+ checkPermission: () => Promise<PermissionStatus>;
17
+ requestPermission: () => Promise<PermissionStatus>;
18
+ register: (options?: PushRegisterOptions) => Promise<PushToken>;
19
+ unregister: () => Promise<void>;
20
+ onNotificationReceived: (listener: NotificationReceivedListener) => () => void;
21
+ onNotificationAction: (listener: NotificationActionListener) => () => void;
22
+ onTokenChange: (listener: TokenChangeListener) => () => void;
23
+ setBadge: (count: number) => Promise<void>;
24
+ clearBadge: () => Promise<void>;
25
+ destroy: () => void;
26
+ }
27
+ /**
28
+ * Creates an Angular push notifications service with reactive state.
29
+ *
30
+ * @returns Push service with observables and action methods
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * const push = createPushService()
35
+ *
36
+ * push.permission$.subscribe(status => {
37
+ * console.log('Permission:', status)
38
+ * })
39
+ *
40
+ * await push.requestPermission()
41
+ * const token = await push.register()
42
+ * ```
43
+ */
44
+ export declare const createPushService: () => PushService;
45
+ //# sourceMappingURL=push.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.service.d.ts","sourceRoot":"","sources":["../../src/services/push.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,MAAM,CAAA;AAEvD,OAAO,KAAK,EACV,0BAA0B,EAC1B,4BAA4B,EAC5B,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,mBAAmB,EACpB,MAAM,oBAAoB,CAAA;AAG3B;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;IAChD,MAAM,EAAE,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IACpC,aAAa,EAAE,MAAM,gBAAgB,GAAG,IAAI,CAAA;IAC5C,QAAQ,EAAE,MAAM,SAAS,GAAG,IAAI,CAAA;IAChC,eAAe,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAChD,iBAAiB,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAClD,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,mBAAmB,KAAK,OAAO,CAAC,SAAS,CAAC,CAAA;IAC/D,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,sBAAsB,EAAE,CAAC,QAAQ,EAAE,4BAA4B,KAAK,MAAM,IAAI,CAAA;IAC9E,oBAAoB,EAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,MAAM,IAAI,CAAA;IAC1E,aAAa,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,MAAM,IAAI,CAAA;IAC5D,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1C,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,iBAAiB,QAAO,WAuCpC,CAAA"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Angular push notifications service with reactive state.
3
+ *
4
+ * @module
5
+ */
6
+ import { BehaviorSubject } from 'rxjs';
7
+ import { getProvider } from '@molecule/app-push';
8
+ /**
9
+ * Creates an Angular push notifications service with reactive state.
10
+ *
11
+ * @returns Push service with observables and action methods
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const push = createPushService()
16
+ *
17
+ * push.permission$.subscribe(status => {
18
+ * console.log('Permission:', status)
19
+ * })
20
+ *
21
+ * await push.requestPermission()
22
+ * const token = await push.register()
23
+ * ```
24
+ */
25
+ export const createPushService = () => {
26
+ const provider = getProvider();
27
+ const permissionSubject = new BehaviorSubject(null);
28
+ const tokenSubject = new BehaviorSubject(null);
29
+ return {
30
+ permission$: permissionSubject.asObservable(),
31
+ token$: tokenSubject.asObservable(),
32
+ getPermission: () => permissionSubject.getValue(),
33
+ getToken: () => tokenSubject.getValue(),
34
+ checkPermission: async () => {
35
+ const status = await provider.checkPermission();
36
+ permissionSubject.next(status);
37
+ return status;
38
+ },
39
+ requestPermission: async () => {
40
+ const status = await provider.requestPermission();
41
+ permissionSubject.next(status);
42
+ return status;
43
+ },
44
+ register: async (options) => {
45
+ const token = await provider.register(options);
46
+ tokenSubject.next(token);
47
+ return token;
48
+ },
49
+ unregister: async () => {
50
+ await provider.unregister();
51
+ tokenSubject.next(null);
52
+ },
53
+ onNotificationReceived: (listener) => provider.onNotificationReceived(listener),
54
+ onNotificationAction: (listener) => provider.onNotificationAction(listener),
55
+ onTokenChange: (listener) => provider.onTokenChange(listener),
56
+ setBadge: (count) => provider.setBadge(count),
57
+ clearBadge: () => provider.clearBadge(),
58
+ destroy: () => {
59
+ permissionSubject.complete();
60
+ tokenSubject.complete();
61
+ },
62
+ };
63
+ };
64
+ //# sourceMappingURL=push.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.service.js","sourceRoot":"","sources":["../../src/services/push.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAmB,MAAM,MAAM,CAAA;AAUvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAsBhD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAgB,EAAE;IACjD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,iBAAiB,GAAG,IAAI,eAAe,CAA0B,IAAI,CAAC,CAAA;IAC5E,MAAM,YAAY,GAAG,IAAI,eAAe,CAAmB,IAAI,CAAC,CAAA;IAEhE,OAAO;QACL,WAAW,EAAE,iBAAiB,CAAC,YAAY,EAAE;QAC7C,MAAM,EAAE,YAAY,CAAC,YAAY,EAAE;QACnC,aAAa,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE;QACjD,QAAQ,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE;QACvC,eAAe,EAAE,KAAK,IAAI,EAAE;YAC1B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,eAAe,EAAE,CAAA;YAC/C,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC9B,OAAO,MAAM,CAAA;QACf,CAAC;QACD,iBAAiB,EAAE,KAAK,IAAI,EAAE;YAC5B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,iBAAiB,EAAE,CAAA;YACjD,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC9B,OAAO,MAAM,CAAA;QACf,CAAC;QACD,QAAQ,EAAE,KAAK,EAAE,OAA6B,EAAE,EAAE;YAChD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YAC9C,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACxB,OAAO,KAAK,CAAA;QACd,CAAC;QACD,UAAU,EAAE,KAAK,IAAI,EAAE;YACrB,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAA;YAC3B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzB,CAAC;QACD,sBAAsB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,CAAC;QAC/E,oBAAoB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QAC3E,aAAa,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;QAC7D,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC7C,UAAU,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE;QACvC,OAAO,EAAE,GAAG,EAAE;YACZ,iBAAiB,CAAC,QAAQ,EAAE,CAAA;YAC5B,YAAY,CAAC,QAAQ,EAAE,CAAA;QACzB,CAAC;KACF,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Angular service for routing.
3
+ *
4
+ * @module
5
+ */
6
+ import { type OnDestroy } from '@angular/core';
7
+ import { type Observable } from 'rxjs';
8
+ import type { NavigateOptions, QueryParams, RouteLocation, RouteParams, Router } from '@molecule/app-routing';
9
+ import * as i0 from "@angular/core";
10
+ /**
11
+ * Angular service for routing.
12
+ *
13
+ * Wraps molecule router and exposes state as RxJS observables.
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * @Component({
18
+ * selector: 'app-nav',
19
+ * template: `
20
+ * <nav>
21
+ * <a (click)="navigate('/home')">Home</a>
22
+ * <span>Current: {{ (location$ | async)?.pathname }}</span>
23
+ * </nav>
24
+ * `
25
+ * })
26
+ * export class NavComponent {
27
+ * location$ = this.routerService.location$
28
+ *
29
+ * constructor(private routerService: MoleculeRouterService) {}
30
+ *
31
+ * navigate(path: string) {
32
+ * this.routerService.navigate(path)
33
+ * }
34
+ * }
35
+ * ```
36
+ */
37
+ export declare class MoleculeRouterService implements OnDestroy {
38
+ private router;
39
+ private locationSubject;
40
+ private paramsSubject;
41
+ private querySubject;
42
+ private unsubscribe;
43
+ /**
44
+ * Observable of the current location.
45
+ */
46
+ location$: Observable<RouteLocation>;
47
+ /**
48
+ * Observable of route parameters.
49
+ */
50
+ params$: Observable<RouteParams>;
51
+ /**
52
+ * Observable of query parameters.
53
+ */
54
+ query$: Observable<QueryParams>;
55
+ /**
56
+ * Observable of the current pathname.
57
+ */
58
+ pathname$: Observable<string>;
59
+ constructor(router: Router);
60
+ /**
61
+ * Get the current location snapshot.
62
+ * @returns The result.
63
+ */
64
+ get location(): RouteLocation;
65
+ /**
66
+ * Get the current params snapshot.
67
+ * @returns The result.
68
+ */
69
+ get params(): RouteParams;
70
+ /**
71
+ * Get the current query snapshot.
72
+ * @returns The result.
73
+ */
74
+ get query(): QueryParams;
75
+ /**
76
+ * Navigate to a path.
77
+ *
78
+ * @param path - Target path
79
+ * @param options - Navigation options
80
+ */
81
+ navigate(path: string, options?: NavigateOptions): void;
82
+ /**
83
+ * Navigate to a named route.
84
+ *
85
+ * @param name - Route name
86
+ * @param params - Route parameters
87
+ * @param query - Query parameters
88
+ * @param options - Navigation options
89
+ */
90
+ navigateTo(name: string, params?: RouteParams, query?: QueryParams, options?: NavigateOptions): void;
91
+ /**
92
+ * Go back in history.
93
+ */
94
+ back(): void;
95
+ /**
96
+ * Go forward in history.
97
+ */
98
+ forward(): void;
99
+ /**
100
+ * Check if a path is currently active.
101
+ *
102
+ * @param path - Path to check
103
+ * @param exact - Whether to match exactly
104
+ * @returns The result.
105
+ */
106
+ isActive(path: string, exact?: boolean): boolean;
107
+ /**
108
+ * Cleans up subscriptions and completes subjects on service destruction.
109
+ */
110
+ ngOnDestroy(): void;
111
+ static ɵfac: i0.ɵɵFactoryDeclaration<MoleculeRouterService, never>;
112
+ static ɵprov: i0.ɵɵInjectableDeclaration<MoleculeRouterService>;
113
+ }
114
+ //# sourceMappingURL=router.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.service.d.ts","sourceRoot":"","sources":["../../src/services/router.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,eAAe,EACf,WAAW,EACX,aAAa,EACb,WAAW,EACX,MAAM,EACP,MAAM,uBAAuB,CAAA;;AAI9B;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAMa,qBAAsB,YAAW,SAAS;IA0BzB,OAAO,CAAC,MAAM;IAzB1C,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,WAAW,CAA4B;IAE/C;;OAEG;IACH,SAAS,EAAE,UAAU,CAAC,aAAa,CAAC,CAAA;IAEpC;;OAEG;IACH,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,CAAA;IAEhC;;OAEG;IACH,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,CAAA;IAE/B;;OAEG;IACH,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;gBAEO,MAAM,EAAE,MAAM;IAqBlD;;;OAGG;IACH,IAAI,QAAQ,IAAI,aAAa,CAE5B;IAED;;;OAGG;IACH,IAAI,MAAM,IAAI,WAAW,CAExB;IAED;;;OAGG;IACH,IAAI,KAAK,IAAI,WAAW,CAEvB;IAED;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI;IAIvD;;;;;;;OAOG;IACH,UAAU,CACR,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,EACpB,KAAK,CAAC,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE,eAAe,GACxB,IAAI;IAIP;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO;IAI9C;;OAEG;IACH,WAAW,IAAI,IAAI;yCA9HR,qBAAqB;6CAArB,qBAAqB;CAoIjC"}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Angular service for routing.
3
+ *
4
+ * @module
5
+ */
6
+ import { Inject, Injectable } from '@angular/core';
7
+ import { BehaviorSubject, distinctUntilChanged, map } from 'rxjs';
8
+ import { ROUTER } from '../tokens.js';
9
+ import * as i0 from "@angular/core";
10
+ /**
11
+ * Angular service for routing.
12
+ *
13
+ * Wraps molecule router and exposes state as RxJS observables.
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * @Component({
18
+ * selector: 'app-nav',
19
+ * template: `
20
+ * <nav>
21
+ * <a (click)="navigate('/home')">Home</a>
22
+ * <span>Current: {{ (location$ | async)?.pathname }}</span>
23
+ * </nav>
24
+ * `
25
+ * })
26
+ * export class NavComponent {
27
+ * location$ = this.routerService.location$
28
+ *
29
+ * constructor(private routerService: MoleculeRouterService) {}
30
+ *
31
+ * navigate(path: string) {
32
+ * this.routerService.navigate(path)
33
+ * }
34
+ * }
35
+ * ```
36
+ */
37
+ /**
38
+ * Molecule Router Service class.
39
+ */
40
+ export class MoleculeRouterService {
41
+ constructor(router) {
42
+ this.router = router;
43
+ this.unsubscribe = null;
44
+ this.locationSubject = new BehaviorSubject(router.getLocation());
45
+ this.paramsSubject = new BehaviorSubject(router.getParams());
46
+ this.querySubject = new BehaviorSubject(router.getQuery());
47
+ this.unsubscribe = router.subscribe(() => {
48
+ this.locationSubject.next(router.getLocation());
49
+ this.paramsSubject.next(router.getParams());
50
+ this.querySubject.next(router.getQuery());
51
+ });
52
+ this.location$ = this.locationSubject.asObservable();
53
+ this.params$ = this.paramsSubject.asObservable();
54
+ this.query$ = this.querySubject.asObservable();
55
+ this.pathname$ = this.location$.pipe(map((loc) => loc.pathname), distinctUntilChanged());
56
+ }
57
+ /**
58
+ * Get the current location snapshot.
59
+ * @returns The result.
60
+ */
61
+ get location() {
62
+ return this.router.getLocation();
63
+ }
64
+ /**
65
+ * Get the current params snapshot.
66
+ * @returns The result.
67
+ */
68
+ get params() {
69
+ return this.router.getParams();
70
+ }
71
+ /**
72
+ * Get the current query snapshot.
73
+ * @returns The result.
74
+ */
75
+ get query() {
76
+ return this.router.getQuery();
77
+ }
78
+ /**
79
+ * Navigate to a path.
80
+ *
81
+ * @param path - Target path
82
+ * @param options - Navigation options
83
+ */
84
+ navigate(path, options) {
85
+ this.router.navigate(path, options);
86
+ }
87
+ /**
88
+ * Navigate to a named route.
89
+ *
90
+ * @param name - Route name
91
+ * @param params - Route parameters
92
+ * @param query - Query parameters
93
+ * @param options - Navigation options
94
+ */
95
+ navigateTo(name, params, query, options) {
96
+ this.router.navigateTo(name, params, query, options);
97
+ }
98
+ /**
99
+ * Go back in history.
100
+ */
101
+ back() {
102
+ this.router.back();
103
+ }
104
+ /**
105
+ * Go forward in history.
106
+ */
107
+ forward() {
108
+ this.router.forward();
109
+ }
110
+ /**
111
+ * Check if a path is currently active.
112
+ *
113
+ * @param path - Path to check
114
+ * @param exact - Whether to match exactly
115
+ * @returns The result.
116
+ */
117
+ isActive(path, exact = false) {
118
+ return this.router.isActive(path, exact);
119
+ }
120
+ /**
121
+ * Cleans up subscriptions and completes subjects on service destruction.
122
+ */
123
+ ngOnDestroy() {
124
+ this.unsubscribe?.();
125
+ this.locationSubject.complete();
126
+ this.paramsSubject.complete();
127
+ this.querySubject.complete();
128
+ }
129
+ static { this.ɵfac = function MoleculeRouterService_Factory(__ngFactoryType__) { /* @ts-ignore */
130
+ return new (__ngFactoryType__ || MoleculeRouterService)(i0.ɵɵinject(ROUTER)); }; }
131
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MoleculeRouterService, factory: MoleculeRouterService.ɵfac, providedIn: 'root' }); }
132
+ }
133
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MoleculeRouterService, [{
134
+ type: Injectable,
135
+ args: [{
136
+ providedIn: 'root',
137
+ }]
138
+ }], () => [{ type: undefined, decorators: [{
139
+ type: Inject,
140
+ args: [ROUTER]
141
+ }] }], null); })();
142
+ //# sourceMappingURL=router.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.service.js","sourceRoot":"","sources":["../../src/services/router.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Angular utility for registration with async state tracking.
3
+ *
4
+ * @module
5
+ */
6
+ import type { Observable } from 'rxjs';
7
+ import type { AuthClient, AuthResult, RegisterData } from '@molecule/app-auth';
8
+ import type { PromiseState } from '@molecule/app-utilities';
9
+ /**
10
+ * Signup state manager.
11
+ */
12
+ export interface SignupStateManager<T = unknown> {
13
+ state$: Observable<PromiseState<AuthResult<T>>>;
14
+ getState: () => PromiseState<AuthResult<T>>;
15
+ signup: (data: RegisterData) => Promise<AuthResult<T>>;
16
+ reset: () => void;
17
+ destroy: () => void;
18
+ }
19
+ /**
20
+ * Creates a signup state manager with async state tracking.
21
+ *
22
+ * @param client - Auth client
23
+ * @returns Signup state manager
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * const signupManager = createSignupState(authClient)
28
+ *
29
+ * signupManager.state$.subscribe(state => {
30
+ * console.log(state.status) // 'idle' | 'pending' | 'resolved' | 'rejected'
31
+ * })
32
+ *
33
+ * await signupManager.signup({ email: 'user@example.com', password: 'secret' })
34
+ * ```
35
+ */
36
+ export declare function createSignupState<T = unknown>(client: AuthClient<T>): SignupStateManager<T>;
37
+ //# sourceMappingURL=signup.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signup.service.d.ts","sourceRoot":"","sources":["../../src/services/signup.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAEtC,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAI3D;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,OAAO;IAC7C,MAAM,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/C,QAAQ,EAAE,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3C,MAAM,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IACtD,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAU3F"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Angular utility for registration with async state tracking.
3
+ *
4
+ * @module
5
+ */
6
+ import { createPromiseState } from './promise.service.js';
7
+ /**
8
+ * Creates a signup state manager with async state tracking.
9
+ *
10
+ * @param client - Auth client
11
+ * @returns Signup state manager
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const signupManager = createSignupState(authClient)
16
+ *
17
+ * signupManager.state$.subscribe(state => {
18
+ * console.log(state.status) // 'idle' | 'pending' | 'resolved' | 'rejected'
19
+ * })
20
+ *
21
+ * await signupManager.signup({ email: 'user@example.com', password: 'secret' })
22
+ * ```
23
+ */
24
+ export function createSignupState(client) {
25
+ const manager = createPromiseState((data) => client.register(data));
26
+ return {
27
+ state$: manager.state$,
28
+ getState: manager.getState,
29
+ signup: manager.call,
30
+ reset: manager.reset,
31
+ destroy: manager.destroy,
32
+ };
33
+ }
34
+ //# sourceMappingURL=signup.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signup.service.js","sourceRoot":"","sources":["../../src/services/signup.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAazD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,iBAAiB,CAAc,MAAqB;IAClE,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,IAAkB,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IAEjF,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,MAAM,EAAE,OAAO,CAAC,IAAI;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAA;AACH,CAAC"}