@sudobility/di_web 0.1.1

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 (46) hide show
  1. package/README.md +52 -0
  2. package/dist/firebase/firebase.interface.d.ts +81 -0
  3. package/dist/firebase/firebase.interface.d.ts.map +1 -0
  4. package/dist/firebase/firebase.interface.js +2 -0
  5. package/dist/firebase/firebase.interface.js.map +1 -0
  6. package/dist/firebase/firebase.web.d.ts +19 -0
  7. package/dist/firebase/firebase.web.d.ts.map +1 -0
  8. package/dist/firebase/firebase.web.js +322 -0
  9. package/dist/firebase/firebase.web.js.map +1 -0
  10. package/dist/index.d.ts +11 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +11 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/navigation/navigation.web.d.ts +34 -0
  15. package/dist/navigation/navigation.web.d.ts.map +1 -0
  16. package/dist/navigation/navigation.web.js +176 -0
  17. package/dist/navigation/navigation.web.js.map +1 -0
  18. package/dist/network/network.web.d.ts +12 -0
  19. package/dist/network/network.web.d.ts.map +1 -0
  20. package/dist/network/network.web.js +124 -0
  21. package/dist/network/network.web.js.map +1 -0
  22. package/dist/network-singleton.d.ts +5 -0
  23. package/dist/network-singleton.d.ts.map +1 -0
  24. package/dist/network-singleton.js +21 -0
  25. package/dist/network-singleton.js.map +1 -0
  26. package/dist/storage/storage-singleton.d.ts +5 -0
  27. package/dist/storage/storage-singleton.d.ts.map +1 -0
  28. package/dist/storage/storage-singleton.js +19 -0
  29. package/dist/storage/storage-singleton.js.map +1 -0
  30. package/dist/storage/storage.web.d.ts +22 -0
  31. package/dist/storage/storage.web.d.ts.map +1 -0
  32. package/dist/storage/storage.web.js +107 -0
  33. package/dist/storage/storage.web.js.map +1 -0
  34. package/dist/storage/web-storage.service.d.ts +23 -0
  35. package/dist/storage/web-storage.service.d.ts.map +1 -0
  36. package/dist/storage/web-storage.service.js +137 -0
  37. package/dist/storage/web-storage.service.js.map +1 -0
  38. package/dist/types/ui-navigation.d.ts +51 -0
  39. package/dist/types/ui-navigation.d.ts.map +1 -0
  40. package/dist/types/ui-navigation.js +2 -0
  41. package/dist/types/ui-navigation.js.map +1 -0
  42. package/dist/web-network.service.d.ts +24 -0
  43. package/dist/web-network.service.d.ts.map +1 -0
  44. package/dist/web-network.service.js +150 -0
  45. package/dist/web-network.service.js.map +1 -0
  46. package/package.json +72 -0
@@ -0,0 +1,176 @@
1
+ const DEFAULT_CONFIG = {
2
+ enableBackGesture: false,
3
+ enableSwipeGesture: false,
4
+ animationType: 'none',
5
+ enableAnalytics: true,
6
+ fallbackPath: '/',
7
+ };
8
+ export class WebUINavigationService {
9
+ constructor(config = {}) {
10
+ this.listeners = [];
11
+ this.config = { ...DEFAULT_CONFIG, ...config };
12
+ this.currentState = this.buildCurrentState();
13
+ if (typeof window !== 'undefined') {
14
+ window.addEventListener('popstate', this.handlePopState.bind(this));
15
+ }
16
+ }
17
+ navigate(path, options = {}) {
18
+ if (!this.isSupported()) {
19
+ return;
20
+ }
21
+ try {
22
+ if (typeof window !== 'undefined' && window.history) {
23
+ const method = options.replace ? 'replaceState' : 'pushState';
24
+ window.history[method](options.state || null, '', path);
25
+ this.updateCurrentState();
26
+ this.notifyListeners();
27
+ if (this.config.enableAnalytics) {
28
+ this.trackNavigation('navigate', path);
29
+ }
30
+ }
31
+ }
32
+ catch (_error) {
33
+ console.error('Error navigating:', _error);
34
+ }
35
+ }
36
+ goBack(fallbackPath) {
37
+ if (!this.isSupported()) {
38
+ return;
39
+ }
40
+ try {
41
+ if (this.canGoBack() && typeof window !== 'undefined' && window.history) {
42
+ window.history.back();
43
+ if (this.config.enableAnalytics) {
44
+ this.trackNavigation('back');
45
+ }
46
+ }
47
+ else if (fallbackPath) {
48
+ this.navigate(fallbackPath);
49
+ }
50
+ else if (this.config.fallbackPath) {
51
+ this.navigate(this.config.fallbackPath);
52
+ }
53
+ }
54
+ catch (_error) {
55
+ console.error('Error going back:', _error);
56
+ }
57
+ }
58
+ goForward() {
59
+ if (!this.isSupported()) {
60
+ return;
61
+ }
62
+ try {
63
+ if (this.canGoForward() &&
64
+ typeof window !== 'undefined' &&
65
+ window.history) {
66
+ window.history.forward();
67
+ if (this.config.enableAnalytics) {
68
+ this.trackNavigation('forward');
69
+ }
70
+ }
71
+ }
72
+ catch (_error) {
73
+ console.error('Error going forward:', _error);
74
+ }
75
+ }
76
+ replace(path, options = {}) {
77
+ this.navigate(path, { ...options, replace: true });
78
+ }
79
+ getCurrentState() {
80
+ return { ...this.currentState };
81
+ }
82
+ getCurrentPath() {
83
+ if (typeof window !== 'undefined' && window.location) {
84
+ return window.location.pathname;
85
+ }
86
+ return '/';
87
+ }
88
+ getSearchParams() {
89
+ if (typeof window !== 'undefined' && window.location) {
90
+ const params = new URLSearchParams(window.location.search);
91
+ const result = {};
92
+ params.forEach((value, key) => {
93
+ result[key] = value;
94
+ });
95
+ return result;
96
+ }
97
+ return {};
98
+ }
99
+ getParams() {
100
+ return {};
101
+ }
102
+ canGoBack() {
103
+ if (typeof window !== 'undefined' && window.history) {
104
+ return window.history.length > 1;
105
+ }
106
+ return false;
107
+ }
108
+ canGoForward() {
109
+ return false;
110
+ }
111
+ addListener(listener) {
112
+ this.listeners.push(listener);
113
+ return () => {
114
+ const index = this.listeners.indexOf(listener);
115
+ if (index > -1) {
116
+ this.listeners.splice(index, 1);
117
+ }
118
+ };
119
+ }
120
+ isSupported() {
121
+ return (typeof window !== 'undefined' &&
122
+ typeof window.history !== 'undefined' &&
123
+ typeof window.location !== 'undefined');
124
+ }
125
+ buildCurrentState() {
126
+ return {
127
+ currentPath: this.getCurrentPath(),
128
+ params: this.getParams(),
129
+ searchParams: this.getSearchParams(),
130
+ };
131
+ }
132
+ updateCurrentState() {
133
+ const previousPath = this.currentState.currentPath;
134
+ this.currentState = {
135
+ ...this.buildCurrentState(),
136
+ previousPath,
137
+ };
138
+ }
139
+ handlePopState() {
140
+ this.updateCurrentState();
141
+ this.notifyListeners();
142
+ if (this.config.enableAnalytics) {
143
+ this.trackNavigation('popstate', this.currentState.currentPath);
144
+ }
145
+ }
146
+ notifyListeners() {
147
+ this.listeners.forEach((listener) => {
148
+ try {
149
+ listener(this.currentState);
150
+ }
151
+ catch (_error) {
152
+ console.error('Error notifying navigation listener:', _error);
153
+ }
154
+ });
155
+ }
156
+ trackNavigation(_type, _path) {
157
+ }
158
+ }
159
+ export function createWebUINavigationService(config) {
160
+ return new WebUINavigationService(config);
161
+ }
162
+ export const webNavigationHelpers = {
163
+ getReactRouterNavigate: () => {
164
+ return null;
165
+ },
166
+ convertLocationToState: (location) => {
167
+ return {
168
+ currentPath: location.pathname || '/',
169
+ params: location.params || {},
170
+ searchParams: location.search
171
+ ? Object.fromEntries(new URLSearchParams(location.search))
172
+ : {},
173
+ };
174
+ },
175
+ };
176
+ //# sourceMappingURL=navigation.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.web.js","sourceRoot":"","sources":["../../src/navigation/navigation.web.ts"],"names":[],"mappings":"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"}
@@ -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/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/network/network.web.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { PlatformNetwork } from '@sudobility/di';
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/network-singleton.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAYtD,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/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,5 @@
1
+ import type { StorageService } from '@sudobility/di';
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/storage/storage-singleton.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAarD,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.LOCAL_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/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,aAAa,CAAC,CAAC;AAC5E,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 { PlatformStorage, AdvancedPlatformStorage } from '@sudobility/di';
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/storage/storage.web.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAM1E,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
+ localStorage.setItem(key, value);
5
+ }
6
+ catch (error) {
7
+ console.error(`Failed to store ${key}:`, error);
8
+ }
9
+ }
10
+ getItem(key) {
11
+ try {
12
+ return localStorage.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
+ localStorage.removeItem(key);
22
+ }
23
+ catch (error) {
24
+ console.error(`Failed to remove ${key}:`, error);
25
+ }
26
+ }
27
+ clear() {
28
+ try {
29
+ localStorage.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 < localStorage.length; i++) {
39
+ const key = localStorage.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/storage/storage.web.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { PlatformStorage, StorageService } from '@sudobility/di';
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/storage/web-storage.service.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACjE,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"}