@molecule/app-svelte 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 (103) hide show
  1. package/LICENSE +115 -0
  2. package/README.md +2032 -0
  3. package/dist/context.d.ts +126 -0
  4. package/dist/context.d.ts.map +1 -0
  5. package/dist/context.js +217 -0
  6. package/dist/context.js.map +1 -0
  7. package/dist/index.d.ts +60 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +60 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/stores/async-state.d.ts +47 -0
  12. package/dist/stores/async-state.d.ts.map +1 -0
  13. package/dist/stores/async-state.js +89 -0
  14. package/dist/stores/async-state.js.map +1 -0
  15. package/dist/stores/auth.d.ts +54 -0
  16. package/dist/stores/auth.d.ts.map +1 -0
  17. package/dist/stores/auth.js +93 -0
  18. package/dist/stores/auth.js.map +1 -0
  19. package/dist/stores/capacitor-app.d.ts +46 -0
  20. package/dist/stores/capacitor-app.d.ts.map +1 -0
  21. package/dist/stores/capacitor-app.js +59 -0
  22. package/dist/stores/capacitor-app.js.map +1 -0
  23. package/dist/stores/change-password.d.ts +17 -0
  24. package/dist/stores/change-password.d.ts.map +1 -0
  25. package/dist/stores/change-password.js +17 -0
  26. package/dist/stores/change-password.js.map +1 -0
  27. package/dist/stores/device.d.ts +39 -0
  28. package/dist/stores/device.d.ts.map +1 -0
  29. package/dist/stores/device.js +51 -0
  30. package/dist/stores/device.js.map +1 -0
  31. package/dist/stores/forms.d.ts +121 -0
  32. package/dist/stores/forms.d.ts.map +1 -0
  33. package/dist/stores/forms.js +178 -0
  34. package/dist/stores/forms.js.map +1 -0
  35. package/dist/stores/http.d.ts +119 -0
  36. package/dist/stores/http.d.ts.map +1 -0
  37. package/dist/stores/http.js +206 -0
  38. package/dist/stores/http.js.map +1 -0
  39. package/dist/stores/i18n.d.ts +50 -0
  40. package/dist/stores/i18n.d.ts.map +1 -0
  41. package/dist/stores/i18n.js +67 -0
  42. package/dist/stores/i18n.js.map +1 -0
  43. package/dist/stores/index.d.ts +27 -0
  44. package/dist/stores/index.d.ts.map +1 -0
  45. package/dist/stores/index.js +27 -0
  46. package/dist/stores/index.js.map +1 -0
  47. package/dist/stores/logger.d.ts +83 -0
  48. package/dist/stores/logger.d.ts.map +1 -0
  49. package/dist/stores/logger.js +104 -0
  50. package/dist/stores/logger.js.map +1 -0
  51. package/dist/stores/login.d.ts +33 -0
  52. package/dist/stores/login.d.ts.map +1 -0
  53. package/dist/stores/login.js +32 -0
  54. package/dist/stores/login.js.map +1 -0
  55. package/dist/stores/oauth.d.ts +74 -0
  56. package/dist/stores/oauth.d.ts.map +1 -0
  57. package/dist/stores/oauth.js +183 -0
  58. package/dist/stores/oauth.js.map +1 -0
  59. package/dist/stores/password-reset.d.ts +31 -0
  60. package/dist/stores/password-reset.d.ts.map +1 -0
  61. package/dist/stores/password-reset.js +26 -0
  62. package/dist/stores/password-reset.js.map +1 -0
  63. package/dist/stores/platform.d.ts +41 -0
  64. package/dist/stores/platform.d.ts.map +1 -0
  65. package/dist/stores/platform.js +44 -0
  66. package/dist/stores/platform.js.map +1 -0
  67. package/dist/stores/promise.d.ts +41 -0
  68. package/dist/stores/promise.d.ts.map +1 -0
  69. package/dist/stores/promise.js +76 -0
  70. package/dist/stores/promise.js.map +1 -0
  71. package/dist/stores/push.d.ts +41 -0
  72. package/dist/stores/push.d.ts.map +1 -0
  73. package/dist/stores/push.js +73 -0
  74. package/dist/stores/push.js.map +1 -0
  75. package/dist/stores/router.d.ts +74 -0
  76. package/dist/stores/router.d.ts.map +1 -0
  77. package/dist/stores/router.js +131 -0
  78. package/dist/stores/router.js.map +1 -0
  79. package/dist/stores/signup.d.ts +18 -0
  80. package/dist/stores/signup.d.ts.map +1 -0
  81. package/dist/stores/signup.js +17 -0
  82. package/dist/stores/signup.js.map +1 -0
  83. package/dist/stores/state.d.ts +62 -0
  84. package/dist/stores/state.d.ts.map +1 -0
  85. package/dist/stores/state.js +74 -0
  86. package/dist/stores/state.js.map +1 -0
  87. package/dist/stores/storage.d.ts +76 -0
  88. package/dist/stores/storage.d.ts.map +1 -0
  89. package/dist/stores/storage.js +159 -0
  90. package/dist/stores/storage.js.map +1 -0
  91. package/dist/stores/theme.d.ts +68 -0
  92. package/dist/stores/theme.d.ts.map +1 -0
  93. package/dist/stores/theme.js +119 -0
  94. package/dist/stores/theme.js.map +1 -0
  95. package/dist/stores/version.d.ts +44 -0
  96. package/dist/stores/version.d.ts.map +1 -0
  97. package/dist/stores/version.js +73 -0
  98. package/dist/stores/version.js.map +1 -0
  99. package/dist/types.d.ts +46 -0
  100. package/dist/types.d.ts.map +1 -0
  101. package/dist/types.js +7 -0
  102. package/dist/types.js.map +1 -0
  103. package/package.json +59 -0
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Svelte store for password reset with async state tracking.
3
+ *
4
+ * @module
5
+ */
6
+ import { getAuthClient } from '../context.js';
7
+ import { createPromiseStore } from './promise.js';
8
+ /**
9
+ * Creates password reset stores with async state tracking.
10
+ *
11
+ * @returns Password reset stores for request and confirm steps
12
+ */
13
+ export function createPasswordResetStores() {
14
+ const client = getAuthClient();
15
+ const request = createPromiseStore((data) => client.requestPasswordReset(data));
16
+ const confirm = createPromiseStore((data) => client.confirmPasswordReset(data));
17
+ return {
18
+ request,
19
+ confirm,
20
+ resetAll: () => {
21
+ request.reset();
22
+ confirm.reset();
23
+ },
24
+ };
25
+ }
26
+ //# sourceMappingURL=password-reset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password-reset.js","sourceRoot":"","sources":["../../src/stores/password-reset.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAmBjD;;;;GAIG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAE9B,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,IAA0B,EAAE,EAAE,CAChE,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAClC,CAAA;IAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,IAA0B,EAAE,EAAE,CAChE,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAClC,CAAA;IAED,OAAO;QACL,OAAO;QACP,OAAO;QACP,QAAQ,EAAE,GAAG,EAAE;YACb,OAAO,CAAC,KAAK,EAAE,CAAA;YACf,OAAO,CAAC,KAAK,EAAE,CAAA;QACjB,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Svelte stores for platform detection.
3
+ *
4
+ * @module
5
+ */
6
+ import type { Platform } from '@molecule/app-platform';
7
+ /**
8
+ * Create platform stores from the module-level platform info.
9
+ *
10
+ * Platform information is static (no reactive subscription needed),
11
+ * so this returns plain values rather than Svelte stores.
12
+ *
13
+ * @returns Platform information and utility functions
14
+ *
15
+ * @example
16
+ * ```svelte
17
+ * <script>
18
+ * import { createPlatformStores } from '@molecule/app-svelte'
19
+ *
20
+ * const { platform, isNative, isMobile, isPlatform } = createPlatformStores()
21
+ * </script>
22
+ *
23
+ * <p>Platform: {platform}</p>
24
+ * {#if isMobile}
25
+ * <MobileLayout />
26
+ * {:else}
27
+ * <DesktopLayout />
28
+ * {/if}
29
+ * ```
30
+ */
31
+ export declare function createPlatformStores(): {
32
+ platform: Platform;
33
+ isNative: boolean;
34
+ isMobile: boolean;
35
+ isDesktop: boolean;
36
+ isWeb: boolean;
37
+ isDevelopment: boolean;
38
+ isProduction: boolean;
39
+ isPlatform: (...platforms: Platform[]) => boolean;
40
+ };
41
+ //# sourceMappingURL=platform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/stores/platform.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAGtD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,oBAAoB,IAAI;IACtC,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,CAaA"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Svelte stores for platform detection.
3
+ *
4
+ * @module
5
+ */
6
+ import { getPlatformInfo, isPlatform } from '@molecule/app-platform';
7
+ /**
8
+ * Create platform stores from the module-level platform info.
9
+ *
10
+ * Platform information is static (no reactive subscription needed),
11
+ * so this returns plain values rather than Svelte stores.
12
+ *
13
+ * @returns Platform information and utility functions
14
+ *
15
+ * @example
16
+ * ```svelte
17
+ * <script>
18
+ * import { createPlatformStores } from '@molecule/app-svelte'
19
+ *
20
+ * const { platform, isNative, isMobile, isPlatform } = createPlatformStores()
21
+ * </script>
22
+ *
23
+ * <p>Platform: {platform}</p>
24
+ * {#if isMobile}
25
+ * <MobileLayout />
26
+ * {:else}
27
+ * <DesktopLayout />
28
+ * {/if}
29
+ * ```
30
+ */
31
+ export function createPlatformStores() {
32
+ const info = getPlatformInfo();
33
+ return {
34
+ platform: info.platform,
35
+ isNative: info.isNative,
36
+ isMobile: info.isMobile,
37
+ isDesktop: info.isDesktop,
38
+ isWeb: info.isWeb,
39
+ isDevelopment: info.isDevelopment,
40
+ isProduction: info.isProduction,
41
+ isPlatform: (...platforms) => isPlatform(...platforms),
42
+ };
43
+ }
44
+ //# sourceMappingURL=platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/stores/platform.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAEpE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,oBAAoB;IAUlC,MAAM,IAAI,GAAG,eAAe,EAAE,CAAA;IAE9B,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,SAAqB,EAAW,EAAE,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;KAC5E,CAAA;AACH,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Svelte store for tracking async function state.
3
+ *
4
+ * @module
5
+ */
6
+ import { type Readable } from 'svelte/store';
7
+ import type { PromiseState } from '@molecule/app-utilities';
8
+ /**
9
+ * Promise store with action methods.
10
+ */
11
+ export interface PromiseStore<T> extends Readable<PromiseState<T>> {
12
+ call: (...args: any[]) => Promise<T>;
13
+ cancel: (message?: string) => void;
14
+ reset: () => void;
15
+ }
16
+ /**
17
+ * Creates a store that tracks async function state.
18
+ *
19
+ * @param asyncFn - The async function to track
20
+ * @returns Promise store with subscribe, call, cancel, and reset
21
+ *
22
+ * @example
23
+ * ```svelte
24
+ * <script>
25
+ * import { createPromiseStore } from '@molecule/app-svelte'
26
+ *
27
+ * const users = createPromiseStore((query) => api.searchUsers(query))
28
+ * </script>
29
+ *
30
+ * <button on:click={() => users.call('john')} disabled={$users.status === 'pending'}>
31
+ * Search
32
+ * </button>
33
+ * {#if $users.value}
34
+ * {#each $users.value as user}
35
+ * <div>{user.name}</div>
36
+ * {/each}
37
+ * {/if}
38
+ * ```
39
+ */
40
+ export declare const createPromiseStore: <T extends (...args: any[]) => Promise<any>>(asyncFn: T) => PromiseStore<Awaited<ReturnType<T>>>;
41
+ //# sourceMappingURL=promise.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../src/stores/promise.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,QAAQ,EAAY,MAAM,cAAc,CAAA;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,yBAAyB,CAAA;AAE1E;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,CAAE,SAAQ,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAChE,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;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EAC3E,SAAS,CAAC,KACT,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CA0DrC,CAAA"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Svelte store for tracking async function state.
3
+ *
4
+ * @module
5
+ */
6
+ /* eslint-disable @typescript-eslint/no-explicit-any */
7
+ import { writable } from 'svelte/store';
8
+ /**
9
+ * Creates a store that tracks async function state.
10
+ *
11
+ * @param asyncFn - The async function to track
12
+ * @returns Promise store with subscribe, call, cancel, and reset
13
+ *
14
+ * @example
15
+ * ```svelte
16
+ * <script>
17
+ * import { createPromiseStore } from '@molecule/app-svelte'
18
+ *
19
+ * const users = createPromiseStore((query) => api.searchUsers(query))
20
+ * </script>
21
+ *
22
+ * <button on:click={() => users.call('john')} disabled={$users.status === 'pending'}>
23
+ * Search
24
+ * </button>
25
+ * {#if $users.value}
26
+ * {#each $users.value as user}
27
+ * <div>{user.name}</div>
28
+ * {/each}
29
+ * {/if}
30
+ * ```
31
+ */
32
+ export const createPromiseStore = (asyncFn) => {
33
+ const initial = {
34
+ status: 'idle',
35
+ value: null,
36
+ error: null,
37
+ };
38
+ const store = writable(initial);
39
+ let callId = 0;
40
+ const call = (...args) => {
41
+ callId += 1;
42
+ const thisCallId = callId;
43
+ store.set({ status: 'pending', value: null, error: null });
44
+ return asyncFn(...args).then((resolved) => {
45
+ if (thisCallId === callId) {
46
+ store.set({ 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) {
52
+ store.set({ status: 'rejected', value: null, error: rejection });
53
+ }
54
+ throw rejection;
55
+ });
56
+ };
57
+ const cancel = (message) => {
58
+ callId += 1;
59
+ store.set({
60
+ status: 'rejected',
61
+ value: null,
62
+ error: message ? new Error(message) : null,
63
+ });
64
+ };
65
+ const reset = () => {
66
+ callId += 1;
67
+ store.set({ status: 'idle', value: null, error: null });
68
+ };
69
+ return {
70
+ subscribe: store.subscribe,
71
+ call,
72
+ cancel,
73
+ reset,
74
+ };
75
+ };
76
+ //# sourceMappingURL=promise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promise.js","sourceRoot":"","sources":["../../src/stores/promise.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,uDAAuD;AACvD,OAAO,EAAiB,QAAQ,EAAE,MAAM,cAAc,CAAA;AAatD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,OAAU,EAC4B,EAAE;IAGxC,MAAM,OAAO,GAAoB;QAC/B,MAAM,EAAE,MAAuB;QAC/B,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;KACZ,CAAA;IAED,MAAM,KAAK,GAAG,QAAQ,CAAkB,OAAO,CAAC,CAAA;IAEhD,IAAI,MAAM,GAAG,CAAC,CAAA;IAEd,MAAM,IAAI,GAAG,CAAC,GAAG,IAAW,EAAc,EAAE;QAC1C,MAAM,IAAI,CAAC,CAAA;QACX,MAAM,UAAU,GAAG,MAAM,CAAA;QAEzB,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAE1D,OAAO,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAC1B,CAAC,QAAW,EAAE,EAAE;YACd,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;gBAC1B,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YACjE,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,EAAE,CAAC;gBAC1B,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;YAClE,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;QACX,KAAK,CAAC,GAAG,CAAC;YACR,MAAM,EAAE,UAAU;YAClB,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;SAC3C,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,MAAM,IAAI,CAAC,CAAA;QACX,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACzD,CAAC,CAAA;IAED,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,IAAI;QACJ,MAAM;QACN,KAAK;KACN,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Svelte stores for push notifications.
3
+ *
4
+ * @module
5
+ */
6
+ import { type Readable } from 'svelte/store';
7
+ import type { NotificationActionListener, NotificationReceivedListener, PermissionStatus, PushRegisterOptions, PushToken, TokenChangeListener } from '@molecule/app-push';
8
+ /**
9
+ * Create push notification stores from the module-level push provider.
10
+ *
11
+ * @returns Push notification stores and actions
12
+ *
13
+ * @example
14
+ * ```svelte
15
+ * <script>
16
+ * import { createPushStores } from '@molecule/app-svelte'
17
+ *
18
+ * const { permission, token, requestPermission, register } = createPushStores()
19
+ * </script>
20
+ *
21
+ * {#if $permission === 'default'}
22
+ * <button on:click={requestPermission}>Enable Notifications</button>
23
+ * {:else if $permission === 'granted'}
24
+ * <p>Token: {$token?.value}</p>
25
+ * {/if}
26
+ * ```
27
+ */
28
+ export declare function createPushStores(): {
29
+ permission: Readable<PermissionStatus | null>;
30
+ token: Readable<PushToken | null>;
31
+ checkPermission: () => Promise<PermissionStatus>;
32
+ requestPermission: () => Promise<PermissionStatus>;
33
+ register: (options?: PushRegisterOptions) => Promise<PushToken>;
34
+ unregister: () => Promise<void>;
35
+ onNotificationReceived: (listener: NotificationReceivedListener) => () => void;
36
+ onNotificationAction: (listener: NotificationActionListener) => () => void;
37
+ onTokenChange: (listener: TokenChangeListener) => () => void;
38
+ setBadge: (count: number) => Promise<void>;
39
+ clearBadge: () => Promise<void>;
40
+ };
41
+ //# sourceMappingURL=push.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/stores/push.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,QAAQ,EAA2B,MAAM,cAAc,CAAA;AAErE,OAAO,KAAK,EACV,0BAA0B,EAC1B,4BAA4B,EAC5B,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,mBAAmB,EACpB,MAAM,oBAAoB,CAAA;AAG3B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,IAAI;IAClC,UAAU,EAAE,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;IAC7C,KAAK,EAAE,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IACjC,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;CAChC,CAyDA"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Svelte stores for push notifications.
3
+ *
4
+ * @module
5
+ */
6
+ import { writable } from 'svelte/store';
7
+ import { getProvider } from '@molecule/app-push';
8
+ /**
9
+ * Create push notification stores from the module-level push provider.
10
+ *
11
+ * @returns Push notification stores and actions
12
+ *
13
+ * @example
14
+ * ```svelte
15
+ * <script>
16
+ * import { createPushStores } from '@molecule/app-svelte'
17
+ *
18
+ * const { permission, token, requestPermission, register } = createPushStores()
19
+ * </script>
20
+ *
21
+ * {#if $permission === 'default'}
22
+ * <button on:click={requestPermission}>Enable Notifications</button>
23
+ * {:else if $permission === 'granted'}
24
+ * <p>Token: {$token?.value}</p>
25
+ * {/if}
26
+ * ```
27
+ */
28
+ export function createPushStores() {
29
+ const provider = getProvider();
30
+ const permissionStore = writable(null);
31
+ const tokenStore = writable(null);
32
+ // Actions that update stores
33
+ const checkPermission = async () => {
34
+ const status = await provider.checkPermission();
35
+ permissionStore.set(status);
36
+ return status;
37
+ };
38
+ const requestPermission = async () => {
39
+ const status = await provider.requestPermission();
40
+ permissionStore.set(status);
41
+ return status;
42
+ };
43
+ const register = async (options) => {
44
+ const pushToken = await provider.register(options);
45
+ tokenStore.set(pushToken);
46
+ return pushToken;
47
+ };
48
+ const unregister = async () => {
49
+ await provider.unregister();
50
+ tokenStore.set(null);
51
+ };
52
+ // Event listeners
53
+ const onNotificationReceived = (listener) => provider.onNotificationReceived(listener);
54
+ const onNotificationAction = (listener) => provider.onNotificationAction(listener);
55
+ const onTokenChange = (listener) => provider.onTokenChange(listener);
56
+ // Badge management
57
+ const setBadge = (count) => provider.setBadge(count);
58
+ const clearBadge = () => provider.clearBadge();
59
+ return {
60
+ permission: { subscribe: permissionStore.subscribe },
61
+ token: { subscribe: tokenStore.subscribe },
62
+ checkPermission,
63
+ requestPermission,
64
+ register,
65
+ unregister,
66
+ onNotificationReceived,
67
+ onNotificationAction,
68
+ onTokenChange,
69
+ setBadge,
70
+ clearBadge,
71
+ };
72
+ }
73
+ //# sourceMappingURL=push.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/stores/push.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAgC,QAAQ,EAAE,MAAM,cAAc,CAAA;AAUrE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEhD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,gBAAgB;IAa9B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAE9B,MAAM,eAAe,GAAsC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACzE,MAAM,UAAU,GAA+B,QAAQ,CAAC,IAAI,CAAC,CAAA;IAE7D,6BAA6B;IAC7B,MAAM,eAAe,GAAG,KAAK,IAA+B,EAAE;QAC5D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,eAAe,EAAE,CAAA;QAC/C,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC3B,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,MAAM,iBAAiB,GAAG,KAAK,IAA+B,EAAE;QAC9D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,iBAAiB,EAAE,CAAA;QACjD,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC3B,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,KAAK,EAAE,OAA6B,EAAsB,EAAE;QAC3E,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAClD,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACzB,OAAO,SAAS,CAAA;IAClB,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,KAAK,IAAmB,EAAE;QAC3C,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAA;QAC3B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC,CAAA;IAED,kBAAkB;IAClB,MAAM,sBAAsB,GAAG,CAAC,QAAsC,EAAgB,EAAE,CACtF,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IAE3C,MAAM,oBAAoB,GAAG,CAAC,QAAoC,EAAgB,EAAE,CAClF,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAA;IAEzC,MAAM,aAAa,GAAG,CAAC,QAA6B,EAAgB,EAAE,CACpE,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IAElC,mBAAmB;IACnB,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAiB,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3E,MAAM,UAAU,GAAG,GAAkB,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAA;IAE7D,OAAO;QACL,UAAU,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,SAAS,EAAuC;QACzF,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAgC;QACxE,eAAe;QACf,iBAAiB;QACjB,QAAQ;QACR,UAAU;QACV,sBAAsB;QACtB,oBAAoB;QACpB,aAAa;QACb,QAAQ;QACR,UAAU;KACX,CAAA;AACH,CAAC"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Svelte stores for routing.
3
+ *
4
+ * @module
5
+ */
6
+ import { type Readable } from 'svelte/store';
7
+ import type { NavigateOptions, QueryParams, RouteLocation, RouteParams, Router } from '@molecule/app-routing';
8
+ /**
9
+ * Router stores and actions.
10
+ */
11
+ interface RouterStores {
12
+ location: Readable<RouteLocation>;
13
+ params: Readable<RouteParams>;
14
+ query: Readable<QueryParams>;
15
+ pathname: Readable<string>;
16
+ navigate: (path: string, options?: NavigateOptions) => void;
17
+ navigateTo: (name: string, routeParams?: RouteParams, query?: QueryParams, options?: NavigateOptions) => void;
18
+ back: () => void;
19
+ forward: () => void;
20
+ isActive: (path: string, exact?: boolean) => boolean;
21
+ }
22
+ /**
23
+ * Create router stores from the router in context.
24
+ *
25
+ * @returns Router stores and actions
26
+ *
27
+ * @example
28
+ * ```svelte
29
+ * <script>
30
+ * import { createRouterStores } from '@molecule/app-svelte'
31
+ *
32
+ * const { location, params, query, navigate, back } = createRouterStores()
33
+ * </script>
34
+ *
35
+ * <nav>
36
+ * <a href="#" on:click|preventDefault={() => navigate('/home')}>Home</a>
37
+ * <span>Current: {$location.pathname}</span>
38
+ * </nav>
39
+ * ```
40
+ */
41
+ export declare function createRouterStores(): RouterStores;
42
+ /**
43
+ * Create a derived store that checks if a path is active.
44
+ *
45
+ * @param location - A readable location store (from createRouterStores or createRouterStoresFromRouter)
46
+ * @param router - Router instance (for isActive check)
47
+ * @param path - Path to check
48
+ * @param exact - Whether to require exact match (default: false)
49
+ * @returns Readable store of whether the path is active
50
+ *
51
+ * @example
52
+ * ```svelte
53
+ * <script>
54
+ * import { createRouterStores, createIsActiveStore } from '@molecule/app-svelte'
55
+ * import { getRouter } from '@molecule/app-svelte'
56
+ *
57
+ * const { location } = createRouterStores()
58
+ * const router = getRouter()
59
+ * const isHomeActive = createIsActiveStore(location, router, '/home', true)
60
+ * </script>
61
+ *
62
+ * <a class:active={$isHomeActive} href="/home">Home</a>
63
+ * ```
64
+ */
65
+ export declare function createIsActiveStore(location: Readable<RouteLocation>, router: Router, path: string, exact?: boolean): Readable<boolean>;
66
+ /**
67
+ * Create router stores from a specific router.
68
+ *
69
+ * @param router - Router instance
70
+ * @returns Router stores and actions
71
+ */
72
+ export declare function createRouterStoresFromRouter(router: Router): RouterStores;
73
+ export {};
74
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/stores/router.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAW,KAAK,QAAQ,EAAY,MAAM,cAAc,CAAA;AAE/D,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,aAAa,EACb,WAAW,EACX,MAAM,EACP,MAAM,uBAAuB,CAAA;AAI9B;;GAEG;AACH,UAAU,YAAY;IACpB,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;IACjC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;IAC7B,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;IAC5B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC1B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,IAAI,CAAA;IAC3D,UAAU,EAAE,CACV,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,WAAW,EACzB,KAAK,CAAC,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE,eAAe,KACtB,IAAI,CAAA;IACT,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAA;CACrD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAyEjD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,EACjC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,UAAQ,GACZ,QAAQ,CAAC,OAAO,CAAC,CAEnB;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAkCzE"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Svelte stores for routing.
3
+ *
4
+ * @module
5
+ */
6
+ import { derived, readable } from 'svelte/store';
7
+ import { getRouter } from '../context.js';
8
+ /**
9
+ * Create router stores from the router in context.
10
+ *
11
+ * @returns Router stores and actions
12
+ *
13
+ * @example
14
+ * ```svelte
15
+ * <script>
16
+ * import { createRouterStores } from '@molecule/app-svelte'
17
+ *
18
+ * const { location, params, query, navigate, back } = createRouterStores()
19
+ * </script>
20
+ *
21
+ * <nav>
22
+ * <a href="#" on:click|preventDefault={() => navigate('/home')}>Home</a>
23
+ * <span>Current: {$location.pathname}</span>
24
+ * </nav>
25
+ * ```
26
+ */
27
+ export function createRouterStores() {
28
+ const router = getRouter();
29
+ // Location store
30
+ const location = readable(router.getLocation(), (set) => {
31
+ return router.subscribe(() => {
32
+ set(router.getLocation());
33
+ });
34
+ });
35
+ // Params store
36
+ const params = readable(router.getParams(), (set) => {
37
+ return router.subscribe(() => {
38
+ set(router.getParams());
39
+ });
40
+ });
41
+ // Query store
42
+ const query = readable(router.getQuery(), (set) => {
43
+ return router.subscribe(() => {
44
+ set(router.getQuery());
45
+ });
46
+ });
47
+ // Derived stores
48
+ const pathname = derived(location, ($loc) => $loc.pathname);
49
+ // Actions
50
+ const navigate = (path, options) => {
51
+ router.navigate(path, options);
52
+ };
53
+ const navigateTo = (name, routeParams, query, options) => {
54
+ router.navigateTo(name, routeParams, query, options);
55
+ };
56
+ const back = () => {
57
+ router.back();
58
+ };
59
+ const forward = () => {
60
+ router.forward();
61
+ };
62
+ const isActive = (path, exact = false) => {
63
+ return router.isActive(path, exact);
64
+ };
65
+ return {
66
+ location,
67
+ params,
68
+ query,
69
+ pathname,
70
+ navigate,
71
+ navigateTo,
72
+ back,
73
+ forward,
74
+ isActive,
75
+ };
76
+ }
77
+ /**
78
+ * Create a derived store that checks if a path is active.
79
+ *
80
+ * @param location - A readable location store (from createRouterStores or createRouterStoresFromRouter)
81
+ * @param router - Router instance (for isActive check)
82
+ * @param path - Path to check
83
+ * @param exact - Whether to require exact match (default: false)
84
+ * @returns Readable store of whether the path is active
85
+ *
86
+ * @example
87
+ * ```svelte
88
+ * <script>
89
+ * import { createRouterStores, createIsActiveStore } from '@molecule/app-svelte'
90
+ * import { getRouter } from '@molecule/app-svelte'
91
+ *
92
+ * const { location } = createRouterStores()
93
+ * const router = getRouter()
94
+ * const isHomeActive = createIsActiveStore(location, router, '/home', true)
95
+ * </script>
96
+ *
97
+ * <a class:active={$isHomeActive} href="/home">Home</a>
98
+ * ```
99
+ */
100
+ export function createIsActiveStore(location, router, path, exact = false) {
101
+ return derived(location, () => router.isActive(path, exact));
102
+ }
103
+ /**
104
+ * Create router stores from a specific router.
105
+ *
106
+ * @param router - Router instance
107
+ * @returns Router stores and actions
108
+ */
109
+ export function createRouterStoresFromRouter(router) {
110
+ const location = readable(router.getLocation(), (set) => {
111
+ return router.subscribe(() => set(router.getLocation()));
112
+ });
113
+ const params = readable(router.getParams(), (set) => {
114
+ return router.subscribe(() => set(router.getParams()));
115
+ });
116
+ const query = readable(router.getQuery(), (set) => {
117
+ return router.subscribe(() => set(router.getQuery()));
118
+ });
119
+ return {
120
+ location,
121
+ params,
122
+ query,
123
+ pathname: derived(location, ($loc) => $loc.pathname),
124
+ navigate: (path, options) => router.navigate(path, options),
125
+ navigateTo: (name, p, q, options) => router.navigateTo(name, p, q, options),
126
+ back: () => router.back(),
127
+ forward: () => router.forward(),
128
+ isActive: (path, exact = false) => router.isActive(path, exact),
129
+ };
130
+ }
131
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/stores/router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Svelte store for registration with async state tracking.
3
+ *
4
+ * @module
5
+ */
6
+ import type { AuthResult } from '@molecule/app-auth';
7
+ import { type PromiseStore } from './promise.js';
8
+ /**
9
+ * Signup store type.
10
+ */
11
+ export type SignupStore<T = unknown> = PromiseStore<AuthResult<T>>;
12
+ /**
13
+ * Creates a signup store with async state tracking.
14
+ *
15
+ * @returns Signup promise store
16
+ */
17
+ export declare function createSignupStore<T = unknown>(): SignupStore<T>;
18
+ //# sourceMappingURL=signup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signup.d.ts","sourceRoot":"","sources":["../../src/stores/signup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,oBAAoB,CAAA;AAGlE,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAEpE;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;AAElE;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,GAAG,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,CAG/D"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Svelte store for registration with async state tracking.
3
+ *
4
+ * @module
5
+ */
6
+ import { getAuthClient } from '../context.js';
7
+ import { createPromiseStore } from './promise.js';
8
+ /**
9
+ * Creates a signup store with async state tracking.
10
+ *
11
+ * @returns Signup promise store
12
+ */
13
+ export function createSignupStore() {
14
+ const client = getAuthClient();
15
+ return createPromiseStore((data) => client.register(data));
16
+ }
17
+ //# sourceMappingURL=signup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signup.js","sourceRoot":"","sources":["../../src/stores/signup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAqB,MAAM,cAAc,CAAA;AAOpE;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,MAAM,GAAG,aAAa,EAAK,CAAA;IACjC,OAAO,kBAAkB,CAAC,CAAC,IAAkB,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;AAC1E,CAAC"}