@sudobility/di 1.4.30 → 1.5.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 (133) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/mocks/analytics.mock.d.ts +62 -0
  6. package/dist/mocks/analytics.mock.d.ts.map +1 -0
  7. package/dist/mocks/analytics.mock.js +127 -0
  8. package/dist/mocks/analytics.mock.js.map +1 -0
  9. package/dist/mocks/env.mock.d.ts +38 -0
  10. package/dist/mocks/env.mock.d.ts.map +1 -0
  11. package/dist/mocks/env.mock.js +104 -0
  12. package/dist/mocks/env.mock.js.map +1 -0
  13. package/dist/mocks/index.d.ts +9 -0
  14. package/dist/mocks/index.d.ts.map +1 -0
  15. package/dist/mocks/index.js +9 -0
  16. package/dist/mocks/index.js.map +1 -0
  17. package/dist/mocks/logging.mock.d.ts +35 -0
  18. package/dist/mocks/logging.mock.d.ts.map +1 -0
  19. package/dist/mocks/logging.mock.js +78 -0
  20. package/dist/mocks/logging.mock.js.map +1 -0
  21. package/dist/mocks/navigation.mock.d.ts +77 -0
  22. package/dist/mocks/navigation.mock.d.ts.map +1 -0
  23. package/dist/mocks/navigation.mock.js +277 -0
  24. package/dist/mocks/navigation.mock.js.map +1 -0
  25. package/dist/mocks/network.mock.d.ts +36 -0
  26. package/dist/mocks/network.mock.d.ts.map +1 -0
  27. package/dist/mocks/network.mock.js +76 -0
  28. package/dist/mocks/network.mock.js.map +1 -0
  29. package/dist/mocks/notification.mock.d.ts +77 -0
  30. package/dist/mocks/notification.mock.d.ts.map +1 -0
  31. package/dist/mocks/notification.mock.js +210 -0
  32. package/dist/mocks/notification.mock.js.map +1 -0
  33. package/dist/mocks/storage.mock.d.ts +74 -0
  34. package/dist/mocks/storage.mock.d.ts.map +1 -0
  35. package/dist/mocks/storage.mock.js +241 -0
  36. package/dist/mocks/storage.mock.js.map +1 -0
  37. package/dist/mocks/theme.mock.d.ts +26 -0
  38. package/dist/mocks/theme.mock.d.ts.map +1 -0
  39. package/dist/mocks/theme.mock.js +65 -0
  40. package/dist/mocks/theme.mock.js.map +1 -0
  41. package/dist/navigation/navigation.d.ts +7 -1
  42. package/dist/navigation/navigation.d.ts.map +1 -1
  43. package/dist/network/platform-network.d.ts +15 -0
  44. package/dist/network/platform-network.d.ts.map +1 -1
  45. package/dist/rn/analytics/analytics.rn.d.ts +19 -0
  46. package/dist/rn/analytics/analytics.rn.d.ts.map +1 -0
  47. package/dist/rn/analytics/analytics.rn.js +103 -0
  48. package/dist/rn/analytics/analytics.rn.js.map +1 -0
  49. package/dist/rn/env/env.rn.d.ts +14 -0
  50. package/dist/rn/env/env.rn.d.ts.map +1 -0
  51. package/dist/rn/env/env.rn.js +58 -0
  52. package/dist/rn/env/env.rn.js.map +1 -0
  53. package/dist/rn/index.d.ts +13 -0
  54. package/dist/rn/index.d.ts.map +1 -0
  55. package/dist/rn/index.js +12 -0
  56. package/dist/rn/index.js.map +1 -0
  57. package/dist/rn/logging/logging.rn.d.ts +28 -0
  58. package/dist/rn/logging/logging.rn.d.ts.map +1 -0
  59. package/dist/rn/logging/logging.rn.js +78 -0
  60. package/dist/rn/logging/logging.rn.js.map +1 -0
  61. package/dist/rn/navigation/navigation.rn.d.ts +29 -0
  62. package/dist/rn/navigation/navigation.rn.d.ts.map +1 -0
  63. package/dist/rn/navigation/navigation.rn.js +161 -0
  64. package/dist/rn/navigation/navigation.rn.js.map +1 -0
  65. package/dist/rn/network/network-singleton.d.ts +8 -0
  66. package/dist/rn/network/network-singleton.d.ts.map +1 -0
  67. package/dist/rn/network/network-singleton.js +36 -0
  68. package/dist/rn/network/network-singleton.js.map +1 -0
  69. package/dist/rn/network/network.rn.d.ts +41 -0
  70. package/dist/rn/network/network.rn.d.ts.map +1 -0
  71. package/dist/rn/network/network.rn.js +185 -0
  72. package/dist/rn/network/network.rn.js.map +1 -0
  73. package/dist/rn/notification/notification.rn.d.ts +26 -0
  74. package/dist/rn/notification/notification.rn.d.ts.map +1 -0
  75. package/dist/rn/notification/notification.rn.js +187 -0
  76. package/dist/rn/notification/notification.rn.js.map +1 -0
  77. package/dist/rn/storage/storage-singleton.d.ts +25 -0
  78. package/dist/rn/storage/storage-singleton.d.ts.map +1 -0
  79. package/dist/rn/storage/storage-singleton.js +68 -0
  80. package/dist/rn/storage/storage-singleton.js.map +1 -0
  81. package/dist/rn/storage/storage.rn.d.ts +33 -0
  82. package/dist/rn/storage/storage.rn.d.ts.map +1 -0
  83. package/dist/rn/storage/storage.rn.js +113 -0
  84. package/dist/rn/storage/storage.rn.js.map +1 -0
  85. package/dist/rn/theme/theme.rn.d.ts +31 -0
  86. package/dist/rn/theme/theme.rn.d.ts.map +1 -0
  87. package/dist/rn/theme/theme.rn.js +116 -0
  88. package/dist/rn/theme/theme.rn.js.map +1 -0
  89. package/dist/web/firebase/firebase.interface.d.ts +81 -0
  90. package/dist/web/firebase/firebase.interface.d.ts.map +1 -0
  91. package/dist/web/firebase/firebase.interface.js +2 -0
  92. package/dist/web/firebase/firebase.interface.js.map +1 -0
  93. package/dist/web/firebase/firebase.web.d.ts +19 -0
  94. package/dist/web/firebase/firebase.web.d.ts.map +1 -0
  95. package/dist/web/firebase/firebase.web.js +325 -0
  96. package/dist/web/firebase/firebase.web.js.map +1 -0
  97. package/dist/web/index.d.ts +12 -0
  98. package/dist/web/index.d.ts.map +1 -0
  99. package/dist/web/index.js +10 -0
  100. package/dist/web/index.js.map +1 -0
  101. package/dist/web/navigation/navigation.web.d.ts +34 -0
  102. package/dist/web/navigation/navigation.web.d.ts.map +1 -0
  103. package/dist/web/navigation/navigation.web.js +176 -0
  104. package/dist/web/navigation/navigation.web.js.map +1 -0
  105. package/dist/web/navigation/ui-navigation.d.ts +51 -0
  106. package/dist/web/navigation/ui-navigation.d.ts.map +1 -0
  107. package/dist/web/navigation/ui-navigation.js +2 -0
  108. package/dist/web/navigation/ui-navigation.js.map +1 -0
  109. package/dist/web/network/network-singleton.d.ts +5 -0
  110. package/dist/web/network/network-singleton.d.ts.map +1 -0
  111. package/dist/web/network/network-singleton.js +21 -0
  112. package/dist/web/network/network-singleton.js.map +1 -0
  113. package/dist/web/network/network.web.d.ts +12 -0
  114. package/dist/web/network/network.web.d.ts.map +1 -0
  115. package/dist/web/network/network.web.js +124 -0
  116. package/dist/web/network/network.web.js.map +1 -0
  117. package/dist/web/network/web-network.service.d.ts +24 -0
  118. package/dist/web/network/web-network.service.d.ts.map +1 -0
  119. package/dist/web/network/web-network.service.js +150 -0
  120. package/dist/web/network/web-network.service.js.map +1 -0
  121. package/dist/web/storage/storage-singleton.d.ts +5 -0
  122. package/dist/web/storage/storage-singleton.d.ts.map +1 -0
  123. package/dist/web/storage/storage-singleton.js +19 -0
  124. package/dist/web/storage/storage-singleton.js.map +1 -0
  125. package/dist/web/storage/storage.web.d.ts +22 -0
  126. package/dist/web/storage/storage.web.d.ts.map +1 -0
  127. package/dist/web/storage/storage.web.js +107 -0
  128. package/dist/web/storage/storage.web.js.map +1 -0
  129. package/dist/web/storage/web-storage.service.d.ts +23 -0
  130. package/dist/web/storage/web-storage.service.d.ts.map +1 -0
  131. package/dist/web/storage/web-storage.service.js +137 -0
  132. package/dist/web/storage/web-storage.service.js.map +1 -0
  133. package/package.json +51 -6
@@ -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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"}
@@ -0,0 +1,81 @@
1
+ export interface AnalyticsEvent {
2
+ name: string;
3
+ parameters?: Record<string, unknown>;
4
+ }
5
+ export interface AnalyticsService {
6
+ logEvent(eventName: string, parameters?: Record<string, unknown>): void;
7
+ setUserProperties(properties: Record<string, string>): void;
8
+ setUserId(userId: string): void;
9
+ isSupported(): boolean;
10
+ }
11
+ export interface RemoteConfigValue {
12
+ asBoolean(): boolean;
13
+ asString(): string;
14
+ asNumber(): number;
15
+ getSource(): 'static' | 'default' | 'remote';
16
+ }
17
+ export interface RemoteConfigService {
18
+ fetchAndActivate(): Promise<boolean>;
19
+ getValue(key: string): RemoteConfigValue;
20
+ getAll(): Record<string, RemoteConfigValue>;
21
+ isSupported(): boolean;
22
+ }
23
+ export interface FCMNotificationPayload {
24
+ title?: string;
25
+ body?: string;
26
+ icon?: string;
27
+ badge?: string;
28
+ image?: string;
29
+ tag?: string;
30
+ requireInteraction?: boolean;
31
+ }
32
+ export interface FCMDataPayload {
33
+ [key: string]: string;
34
+ }
35
+ export interface FCMMessage {
36
+ notification?: FCMNotificationPayload;
37
+ data?: FCMDataPayload;
38
+ messageId?: string;
39
+ from?: string;
40
+ collapseKey?: string;
41
+ }
42
+ export interface FCMPermissionState {
43
+ status: 'granted' | 'denied' | 'default';
44
+ token: string | null;
45
+ }
46
+ export interface FCMState {
47
+ isSupported: boolean;
48
+ permission: FCMPermissionState;
49
+ }
50
+ export interface FCMService {
51
+ requestPermission(): Promise<boolean>;
52
+ getToken(): Promise<string | null>;
53
+ deleteToken(): Promise<boolean>;
54
+ onMessage(callback: (message: FCMMessage) => void): () => void;
55
+ isSupported(): boolean;
56
+ getPermissionStatus(): FCMPermissionState;
57
+ }
58
+ export interface FirebaseService {
59
+ analytics: AnalyticsService;
60
+ remoteConfig: RemoteConfigService;
61
+ messaging: FCMService;
62
+ isConfigured(): boolean;
63
+ isDevelopment(): boolean;
64
+ }
65
+ export interface FirebaseConfig {
66
+ apiKey: string;
67
+ authDomain: string;
68
+ projectId: string;
69
+ storageBucket: string;
70
+ messagingSenderId: string;
71
+ appId: string;
72
+ measurementId?: string;
73
+ vapidKey?: string;
74
+ }
75
+ export interface FirebaseInitOptions {
76
+ enableAnalytics?: boolean;
77
+ enableRemoteConfig?: boolean;
78
+ enableMessaging?: boolean;
79
+ enableDevelopmentMode?: boolean;
80
+ }
81
+ //# sourceMappingURL=firebase.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firebase.interface.d.ts","sourceRoot":"","sources":["../../../src/web/firebase/firebase.interface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=firebase.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firebase.interface.js","sourceRoot":"","sources":["../../../src/web/firebase/firebase.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import { FirebaseService, AnalyticsService, RemoteConfigService, FCMService, FirebaseConfig, FirebaseInitOptions } from './firebase.interface';
2
+ export declare class WebFirebaseService implements FirebaseService {
3
+ analytics: AnalyticsService;
4
+ remoteConfig: RemoteConfigService;
5
+ messaging: FCMService;
6
+ private app;
7
+ private config;
8
+ private options;
9
+ private configured;
10
+ constructor(config: FirebaseConfig, options?: FirebaseInitOptions);
11
+ private initializeFirebase;
12
+ private initializeAnalytics;
13
+ private initializeRemoteConfig;
14
+ private initializeMessaging;
15
+ isConfigured(): boolean;
16
+ isDevelopment(): boolean;
17
+ }
18
+ export declare function createWebFirebaseService(config: FirebaseConfig, options?: FirebaseInitOptions): FirebaseService;
19
+ //# sourceMappingURL=firebase.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firebase.web.d.ts","sourceRoot":"","sources":["../../../src/web/firebase/firebase.web.ts"],"names":[],"mappings":"AA8BA,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,mBAAmB,EAIpB,MAAM,sBAAsB,CAAC;AAwO9B,qBAAa,kBAAmB,YAAW,eAAe;IACjD,SAAS,EAAE,gBAAgB,CAAC;IAC5B,YAAY,EAAE,mBAAmB,CAAC;IAClC,SAAS,EAAE,UAAU,CAAC;IAE7B,OAAO,CAAC,GAAG,CAA4B;IACvC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,UAAU,CAAkB;gBAExB,MAAM,EAAE,cAAc,EAAE,OAAO,GAAE,mBAAwB;IAsBrE,OAAO,CAAC,kBAAkB;IAgC1B,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,sBAAsB;YAahB,mBAAmB;IAoCjC,YAAY,IAAI,OAAO;IAIvB,aAAa,IAAI,OAAO;CAGzB;AAKD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,eAAe,CAEjB"}