@sudobility/di 1.4.32 → 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 (89) hide show
  1. package/dist/rn/analytics/analytics.rn.d.ts +19 -0
  2. package/dist/rn/analytics/analytics.rn.d.ts.map +1 -0
  3. package/dist/rn/analytics/analytics.rn.js +103 -0
  4. package/dist/rn/analytics/analytics.rn.js.map +1 -0
  5. package/dist/rn/env/env.rn.d.ts +14 -0
  6. package/dist/rn/env/env.rn.d.ts.map +1 -0
  7. package/dist/rn/env/env.rn.js +58 -0
  8. package/dist/rn/env/env.rn.js.map +1 -0
  9. package/dist/rn/index.d.ts +13 -0
  10. package/dist/rn/index.d.ts.map +1 -0
  11. package/dist/rn/index.js +12 -0
  12. package/dist/rn/index.js.map +1 -0
  13. package/dist/rn/logging/logging.rn.d.ts +28 -0
  14. package/dist/rn/logging/logging.rn.d.ts.map +1 -0
  15. package/dist/rn/logging/logging.rn.js +78 -0
  16. package/dist/rn/logging/logging.rn.js.map +1 -0
  17. package/dist/rn/navigation/navigation.rn.d.ts +29 -0
  18. package/dist/rn/navigation/navigation.rn.d.ts.map +1 -0
  19. package/dist/rn/navigation/navigation.rn.js +161 -0
  20. package/dist/rn/navigation/navigation.rn.js.map +1 -0
  21. package/dist/rn/network/network-singleton.d.ts +8 -0
  22. package/dist/rn/network/network-singleton.d.ts.map +1 -0
  23. package/dist/rn/network/network-singleton.js +36 -0
  24. package/dist/rn/network/network-singleton.js.map +1 -0
  25. package/dist/rn/network/network.rn.d.ts +41 -0
  26. package/dist/rn/network/network.rn.d.ts.map +1 -0
  27. package/dist/rn/network/network.rn.js +185 -0
  28. package/dist/rn/network/network.rn.js.map +1 -0
  29. package/dist/rn/notification/notification.rn.d.ts +26 -0
  30. package/dist/rn/notification/notification.rn.d.ts.map +1 -0
  31. package/dist/rn/notification/notification.rn.js +187 -0
  32. package/dist/rn/notification/notification.rn.js.map +1 -0
  33. package/dist/rn/storage/storage-singleton.d.ts +25 -0
  34. package/dist/rn/storage/storage-singleton.d.ts.map +1 -0
  35. package/dist/rn/storage/storage-singleton.js +68 -0
  36. package/dist/rn/storage/storage-singleton.js.map +1 -0
  37. package/dist/rn/storage/storage.rn.d.ts +33 -0
  38. package/dist/rn/storage/storage.rn.d.ts.map +1 -0
  39. package/dist/rn/storage/storage.rn.js +113 -0
  40. package/dist/rn/storage/storage.rn.js.map +1 -0
  41. package/dist/rn/theme/theme.rn.d.ts +31 -0
  42. package/dist/rn/theme/theme.rn.d.ts.map +1 -0
  43. package/dist/rn/theme/theme.rn.js +116 -0
  44. package/dist/rn/theme/theme.rn.js.map +1 -0
  45. package/dist/web/firebase/firebase.interface.d.ts +81 -0
  46. package/dist/web/firebase/firebase.interface.d.ts.map +1 -0
  47. package/dist/web/firebase/firebase.interface.js +2 -0
  48. package/dist/web/firebase/firebase.interface.js.map +1 -0
  49. package/dist/web/firebase/firebase.web.d.ts +19 -0
  50. package/dist/web/firebase/firebase.web.d.ts.map +1 -0
  51. package/dist/web/firebase/firebase.web.js +325 -0
  52. package/dist/web/firebase/firebase.web.js.map +1 -0
  53. package/dist/web/index.d.ts +12 -0
  54. package/dist/web/index.d.ts.map +1 -0
  55. package/dist/web/index.js +10 -0
  56. package/dist/web/index.js.map +1 -0
  57. package/dist/web/navigation/navigation.web.d.ts +34 -0
  58. package/dist/web/navigation/navigation.web.d.ts.map +1 -0
  59. package/dist/web/navigation/navigation.web.js +176 -0
  60. package/dist/web/navigation/navigation.web.js.map +1 -0
  61. package/dist/web/navigation/ui-navigation.d.ts +51 -0
  62. package/dist/web/navigation/ui-navigation.d.ts.map +1 -0
  63. package/dist/web/navigation/ui-navigation.js +2 -0
  64. package/dist/web/navigation/ui-navigation.js.map +1 -0
  65. package/dist/web/network/network-singleton.d.ts +5 -0
  66. package/dist/web/network/network-singleton.d.ts.map +1 -0
  67. package/dist/web/network/network-singleton.js +21 -0
  68. package/dist/web/network/network-singleton.js.map +1 -0
  69. package/dist/web/network/network.web.d.ts +12 -0
  70. package/dist/web/network/network.web.d.ts.map +1 -0
  71. package/dist/web/network/network.web.js +124 -0
  72. package/dist/web/network/network.web.js.map +1 -0
  73. package/dist/web/network/web-network.service.d.ts +24 -0
  74. package/dist/web/network/web-network.service.d.ts.map +1 -0
  75. package/dist/web/network/web-network.service.js +150 -0
  76. package/dist/web/network/web-network.service.js.map +1 -0
  77. package/dist/web/storage/storage-singleton.d.ts +5 -0
  78. package/dist/web/storage/storage-singleton.d.ts.map +1 -0
  79. package/dist/web/storage/storage-singleton.js +19 -0
  80. package/dist/web/storage/storage-singleton.js.map +1 -0
  81. package/dist/web/storage/storage.web.d.ts +22 -0
  82. package/dist/web/storage/storage.web.d.ts.map +1 -0
  83. package/dist/web/storage/storage.web.js +107 -0
  84. package/dist/web/storage/storage.web.js.map +1 -0
  85. package/dist/web/storage/web-storage.service.d.ts +23 -0
  86. package/dist/web/storage/web-storage.service.d.ts.map +1 -0
  87. package/dist/web/storage/web-storage.service.js +137 -0
  88. package/dist/web/storage/web-storage.service.js.map +1 -0
  89. package/package.json +50 -5
@@ -0,0 +1,5 @@
1
+ import type { PlatformNetwork } from '../../network/platform-network.js';
2
+ export declare function initializeNetworkService(): void;
3
+ export declare function getNetworkService(): PlatformNetwork;
4
+ export declare function resetNetworkService(): void;
5
+ //# sourceMappingURL=network-singleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-singleton.d.ts","sourceRoot":"","sources":["../../../src/web/network/network-singleton.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAYzE,wBAAgB,wBAAwB,IAAI,IAAI,CAM/C;AAMD,wBAAgB,iBAAiB,IAAI,eAAe,CAOnD;AAKD,wBAAgB,mBAAmB,IAAI,IAAI,CAK1C"}
@@ -0,0 +1,21 @@
1
+ import { WebNetworkService } from './web-network.service';
2
+ let networkServiceInstance = null;
3
+ export function initializeNetworkService() {
4
+ if (networkServiceInstance) {
5
+ return;
6
+ }
7
+ networkServiceInstance = new WebNetworkService();
8
+ }
9
+ export function getNetworkService() {
10
+ if (!networkServiceInstance) {
11
+ throw new Error('Network service not initialized. Call initializeNetworkService() at app startup.');
12
+ }
13
+ return networkServiceInstance;
14
+ }
15
+ export function resetNetworkService() {
16
+ if (networkServiceInstance && 'destroy' in networkServiceInstance) {
17
+ networkServiceInstance.destroy();
18
+ }
19
+ networkServiceInstance = null;
20
+ }
21
+ //# sourceMappingURL=network-singleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-singleton.js","sourceRoot":"","sources":["../../../src/web/network/network-singleton.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAK1D,IAAI,sBAAsB,GAA2B,IAAI,CAAC;AAM1D,MAAM,UAAU,wBAAwB;IACtC,IAAI,sBAAsB,EAAE,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,sBAAsB,GAAG,IAAI,iBAAiB,EAAE,CAAC;AACnD,CAAC;AAMD,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;IACJ,CAAC;IACD,OAAO,sBAAsB,CAAC;AAChC,CAAC;AAKD,MAAM,UAAU,mBAAmB;IACjC,IAAI,sBAAsB,IAAI,SAAS,IAAI,sBAAsB,EAAE,CAAC;QACjE,sBAA4C,CAAC,OAAO,EAAE,CAAC;IAC1D,CAAC;IACD,sBAAsB,GAAG,IAAI,CAAC;AAChC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { NetworkClient, NetworkResponse, NetworkRequestOptions } from '@sudobility/types';
2
+ export declare class WebNetworkClient implements NetworkClient {
3
+ private defaultTimeout;
4
+ constructor(defaultTimeout?: number);
5
+ request<T = unknown>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>>;
6
+ get<T = unknown>(url: string, options?: Omit<NetworkRequestOptions, 'method' | 'body'>): Promise<NetworkResponse<T>>;
7
+ post<T = unknown>(url: string, body?: string | FormData | Blob | Record<string, unknown>, options?: Omit<NetworkRequestOptions, 'method'>): Promise<NetworkResponse<T>>;
8
+ put<T = unknown>(url: string, body?: string | FormData | Blob | Record<string, unknown>, options?: Omit<NetworkRequestOptions, 'method'>): Promise<NetworkResponse<T>>;
9
+ delete<T = unknown>(url: string, options?: Omit<NetworkRequestOptions, 'method' | 'body'>): Promise<NetworkResponse<T>>;
10
+ }
11
+ export declare const webNetworkClient: WebNetworkClient;
12
+ //# sourceMappingURL=network.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.web.d.ts","sourceRoot":"","sources":["../../../src/web/network/network.web.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,aAAa,EACb,eAAe,EACf,qBAAqB,EAEtB,MAAM,mBAAmB,CAAC;AAM3B,qBAAa,gBAAiB,YAAW,aAAa;IACpD,OAAO,CAAC,cAAc,CAAS;gBAEnB,cAAc,GAAE,MAAc;IAIpC,OAAO,CAAC,CAAC,GAAG,OAAO,EACvB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAuGxB,GAAG,CAAC,CAAC,GAAG,OAAO,EACnB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,qBAAqB,EAAE,QAAQ,GAAG,MAAM,CAAM,GAC3D,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAIxB,IAAI,CAAC,CAAC,GAAG,OAAO,EACpB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzD,OAAO,GAAE,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAM,GAClD,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IA2BxB,GAAG,CAAC,CAAC,GAAG,OAAO,EACnB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzD,OAAO,GAAE,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAM,GAClD,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IA2BxB,MAAM,CAAC,CAAC,GAAG,OAAO,EACtB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,qBAAqB,EAAE,QAAQ,GAAG,MAAM,CAAM,GAC3D,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CAG/B;AAGD,eAAO,MAAM,gBAAgB,kBAAyB,CAAC"}
@@ -0,0 +1,124 @@
1
+ import { NetworkError, } from '@sudobility/types';
2
+ export class WebNetworkClient {
3
+ constructor(defaultTimeout = 10000) {
4
+ this.defaultTimeout = defaultTimeout;
5
+ }
6
+ async request(url, options = {}) {
7
+ const { method = 'GET', headers = {}, body, timeout = this.defaultTimeout, signal, } = options;
8
+ const controller = new AbortController();
9
+ const finalSignal = signal || controller.signal;
10
+ const timeoutId = setTimeout(() => controller.abort(), timeout ?? this.defaultTimeout);
11
+ try {
12
+ const fetchOptions = {
13
+ method: method ?? 'GET',
14
+ signal: finalSignal,
15
+ };
16
+ if (headers) {
17
+ fetchOptions.headers = headers;
18
+ }
19
+ if (body) {
20
+ fetchOptions.body = body;
21
+ }
22
+ const response = await fetch(url, fetchOptions);
23
+ clearTimeout(timeoutId);
24
+ let data;
25
+ const contentType = response.headers.get('content-type') || '';
26
+ if (contentType.includes('application/json')) {
27
+ data = await response.json();
28
+ }
29
+ else if (contentType.includes('text/')) {
30
+ data = (await response.text());
31
+ }
32
+ else {
33
+ data = (await response.blob());
34
+ }
35
+ const responseHeaders = {};
36
+ response.headers.forEach((value, key) => {
37
+ responseHeaders[key] = value;
38
+ });
39
+ const networkResponse = {
40
+ ok: response.ok,
41
+ status: response.status,
42
+ statusText: response.statusText,
43
+ data,
44
+ headers: responseHeaders,
45
+ success: response.ok,
46
+ timestamp: new Date().toISOString(),
47
+ };
48
+ if (!response.ok) {
49
+ let errorMessage = `HTTP ${response.status}: ${response.statusText}`;
50
+ if (data &&
51
+ typeof data === 'object' &&
52
+ 'message' in data &&
53
+ typeof data.message === 'string') {
54
+ errorMessage += ` - ${data.message}`;
55
+ }
56
+ throw new NetworkError(errorMessage, response.status, response.statusText);
57
+ }
58
+ return networkResponse;
59
+ }
60
+ catch (error) {
61
+ clearTimeout(timeoutId);
62
+ if (error instanceof NetworkError) {
63
+ throw error;
64
+ }
65
+ if (error instanceof Error) {
66
+ if (error.name === 'AbortError') {
67
+ throw new NetworkError('Request timeout', 408, 'Request Timeout');
68
+ }
69
+ throw new NetworkError(error.message, 0, 'Network Error');
70
+ }
71
+ throw new NetworkError('Unknown network error', 0, 'Unknown Error');
72
+ }
73
+ }
74
+ async get(url, options = {}) {
75
+ return this.request(url, { ...options, method: 'GET' });
76
+ }
77
+ async post(url, body, options = {}) {
78
+ const requestBody = typeof body === 'object' &&
79
+ body !== null &&
80
+ !(body instanceof FormData) &&
81
+ !(body instanceof Blob)
82
+ ? JSON.stringify(body)
83
+ : body;
84
+ const headers = { ...options.headers };
85
+ if (typeof body === 'object' &&
86
+ body !== null &&
87
+ !(body instanceof FormData) &&
88
+ !(body instanceof Blob)) {
89
+ headers['Content-Type'] = 'application/json';
90
+ }
91
+ return this.request(url, {
92
+ ...options,
93
+ method: 'POST',
94
+ body: requestBody,
95
+ headers,
96
+ });
97
+ }
98
+ async put(url, body, options = {}) {
99
+ const requestBody = typeof body === 'object' &&
100
+ body !== null &&
101
+ !(body instanceof FormData) &&
102
+ !(body instanceof Blob)
103
+ ? JSON.stringify(body)
104
+ : body;
105
+ const headers = { ...options.headers };
106
+ if (typeof body === 'object' &&
107
+ body !== null &&
108
+ !(body instanceof FormData) &&
109
+ !(body instanceof Blob)) {
110
+ headers['Content-Type'] = 'application/json';
111
+ }
112
+ return this.request(url, {
113
+ ...options,
114
+ method: 'PUT',
115
+ body: requestBody,
116
+ headers,
117
+ });
118
+ }
119
+ async delete(url, options = {}) {
120
+ return this.request(url, { ...options, method: 'DELETE' });
121
+ }
122
+ }
123
+ export const webNetworkClient = new WebNetworkClient();
124
+ //# sourceMappingURL=network.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.web.js","sourceRoot":"","sources":["../../../src/web/network/network.web.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { PlatformNetwork } from '../../network/platform-network.js';
2
+ import { ConnectionState, ConnectionType } from '@sudobility/types';
3
+ export declare class WebNetworkService implements PlatformNetwork {
4
+ private status;
5
+ private connectionType;
6
+ private listeners;
7
+ constructor();
8
+ getNetworkStatus(): ConnectionState;
9
+ getConnectionType(): ConnectionType;
10
+ isOnline(): boolean;
11
+ onNetworkStatusChange(callback: (status: ConnectionState) => void): () => void;
12
+ request(url: string, options?: RequestInit): Promise<Response>;
13
+ watchNetworkStatus(callback: (isOnline: boolean) => void): () => void;
14
+ testConnectivity(url?: string): Promise<boolean>;
15
+ private initializeNetworkMonitoring;
16
+ private handleOnlineChange;
17
+ private handleOfflineChange;
18
+ private handleConnectionChange;
19
+ private updateNetworkStatus;
20
+ private detectConnectionType;
21
+ private notifyListeners;
22
+ destroy(): void;
23
+ }
24
+ //# sourceMappingURL=web-network.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-network.service.d.ts","sourceRoot":"","sources":["../../../src/web/network/web-network.service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAyBpE,qBAAa,iBAAkB,YAAW,eAAe;IACvD,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,cAAc,CAA0C;IAChE,OAAO,CAAC,SAAS,CAA6C;;IAO9D,gBAAgB,IAAI,eAAe;IAInC,iBAAiB,IAAI,cAAc;IAInC,QAAQ,IAAI,OAAO;IAKnB,qBAAqB,CACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,GAC1C,MAAM,IAAI;IAaP,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKxE,kBAAkB,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IAS/D,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqBtD,OAAO,CAAC,2BAA2B;IAgBnC,OAAO,CAAC,kBAAkB,CAExB;IAEF,OAAO,CAAC,mBAAmB,CAIzB;IAEF,OAAO,CAAC,sBAAsB,CAE5B;IAEF,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,oBAAoB;IA+B5B,OAAO,CAAC,eAAe;IAWvB,OAAO,IAAI,IAAI;CAehB"}
@@ -0,0 +1,150 @@
1
+ import { ConnectionState, ConnectionType } from '@sudobility/types';
2
+ export class WebNetworkService {
3
+ constructor() {
4
+ this.status = ConnectionState.UNKNOWN;
5
+ this.connectionType = ConnectionType.UNKNOWN;
6
+ this.listeners = [];
7
+ this.handleOnlineChange = () => {
8
+ this.updateNetworkStatus();
9
+ };
10
+ this.handleOfflineChange = () => {
11
+ this.status = ConnectionState.DISCONNECTED;
12
+ this.connectionType = ConnectionType.NONE;
13
+ this.notifyListeners();
14
+ };
15
+ this.handleConnectionChange = () => {
16
+ this.updateNetworkStatus();
17
+ };
18
+ this.initializeNetworkMonitoring();
19
+ this.updateNetworkStatus();
20
+ }
21
+ getNetworkStatus() {
22
+ return this.status;
23
+ }
24
+ getConnectionType() {
25
+ return this.connectionType;
26
+ }
27
+ isOnline() {
28
+ const online = this.status === ConnectionState.CONNECTED;
29
+ return online;
30
+ }
31
+ onNetworkStatusChange(callback) {
32
+ this.listeners.push(callback);
33
+ return () => {
34
+ const index = this.listeners.indexOf(callback);
35
+ if (index > -1) {
36
+ this.listeners.splice(index, 1);
37
+ }
38
+ };
39
+ }
40
+ async request(url, options = {}) {
41
+ return fetch(url, options);
42
+ }
43
+ watchNetworkStatus(callback) {
44
+ const networkCallback = (status) => {
45
+ const online = status === ConnectionState.CONNECTED;
46
+ callback(online);
47
+ };
48
+ return this.onNetworkStatusChange(networkCallback);
49
+ }
50
+ async testConnectivity(url) {
51
+ const testUrl = url || 'https://httpbin.org/status/200';
52
+ try {
53
+ const controller = new AbortController();
54
+ const timeoutId = setTimeout(() => controller.abort(), 5000);
55
+ await fetch(testUrl, {
56
+ method: 'HEAD',
57
+ mode: 'no-cors',
58
+ signal: controller.signal,
59
+ });
60
+ clearTimeout(timeoutId);
61
+ return true;
62
+ }
63
+ catch (error) {
64
+ console.error('Error checking connectivity:', error);
65
+ return false;
66
+ }
67
+ }
68
+ initializeNetworkMonitoring() {
69
+ if (typeof window === 'undefined')
70
+ return;
71
+ window.addEventListener('online', this.handleOnlineChange);
72
+ window.addEventListener('offline', this.handleOfflineChange);
73
+ if ('connection' in navigator) {
74
+ const connection = navigator.connection;
75
+ if (connection) {
76
+ connection.addEventListener('change', this.handleConnectionChange);
77
+ }
78
+ }
79
+ }
80
+ updateNetworkStatus() {
81
+ if (typeof window === 'undefined') {
82
+ this.status = ConnectionState.UNKNOWN;
83
+ this.connectionType = ConnectionType.UNKNOWN;
84
+ return;
85
+ }
86
+ if (!navigator.onLine) {
87
+ this.status = ConnectionState.DISCONNECTED;
88
+ this.connectionType = ConnectionType.NONE;
89
+ this.notifyListeners();
90
+ return;
91
+ }
92
+ this.connectionType = this.detectConnectionType();
93
+ if (this.connectionType === ConnectionType.NONE) {
94
+ this.status = ConnectionState.DISCONNECTED;
95
+ }
96
+ else {
97
+ this.status = ConnectionState.CONNECTED;
98
+ }
99
+ this.notifyListeners();
100
+ }
101
+ detectConnectionType() {
102
+ if (typeof window === 'undefined' || !navigator.onLine) {
103
+ return ConnectionType.NONE;
104
+ }
105
+ if ('connection' in navigator) {
106
+ const connection = navigator.connection;
107
+ if (connection && connection.effectiveType) {
108
+ switch (connection.effectiveType) {
109
+ case 'slow-2g':
110
+ case '2g':
111
+ return ConnectionType.CELLULAR_2G;
112
+ case '3g':
113
+ return ConnectionType.CELLULAR_3G;
114
+ case '4g':
115
+ return ConnectionType.CELLULAR_4G;
116
+ default:
117
+ if (connection.type === 'cellular') {
118
+ return ConnectionType.CELLULAR_4G;
119
+ }
120
+ return ConnectionType.WIFI;
121
+ }
122
+ }
123
+ }
124
+ return ConnectionType.WIFI;
125
+ }
126
+ notifyListeners() {
127
+ this.listeners.forEach((callback) => {
128
+ try {
129
+ callback(this.status);
130
+ }
131
+ catch (error) {
132
+ console.error('Error notifying network status listener:', error);
133
+ }
134
+ });
135
+ }
136
+ destroy() {
137
+ if (typeof window !== 'undefined') {
138
+ window.removeEventListener('online', this.handleOnlineChange);
139
+ window.removeEventListener('offline', this.handleOfflineChange);
140
+ if ('connection' in navigator) {
141
+ const connection = navigator.connection;
142
+ if (connection) {
143
+ connection.removeEventListener('change', this.handleConnectionChange);
144
+ }
145
+ }
146
+ }
147
+ this.listeners = [];
148
+ }
149
+ }
150
+ //# sourceMappingURL=web-network.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-network.service.js","sourceRoot":"","sources":["../../../src/web/network/web-network.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { StorageService } from '../../storage/storage.js';
2
+ export declare function initializeStorageService(): void;
3
+ export declare function getStorageService(): StorageService;
4
+ export declare function resetStorageService(): void;
5
+ //# sourceMappingURL=storage-singleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-singleton.d.ts","sourceRoot":"","sources":["../../../src/web/storage/storage-singleton.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAa/D,wBAAgB,wBAAwB,IAAI,IAAI,CAM/C;AAMD,wBAAgB,iBAAiB,IAAI,cAAc,CAOlD;AAKD,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
@@ -0,0 +1,19 @@
1
+ import { WebStorageService } from './web-storage.service';
2
+ import { StorageType } from '@sudobility/types';
3
+ let storageServiceInstance = null;
4
+ export function initializeStorageService() {
5
+ if (storageServiceInstance) {
6
+ return;
7
+ }
8
+ storageServiceInstance = new WebStorageService(StorageType.SESSION_STORAGE);
9
+ }
10
+ export function getStorageService() {
11
+ if (!storageServiceInstance) {
12
+ throw new Error('Storage service not initialized. Call initializeStorageService() at app startup.');
13
+ }
14
+ return storageServiceInstance;
15
+ }
16
+ export function resetStorageService() {
17
+ storageServiceInstance = null;
18
+ }
19
+ //# sourceMappingURL=storage-singleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-singleton.js","sourceRoot":"","sources":["../../../src/web/storage/storage-singleton.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKhD,IAAI,sBAAsB,GAA0B,IAAI,CAAC;AAMzD,MAAM,UAAU,wBAAwB;IACtC,IAAI,sBAAsB,EAAE,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,sBAAsB,GAAG,IAAI,iBAAiB,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;AAC9E,CAAC;AAMD,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;IACJ,CAAC;IACD,OAAO,sBAAsB,CAAC;AAChC,CAAC;AAKD,MAAM,UAAU,mBAAmB;IACjC,sBAAsB,GAAG,IAAI,CAAC;AAChC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { PlatformStorage, AdvancedPlatformStorage } from '../../storage/storage.js';
2
+ export declare class WebStorage implements PlatformStorage {
3
+ setItem(key: string, value: string): void;
4
+ getItem(key: string): string | null;
5
+ removeItem(key: string): void;
6
+ clear(): void;
7
+ getAllKeys(): string[];
8
+ }
9
+ export declare class AdvancedWebStorage implements AdvancedPlatformStorage {
10
+ private storage;
11
+ constructor();
12
+ setItem(key: string, value: string, ttl?: number): void;
13
+ getItem(key: string): string | null;
14
+ removeItem(key: string): void;
15
+ clear(): void;
16
+ getAllKeys(): string[];
17
+ hasItem(key: string): boolean;
18
+ clearPattern(pattern?: string): void;
19
+ }
20
+ export declare const webStorage: WebStorage;
21
+ export declare const advancedWebStorage: AdvancedWebStorage;
22
+ //# sourceMappingURL=storage.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.web.d.ts","sourceRoot":"","sources":["../../../src/web/storage/storage.web.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACxB,MAAM,0BAA0B,CAAC;AAMlC,qBAAa,UAAW,YAAW,eAAe;IAChD,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQzC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IASnC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQ7B,KAAK,IAAI,IAAI;IAQb,UAAU,IAAI,MAAM,EAAE;CAavB;AAKD,qBAAa,kBAAmB,YAAW,uBAAuB;IAChE,OAAO,CAAC,OAAO,CAAa;;IAM5B,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IASvD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAoBnC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7B,KAAK,IAAI,IAAI;IAIb,UAAU,IAAI,MAAM,EAAE;IAItB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI7B,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;CAarC;AAGD,eAAO,MAAM,UAAU,YAAmB,CAAC;AAC3C,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
@@ -0,0 +1,107 @@
1
+ export class WebStorage {
2
+ setItem(key, value) {
3
+ try {
4
+ sessionStorage.setItem(key, value);
5
+ }
6
+ catch (error) {
7
+ console.error(`Failed to store ${key}:`, error);
8
+ }
9
+ }
10
+ getItem(key) {
11
+ try {
12
+ return sessionStorage.getItem(key);
13
+ }
14
+ catch (error) {
15
+ console.error(`Failed to retrieve ${key}:`, error);
16
+ return null;
17
+ }
18
+ }
19
+ removeItem(key) {
20
+ try {
21
+ sessionStorage.removeItem(key);
22
+ }
23
+ catch (error) {
24
+ console.error(`Failed to remove ${key}:`, error);
25
+ }
26
+ }
27
+ clear() {
28
+ try {
29
+ sessionStorage.clear();
30
+ }
31
+ catch (error) {
32
+ console.error('Failed to clear storage:', error);
33
+ }
34
+ }
35
+ getAllKeys() {
36
+ try {
37
+ const keys = [];
38
+ for (let i = 0; i < sessionStorage.length; i++) {
39
+ const key = sessionStorage.key(i);
40
+ if (key)
41
+ keys.push(key);
42
+ }
43
+ return keys;
44
+ }
45
+ catch (error) {
46
+ console.error('Failed to get all keys:', error);
47
+ return [];
48
+ }
49
+ }
50
+ }
51
+ export class AdvancedWebStorage {
52
+ constructor() {
53
+ this.storage = new WebStorage();
54
+ }
55
+ setItem(key, value, ttl) {
56
+ const item = {
57
+ value,
58
+ timestamp: Date.now(),
59
+ ttl,
60
+ };
61
+ this.storage.setItem(key, JSON.stringify(item));
62
+ }
63
+ getItem(key) {
64
+ try {
65
+ const itemStr = this.storage.getItem(key);
66
+ if (!itemStr)
67
+ return null;
68
+ const item = JSON.parse(itemStr);
69
+ if (item.ttl && Date.now() - item.timestamp > item.ttl) {
70
+ this.removeItem(key);
71
+ return null;
72
+ }
73
+ return item.value;
74
+ }
75
+ catch (error) {
76
+ console.error(`Failed to parse stored item ${key}:`, error);
77
+ return null;
78
+ }
79
+ }
80
+ removeItem(key) {
81
+ this.storage.removeItem(key);
82
+ }
83
+ clear() {
84
+ this.storage.clear();
85
+ }
86
+ getAllKeys() {
87
+ return this.storage.getAllKeys();
88
+ }
89
+ hasItem(key) {
90
+ return this.storage.getItem(key) !== null;
91
+ }
92
+ clearPattern(pattern) {
93
+ if (!pattern) {
94
+ this.clear();
95
+ return;
96
+ }
97
+ const keys = this.getAllKeys();
98
+ keys.forEach((key) => {
99
+ if (key.includes(pattern)) {
100
+ this.removeItem(key);
101
+ }
102
+ });
103
+ }
104
+ }
105
+ export const webStorage = new WebStorage();
106
+ export const advancedWebStorage = new AdvancedWebStorage();
107
+ //# sourceMappingURL=storage.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.web.js","sourceRoot":"","sources":["../../../src/web/storage/storage.web.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { PlatformStorage, StorageService } from '../../storage/storage.js';
2
+ import { StorageType } from '@sudobility/types';
3
+ export declare class WebStorageService implements PlatformStorage, StorageService {
4
+ private storageType;
5
+ constructor(storageType?: StorageType);
6
+ private getStorage;
7
+ getItem(key: string): string | null;
8
+ setItem(key: string, value: string): void;
9
+ removeItem(key: string): void;
10
+ clear(): void;
11
+ getAllKeys(): string[];
12
+ isAvailable(): boolean;
13
+ getType(): StorageType;
14
+ }
15
+ export declare class WebSerializedStorageService {
16
+ private storage;
17
+ constructor(storage: WebStorageService);
18
+ getObject<T>(key: string): T | null;
19
+ setObject<T>(key: string, value: T): void;
20
+ removeObject(key: string): void;
21
+ hasObject(key: string): boolean;
22
+ }
23
+ //# sourceMappingURL=web-storage.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-storage.service.d.ts","sourceRoot":"","sources":["../../../src/web/storage/web-storage.service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,qBAAa,iBAAkB,YAAW,eAAe,EAAE,cAAc;IAC3D,OAAO,CAAC,WAAW;gBAAX,WAAW,GAAE,WAAuC;IAExE,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IASnC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQzC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQ7B,KAAK,IAAI,IAAI;IAQb,UAAU,IAAI,MAAM,EAAE;IActB,WAAW,IAAI,OAAO;IAYtB,OAAO,IAAI,WAAW;CAGvB;AAqCD,qBAAa,2BAA2B;IAC1B,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,iBAAiB;IAE9C,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAWnC,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IASzC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI/B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAGhC"}