@sudobility/di 1.4.32 → 1.5.2

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 (94) hide show
  1. package/README.md +255 -39
  2. package/dist/rn/analytics/analytics.rn.d.ts +19 -0
  3. package/dist/rn/analytics/analytics.rn.d.ts.map +1 -0
  4. package/dist/rn/analytics/analytics.rn.js +103 -0
  5. package/dist/rn/analytics/analytics.rn.js.map +1 -0
  6. package/dist/rn/env/env.rn.d.ts +14 -0
  7. package/dist/rn/env/env.rn.d.ts.map +1 -0
  8. package/dist/rn/env/env.rn.js +58 -0
  9. package/dist/rn/env/env.rn.js.map +1 -0
  10. package/dist/rn/firebase/firebase.rn.d.ts +19 -0
  11. package/dist/rn/firebase/firebase.rn.d.ts.map +1 -0
  12. package/dist/rn/firebase/firebase.rn.js +318 -0
  13. package/dist/rn/firebase/firebase.rn.js.map +1 -0
  14. package/dist/rn/index.d.ts +29 -0
  15. package/dist/rn/index.d.ts.map +1 -0
  16. package/dist/rn/index.js +27 -0
  17. package/dist/rn/index.js.map +1 -0
  18. package/dist/rn/logging/logging.rn.d.ts +28 -0
  19. package/dist/rn/logging/logging.rn.d.ts.map +1 -0
  20. package/dist/rn/logging/logging.rn.js +78 -0
  21. package/dist/rn/logging/logging.rn.js.map +1 -0
  22. package/dist/rn/navigation/navigation.rn.d.ts +29 -0
  23. package/dist/rn/navigation/navigation.rn.d.ts.map +1 -0
  24. package/dist/rn/navigation/navigation.rn.js +161 -0
  25. package/dist/rn/navigation/navigation.rn.js.map +1 -0
  26. package/dist/rn/network/network-singleton.d.ts +8 -0
  27. package/dist/rn/network/network-singleton.d.ts.map +1 -0
  28. package/dist/rn/network/network-singleton.js +36 -0
  29. package/dist/rn/network/network-singleton.js.map +1 -0
  30. package/dist/rn/network/network.rn.d.ts +41 -0
  31. package/dist/rn/network/network.rn.d.ts.map +1 -0
  32. package/dist/rn/network/network.rn.js +185 -0
  33. package/dist/rn/network/network.rn.js.map +1 -0
  34. package/dist/rn/notification/notification.rn.d.ts +26 -0
  35. package/dist/rn/notification/notification.rn.d.ts.map +1 -0
  36. package/dist/rn/notification/notification.rn.js +187 -0
  37. package/dist/rn/notification/notification.rn.js.map +1 -0
  38. package/dist/rn/storage/storage-singleton.d.ts +25 -0
  39. package/dist/rn/storage/storage-singleton.d.ts.map +1 -0
  40. package/dist/rn/storage/storage-singleton.js +68 -0
  41. package/dist/rn/storage/storage-singleton.js.map +1 -0
  42. package/dist/rn/storage/storage.rn.d.ts +33 -0
  43. package/dist/rn/storage/storage.rn.d.ts.map +1 -0
  44. package/dist/rn/storage/storage.rn.js +113 -0
  45. package/dist/rn/storage/storage.rn.js.map +1 -0
  46. package/dist/rn/theme/theme.rn.d.ts +31 -0
  47. package/dist/rn/theme/theme.rn.d.ts.map +1 -0
  48. package/dist/rn/theme/theme.rn.js +116 -0
  49. package/dist/rn/theme/theme.rn.js.map +1 -0
  50. package/dist/web/firebase/firebase.interface.d.ts +81 -0
  51. package/dist/web/firebase/firebase.interface.d.ts.map +1 -0
  52. package/dist/web/firebase/firebase.interface.js +2 -0
  53. package/dist/web/firebase/firebase.interface.js.map +1 -0
  54. package/dist/web/firebase/firebase.web.d.ts +22 -0
  55. package/dist/web/firebase/firebase.web.d.ts.map +1 -0
  56. package/dist/web/firebase/firebase.web.js +339 -0
  57. package/dist/web/firebase/firebase.web.js.map +1 -0
  58. package/dist/web/index.d.ts +20 -0
  59. package/dist/web/index.d.ts.map +1 -0
  60. package/dist/web/index.js +18 -0
  61. package/dist/web/index.js.map +1 -0
  62. package/dist/web/navigation/navigation.web.d.ts +34 -0
  63. package/dist/web/navigation/navigation.web.d.ts.map +1 -0
  64. package/dist/web/navigation/navigation.web.js +176 -0
  65. package/dist/web/navigation/navigation.web.js.map +1 -0
  66. package/dist/web/navigation/ui-navigation.d.ts +51 -0
  67. package/dist/web/navigation/ui-navigation.d.ts.map +1 -0
  68. package/dist/web/navigation/ui-navigation.js +2 -0
  69. package/dist/web/navigation/ui-navigation.js.map +1 -0
  70. package/dist/web/network/network-singleton.d.ts +5 -0
  71. package/dist/web/network/network-singleton.d.ts.map +1 -0
  72. package/dist/web/network/network-singleton.js +21 -0
  73. package/dist/web/network/network-singleton.js.map +1 -0
  74. package/dist/web/network/network.web.d.ts +12 -0
  75. package/dist/web/network/network.web.d.ts.map +1 -0
  76. package/dist/web/network/network.web.js +124 -0
  77. package/dist/web/network/network.web.js.map +1 -0
  78. package/dist/web/network/web-network.service.d.ts +24 -0
  79. package/dist/web/network/web-network.service.d.ts.map +1 -0
  80. package/dist/web/network/web-network.service.js +150 -0
  81. package/dist/web/network/web-network.service.js.map +1 -0
  82. package/dist/web/storage/storage-singleton.d.ts +5 -0
  83. package/dist/web/storage/storage-singleton.d.ts.map +1 -0
  84. package/dist/web/storage/storage-singleton.js +19 -0
  85. package/dist/web/storage/storage-singleton.js.map +1 -0
  86. package/dist/web/storage/storage.web.d.ts +22 -0
  87. package/dist/web/storage/storage.web.d.ts.map +1 -0
  88. package/dist/web/storage/storage.web.js +107 -0
  89. package/dist/web/storage/storage.web.js.map +1 -0
  90. package/dist/web/storage/web-storage.service.d.ts +23 -0
  91. package/dist/web/storage/web-storage.service.d.ts.map +1 -0
  92. package/dist/web/storage/web-storage.service.js +137 -0
  93. package/dist/web/storage/web-storage.service.js.map +1 -0
  94. package/package.json +66 -5
@@ -0,0 +1,187 @@
1
+ let notifeeModule = null;
2
+ let AndroidImportanceValue = 4;
3
+ let AuthorizationStatusAuthorized = 1;
4
+ let AuthorizationStatusProvisional = 3;
5
+ function getNotifee() {
6
+ if (!notifeeModule) {
7
+ try {
8
+ const mod = require('@notifee/react-native');
9
+ notifeeModule = mod;
10
+ AndroidImportanceValue = mod.AndroidImportance?.HIGH ?? 4;
11
+ AuthorizationStatusAuthorized = mod.AuthorizationStatus?.AUTHORIZED ?? 1;
12
+ AuthorizationStatusProvisional =
13
+ mod.AuthorizationStatus?.PROVISIONAL ?? 3;
14
+ }
15
+ catch (e) {
16
+ console.warn('Notifee not available:', e);
17
+ }
18
+ }
19
+ return notifeeModule?.default ?? null;
20
+ }
21
+ export class RNNotificationService {
22
+ constructor() {
23
+ this.clickHandler = null;
24
+ this.defaultChannelId = 'default';
25
+ this.channelCreated = false;
26
+ }
27
+ async ensureChannel() {
28
+ if (this.channelCreated)
29
+ return;
30
+ const notifee = getNotifee();
31
+ if (!notifee)
32
+ return;
33
+ this.channelCreated = true;
34
+ try {
35
+ await notifee.createChannel({
36
+ id: this.defaultChannelId,
37
+ name: 'Default Notifications',
38
+ importance: AndroidImportanceValue,
39
+ });
40
+ }
41
+ catch {
42
+ }
43
+ }
44
+ isSupported() {
45
+ return true;
46
+ }
47
+ async showNotification(title, options) {
48
+ const notifee = getNotifee();
49
+ if (!notifee) {
50
+ return { success: false, error: 'Notifications not available' };
51
+ }
52
+ await this.ensureChannel();
53
+ try {
54
+ const notificationConfig = {
55
+ title,
56
+ android: {
57
+ channelId: this.defaultChannelId,
58
+ smallIcon: options?.icon ?? 'ic_notification',
59
+ pressAction: {
60
+ id: 'default',
61
+ },
62
+ },
63
+ ios: {
64
+ sound: 'default',
65
+ },
66
+ };
67
+ if (options?.body) {
68
+ notificationConfig.body = options.body;
69
+ }
70
+ if (options?.data) {
71
+ notificationConfig.data = options.data;
72
+ }
73
+ const notificationId = await notifee.displayNotification(notificationConfig);
74
+ return {
75
+ success: true,
76
+ notificationId,
77
+ };
78
+ }
79
+ catch (error) {
80
+ return {
81
+ success: false,
82
+ error: error instanceof Error ? error.message : 'Unknown error',
83
+ };
84
+ }
85
+ }
86
+ async requestPermission() {
87
+ const notifee = getNotifee();
88
+ if (!notifee) {
89
+ return {
90
+ granted: false,
91
+ permission: 'denied',
92
+ error: 'Notifications not available',
93
+ };
94
+ }
95
+ try {
96
+ const settings = await notifee.requestPermission();
97
+ const granted = settings.authorizationStatus === AuthorizationStatusAuthorized ||
98
+ settings.authorizationStatus === AuthorizationStatusProvisional;
99
+ return {
100
+ granted,
101
+ permission: granted ? 'granted' : 'denied',
102
+ };
103
+ }
104
+ catch (error) {
105
+ return {
106
+ granted: false,
107
+ permission: 'denied',
108
+ error: error instanceof Error ? error.message : 'Unknown error',
109
+ };
110
+ }
111
+ }
112
+ getPermissionStatus() {
113
+ return 'default';
114
+ }
115
+ hasPermission() {
116
+ return true;
117
+ }
118
+ setClickHandler(handler) {
119
+ this.clickHandler = handler;
120
+ }
121
+ getClickHandler() {
122
+ return this.clickHandler;
123
+ }
124
+ getCapabilities() {
125
+ return {
126
+ supportsActions: true,
127
+ supportsIcon: true,
128
+ supportsBadge: true,
129
+ supportsData: true,
130
+ supportsSound: true,
131
+ supportsVibration: true,
132
+ maxActions: 3,
133
+ };
134
+ }
135
+ async closeNotification(notificationId) {
136
+ const notifee = getNotifee();
137
+ if (!notifee)
138
+ return false;
139
+ try {
140
+ await notifee.cancelNotification(notificationId);
141
+ return true;
142
+ }
143
+ catch {
144
+ return false;
145
+ }
146
+ }
147
+ async clearAllNotifications() {
148
+ const notifee = getNotifee();
149
+ if (!notifee)
150
+ return false;
151
+ try {
152
+ await notifee.cancelAllNotifications();
153
+ return true;
154
+ }
155
+ catch {
156
+ return false;
157
+ }
158
+ }
159
+ async getBadgeCount() {
160
+ const notifee = getNotifee();
161
+ if (!notifee)
162
+ return 0;
163
+ return notifee.getBadgeCount();
164
+ }
165
+ async setBadgeCount(count) {
166
+ const notifee = getNotifee();
167
+ if (!notifee)
168
+ return;
169
+ await notifee.setBadgeCount(count);
170
+ }
171
+ }
172
+ let notificationService = null;
173
+ export function getNotificationService() {
174
+ if (!notificationService) {
175
+ notificationService = new RNNotificationService();
176
+ }
177
+ return notificationService;
178
+ }
179
+ export function initializeNotificationService(service) {
180
+ notificationService = service ?? new RNNotificationService();
181
+ return notificationService;
182
+ }
183
+ export function resetNotificationService() {
184
+ notificationService = null;
185
+ }
186
+ export const rnNotificationService = new RNNotificationService();
187
+ //# sourceMappingURL=notification.rn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.rn.js","sourceRoot":"","sources":["../../../src/rn/notification/notification.rn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { StorageService } from '../../storage/storage.js';
2
+ import type { StorageType, Optional } from '@sudobility/types';
3
+ export declare class RNStorageService implements StorageService {
4
+ private storage;
5
+ constructor();
6
+ getItem(key: string): Promise<Optional<string>>;
7
+ setItem(key: string, value: string): Promise<void>;
8
+ removeItem(key: string): Promise<void>;
9
+ clear(): Promise<void>;
10
+ getAllKeys(): Promise<string[]>;
11
+ isAvailable(): boolean;
12
+ getType(): StorageType;
13
+ }
14
+ export declare class RNSerializedStorageService {
15
+ private storage;
16
+ constructor();
17
+ getObject<T>(key: string): Promise<Optional<T>>;
18
+ setObject<T>(key: string, value: T): Promise<void>;
19
+ removeObject(key: string): Promise<void>;
20
+ hasObject(key: string): Promise<boolean>;
21
+ }
22
+ export declare function getStorageService(): RNStorageService;
23
+ export declare function initializeStorageService(service?: RNStorageService): RNStorageService;
24
+ export declare function resetStorageService(): void;
25
+ //# sourceMappingURL=storage-singleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-singleton.d.ts","sourceRoot":"","sources":["../../../src/rn/storage/storage-singleton.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAM/D,qBAAa,gBAAiB,YAAW,cAAc;IACrD,OAAO,CAAC,OAAO,CAAY;;IAMrB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAI/C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIrC,WAAW,IAAI,OAAO;IAKtB,OAAO,IAAI,WAAW;CAGvB;AAKD,qBAAa,0BAA0B;IACrC,OAAO,CAAC,OAAO,CAAY;;IAMrB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAW/C,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAI/C;AAKD,wBAAgB,iBAAiB,IAAI,gBAAgB,CAKpD;AAED,wBAAgB,wBAAwB,CACtC,OAAO,CAAC,EAAE,gBAAgB,GACzB,gBAAgB,CAGlB;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
@@ -0,0 +1,68 @@
1
+ import { RNStorage } from './storage.rn.js';
2
+ export class RNStorageService {
3
+ constructor() {
4
+ this.storage = new RNStorage();
5
+ }
6
+ async getItem(key) {
7
+ return this.storage.getItem(key);
8
+ }
9
+ async setItem(key, value) {
10
+ return this.storage.setItem(key, value);
11
+ }
12
+ async removeItem(key) {
13
+ return this.storage.removeItem(key);
14
+ }
15
+ async clear() {
16
+ return this.storage.clear();
17
+ }
18
+ async getAllKeys() {
19
+ return this.storage.getAllKeys();
20
+ }
21
+ isAvailable() {
22
+ return true;
23
+ }
24
+ getType() {
25
+ return 'asyncStorage';
26
+ }
27
+ }
28
+ export class RNSerializedStorageService {
29
+ constructor() {
30
+ this.storage = new RNStorage();
31
+ }
32
+ async getObject(key) {
33
+ const value = await this.storage.getItem(key);
34
+ if (!value)
35
+ return null;
36
+ try {
37
+ return JSON.parse(value);
38
+ }
39
+ catch {
40
+ return null;
41
+ }
42
+ }
43
+ async setObject(key, value) {
44
+ await this.storage.setItem(key, JSON.stringify(value));
45
+ }
46
+ async removeObject(key) {
47
+ await this.storage.removeItem(key);
48
+ }
49
+ async hasObject(key) {
50
+ const value = await this.storage.getItem(key);
51
+ return value !== null;
52
+ }
53
+ }
54
+ let storageService = null;
55
+ export function getStorageService() {
56
+ if (!storageService) {
57
+ storageService = new RNStorageService();
58
+ }
59
+ return storageService;
60
+ }
61
+ export function initializeStorageService(service) {
62
+ storageService = service ?? new RNStorageService();
63
+ return storageService;
64
+ }
65
+ export function resetStorageService() {
66
+ storageService = null;
67
+ }
68
+ //# sourceMappingURL=storage-singleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-singleton.js","sourceRoot":"","sources":["../../../src/rn/storage/storage-singleton.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAK5C,MAAM,OAAO,gBAAgB;IAG3B;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,SAAS,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,KAAa;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;IACnC,CAAC;IAED,WAAW;QAET,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO,cAA6B,CAAC;IACvC,CAAC;CACF;AAKD,MAAM,OAAO,0BAA0B;IAGrC;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,SAAS,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,SAAS,CAAI,GAAW;QAC5B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAM,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAI,GAAW,EAAE,KAAQ;QACtC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW;QAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAW;QACzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9C,OAAO,KAAK,KAAK,IAAI,CAAC;IACxB,CAAC;CACF;AAGD,IAAI,cAAc,GAA4B,IAAI,CAAC;AAEnD,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,cAAc,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAC1C,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,OAA0B;IAE1B,cAAc,GAAG,OAAO,IAAI,IAAI,gBAAgB,EAAE,CAAC;IACnD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,cAAc,GAAG,IAAI,CAAC;AACxB,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { PlatformStorage, AdvancedPlatformStorage } from '../../storage/storage.js';
2
+ import type { Optional } from '@sudobility/types';
3
+ interface AsyncStorageStatic {
4
+ setItem(key: string, value: string): Promise<void>;
5
+ getItem(key: string): Promise<string | null>;
6
+ removeItem(key: string): Promise<void>;
7
+ clear(): Promise<void>;
8
+ getAllKeys(): Promise<readonly string[]>;
9
+ multiRemove(keys: string[]): Promise<void>;
10
+ }
11
+ export declare function setAsyncStorageModule(storage: AsyncStorageStatic | null): void;
12
+ export declare class RNStorage implements PlatformStorage {
13
+ setItem(key: string, value: string): Promise<void>;
14
+ getItem(key: string): Promise<Optional<string>>;
15
+ removeItem(key: string): Promise<void>;
16
+ clear(): Promise<void>;
17
+ getAllKeys(): Promise<string[]>;
18
+ }
19
+ export declare class AdvancedRNStorage implements AdvancedPlatformStorage {
20
+ private storage;
21
+ constructor();
22
+ setItem(key: string, value: string, ttl?: Optional<number>): Promise<void>;
23
+ getItem(key: string): Promise<Optional<string>>;
24
+ removeItem(key: string): Promise<void>;
25
+ clear(): Promise<void>;
26
+ getAllKeys(): Promise<string[]>;
27
+ hasItem(key: string): Promise<boolean>;
28
+ clearPattern(pattern?: Optional<string>): Promise<void>;
29
+ }
30
+ export declare const rnStorage: RNStorage;
31
+ export declare const advancedRNStorage: AdvancedRNStorage;
32
+ export {};
33
+ //# sourceMappingURL=storage.rn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.rn.d.ts","sourceRoot":"","sources":["../../../src/rn/storage/storage.rn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlD,UAAU,kBAAkB;IAC1B,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,UAAU,IAAI,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IACzC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAMD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,kBAAkB,GAAG,IAAI,GACjC,IAAI,CAEN;AAkBD,qBAAa,SAAU,YAAW,eAAe;IACzC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAO/C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAMtC;AAcD,qBAAa,iBAAkB,YAAW,uBAAuB;IAC/D,OAAO,CAAC,OAAO,CAAY;;IAMrB,OAAO,CACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,GACrB,OAAO,CAAC,IAAI,CAAC;IASV,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAuB/C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI/B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtC,YAAY,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAiB9D;AAGD,eAAO,MAAM,SAAS,WAAkB,CAAC;AACzC,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
@@ -0,0 +1,113 @@
1
+ let AsyncStorageModule = null;
2
+ export function setAsyncStorageModule(storage) {
3
+ AsyncStorageModule = storage;
4
+ }
5
+ function getAsyncStorage() {
6
+ if (!AsyncStorageModule) {
7
+ try {
8
+ const mod = require('@react-native-async-storage/async-storage');
9
+ AsyncStorageModule = mod.default ?? mod;
10
+ }
11
+ catch (e) {
12
+ console.warn('AsyncStorage not available:', e);
13
+ }
14
+ }
15
+ return AsyncStorageModule;
16
+ }
17
+ export class RNStorage {
18
+ async setItem(key, value) {
19
+ const storage = getAsyncStorage();
20
+ if (!storage)
21
+ throw new Error('AsyncStorage not available');
22
+ await storage.setItem(key, value);
23
+ }
24
+ async getItem(key) {
25
+ const storage = getAsyncStorage();
26
+ if (!storage)
27
+ return null;
28
+ const value = await storage.getItem(key);
29
+ return value ?? null;
30
+ }
31
+ async removeItem(key) {
32
+ const storage = getAsyncStorage();
33
+ if (!storage)
34
+ return;
35
+ await storage.removeItem(key);
36
+ }
37
+ async clear() {
38
+ const storage = getAsyncStorage();
39
+ if (!storage)
40
+ return;
41
+ await storage.clear();
42
+ }
43
+ async getAllKeys() {
44
+ const storage = getAsyncStorage();
45
+ if (!storage)
46
+ return [];
47
+ const keys = await storage.getAllKeys();
48
+ return [...keys];
49
+ }
50
+ }
51
+ export class AdvancedRNStorage {
52
+ constructor() {
53
+ this.storage = new RNStorage();
54
+ }
55
+ async setItem(key, value, ttl) {
56
+ const storedValue = {
57
+ value,
58
+ timestamp: Date.now(),
59
+ ttl: ttl ?? undefined,
60
+ };
61
+ await this.storage.setItem(key, JSON.stringify(storedValue));
62
+ }
63
+ async getItem(key) {
64
+ const raw = await this.storage.getItem(key);
65
+ if (!raw)
66
+ return null;
67
+ try {
68
+ const stored = JSON.parse(raw);
69
+ if (stored.ttl !== undefined) {
70
+ const elapsed = Date.now() - stored.timestamp;
71
+ if (elapsed > stored.ttl) {
72
+ await this.removeItem(key);
73
+ return null;
74
+ }
75
+ }
76
+ return stored.value;
77
+ }
78
+ catch {
79
+ return raw;
80
+ }
81
+ }
82
+ async removeItem(key) {
83
+ await this.storage.removeItem(key);
84
+ }
85
+ async clear() {
86
+ await this.storage.clear();
87
+ }
88
+ async getAllKeys() {
89
+ return this.storage.getAllKeys();
90
+ }
91
+ async hasItem(key) {
92
+ const value = await this.getItem(key);
93
+ return value !== null;
94
+ }
95
+ async clearPattern(pattern) {
96
+ if (!pattern) {
97
+ await this.clear();
98
+ return;
99
+ }
100
+ const keys = await this.getAllKeys();
101
+ const regex = new RegExp(pattern);
102
+ const keysToRemove = keys.filter((key) => regex.test(key));
103
+ if (keysToRemove.length > 0) {
104
+ const storage = getAsyncStorage();
105
+ if (storage) {
106
+ await storage.multiRemove(keysToRemove);
107
+ }
108
+ }
109
+ }
110
+ }
111
+ export const rnStorage = new RNStorage();
112
+ export const advancedRNStorage = new AdvancedRNStorage();
113
+ //# sourceMappingURL=storage.rn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.rn.js","sourceRoot":"","sources":["../../../src/rn/storage/storage.rn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { PlatformTheme } from '../../theme/platform-theme.js';
2
+ type ColorSchemeName = import('react-native').ColorSchemeName;
3
+ export type ThemeMode = 'light' | 'dark' | 'system';
4
+ export type FontSize = 'small' | 'medium' | 'large';
5
+ export declare class RNThemeService implements PlatformTheme {
6
+ private currentTheme;
7
+ private currentFontSize;
8
+ private listeners;
9
+ private appearanceListener;
10
+ private initialized;
11
+ constructor();
12
+ private ensureInitialized;
13
+ private initializeAppearanceListener;
14
+ private notifyListeners;
15
+ applyTheme(theme: ThemeMode): void;
16
+ applyFontSize(fontSize: FontSize): void;
17
+ getCurrentTheme(): ThemeMode;
18
+ getResolvedTheme(): 'light' | 'dark';
19
+ getSystemTheme(): ColorSchemeName;
20
+ getCurrentFontSize(): FontSize;
21
+ getFontSizeMultiplier(): number;
22
+ watchSystemTheme(callback: (theme: ThemeMode) => void): () => void;
23
+ isDarkMode(): boolean;
24
+ dispose(): void;
25
+ }
26
+ export declare function getThemeService(): RNThemeService;
27
+ export declare function initializeThemeService(service?: RNThemeService): RNThemeService;
28
+ export declare function resetThemeService(): void;
29
+ export declare const rnThemeService: RNThemeService;
30
+ export {};
31
+ //# sourceMappingURL=theme.rn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.rn.d.ts","sourceRoot":"","sources":["../../../src/rn/theme/theme.rn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAInE,KAAK,eAAe,GAAG,OAAO,cAAc,EAAE,eAAe,CAAC;AAe9D,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AACpD,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAKpD,qBAAa,cAAe,YAAW,aAAa;IAClD,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,kBAAkB,CAAuC;IACjE,OAAO,CAAC,WAAW,CAAkB;;IAMrC,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,4BAA4B;IAWpC,OAAO,CAAC,eAAe;IAQvB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAQlC,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAOvC,eAAe,IAAI,SAAS;IAO5B,gBAAgB,IAAI,OAAO,GAAG,MAAM;IAYpC,cAAc,IAAI,eAAe;IAQjC,kBAAkB,IAAI,QAAQ;IAO9B,qBAAqB,IAAI,MAAM;IAc/B,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,MAAM,IAAI;IAalE,UAAU,IAAI,OAAO;IAOrB,OAAO,IAAI,IAAI;CAOhB;AAKD,wBAAgB,eAAe,IAAI,cAAc,CAKhD;AAED,wBAAgB,sBAAsB,CACpC,OAAO,CAAC,EAAE,cAAc,GACvB,cAAc,CAMhB;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAKxC;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
@@ -0,0 +1,116 @@
1
+ let AppearanceModule = null;
2
+ function getAppearance() {
3
+ if (!AppearanceModule) {
4
+ try {
5
+ const RN = require('react-native');
6
+ AppearanceModule = RN.Appearance;
7
+ }
8
+ catch (e) {
9
+ console.warn('Appearance not available:', e);
10
+ }
11
+ }
12
+ return AppearanceModule;
13
+ }
14
+ export class RNThemeService {
15
+ constructor() {
16
+ this.currentTheme = 'system';
17
+ this.currentFontSize = 'medium';
18
+ this.listeners = new Set();
19
+ this.appearanceListener = null;
20
+ this.initialized = false;
21
+ }
22
+ ensureInitialized() {
23
+ if (this.initialized)
24
+ return;
25
+ this.initialized = true;
26
+ this.initializeAppearanceListener();
27
+ }
28
+ initializeAppearanceListener() {
29
+ const Appearance = getAppearance();
30
+ if (!Appearance)
31
+ return;
32
+ this.appearanceListener = Appearance.addChangeListener(() => {
33
+ if (this.currentTheme === 'system') {
34
+ this.notifyListeners();
35
+ }
36
+ });
37
+ }
38
+ notifyListeners() {
39
+ const resolvedTheme = this.getResolvedTheme();
40
+ this.listeners.forEach((listener) => listener(resolvedTheme));
41
+ }
42
+ applyTheme(theme) {
43
+ this.currentTheme = theme;
44
+ this.notifyListeners();
45
+ }
46
+ applyFontSize(fontSize) {
47
+ this.currentFontSize = fontSize;
48
+ }
49
+ getCurrentTheme() {
50
+ return this.currentTheme;
51
+ }
52
+ getResolvedTheme() {
53
+ if (this.currentTheme === 'system') {
54
+ const Appearance = getAppearance();
55
+ const systemTheme = Appearance?.getColorScheme() ?? 'light';
56
+ return systemTheme === 'dark' ? 'dark' : 'light';
57
+ }
58
+ return this.currentTheme;
59
+ }
60
+ getSystemTheme() {
61
+ const Appearance = getAppearance();
62
+ return Appearance?.getColorScheme() ?? 'light';
63
+ }
64
+ getCurrentFontSize() {
65
+ return this.currentFontSize;
66
+ }
67
+ getFontSizeMultiplier() {
68
+ switch (this.currentFontSize) {
69
+ case 'small':
70
+ return 0.85;
71
+ case 'large':
72
+ return 1.15;
73
+ default:
74
+ return 1.0;
75
+ }
76
+ }
77
+ watchSystemTheme(callback) {
78
+ this.ensureInitialized();
79
+ this.listeners.add(callback);
80
+ return () => {
81
+ this.listeners.delete(callback);
82
+ };
83
+ }
84
+ isDarkMode() {
85
+ return this.getResolvedTheme() === 'dark';
86
+ }
87
+ dispose() {
88
+ if (this.appearanceListener) {
89
+ this.appearanceListener.remove();
90
+ this.appearanceListener = null;
91
+ }
92
+ this.listeners.clear();
93
+ }
94
+ }
95
+ let themeService = null;
96
+ export function getThemeService() {
97
+ if (!themeService) {
98
+ themeService = new RNThemeService();
99
+ }
100
+ return themeService;
101
+ }
102
+ export function initializeThemeService(service) {
103
+ if (themeService) {
104
+ themeService.dispose();
105
+ }
106
+ themeService = service ?? new RNThemeService();
107
+ return themeService;
108
+ }
109
+ export function resetThemeService() {
110
+ if (themeService) {
111
+ themeService.dispose();
112
+ themeService = null;
113
+ }
114
+ }
115
+ export const rnThemeService = new RNThemeService();
116
+ //# sourceMappingURL=theme.rn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.rn.js","sourceRoot":"","sources":["../../../src/rn/theme/theme.rn.ts"],"names":[],"mappings":"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"}