@sudobility/di 1.4.5

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 (82) hide show
  1. package/README.md +67 -0
  2. package/dist/analytics/analytics.d.ts +18 -0
  3. package/dist/analytics/analytics.d.ts.map +1 -0
  4. package/dist/analytics/analytics.js +3 -0
  5. package/dist/analytics/analytics.js.map +1 -0
  6. package/dist/analytics/platform-analytics.d.ts +7 -0
  7. package/dist/analytics/platform-analytics.d.ts.map +1 -0
  8. package/dist/analytics/platform-analytics.js +2 -0
  9. package/dist/analytics/platform-analytics.js.map +1 -0
  10. package/dist/env.d.ts +14 -0
  11. package/dist/env.d.ts.map +1 -0
  12. package/dist/env.js +2 -0
  13. package/dist/env.js.map +1 -0
  14. package/dist/hooks/index.d.ts +2 -0
  15. package/dist/hooks/index.d.ts.map +1 -0
  16. package/dist/hooks/index.js +2 -0
  17. package/dist/hooks/index.js.map +1 -0
  18. package/dist/hooks/useApiCall.d.ts +27 -0
  19. package/dist/hooks/useApiCall.d.ts.map +1 -0
  20. package/dist/hooks/useApiCall.js +99 -0
  21. package/dist/hooks/useApiCall.js.map +1 -0
  22. package/dist/index.d.ts +17 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +17 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/logging/index.d.ts +2 -0
  27. package/dist/logging/index.d.ts.map +1 -0
  28. package/dist/logging/index.js +2 -0
  29. package/dist/logging/index.js.map +1 -0
  30. package/dist/logging/logging.interface.d.ts +14 -0
  31. package/dist/logging/logging.interface.d.ts.map +1 -0
  32. package/dist/logging/logging.interface.js +7 -0
  33. package/dist/logging/logging.interface.js.map +1 -0
  34. package/dist/navigation/navigation.d.ts +53 -0
  35. package/dist/navigation/navigation.d.ts.map +1 -0
  36. package/dist/navigation/navigation.js +2 -0
  37. package/dist/navigation/navigation.js.map +1 -0
  38. package/dist/network/index.d.ts +2 -0
  39. package/dist/network/index.d.ts.map +1 -0
  40. package/dist/network/index.js +2 -0
  41. package/dist/network/index.js.map +1 -0
  42. package/dist/network/platform-network.d.ts +6 -0
  43. package/dist/network/platform-network.d.ts.map +1 -0
  44. package/dist/network/platform-network.js +2 -0
  45. package/dist/network/platform-network.js.map +1 -0
  46. package/dist/notification/notification.d.ts +68 -0
  47. package/dist/notification/notification.d.ts.map +1 -0
  48. package/dist/notification/notification.js +2 -0
  49. package/dist/notification/notification.js.map +1 -0
  50. package/dist/notification/platform-notifications.d.ts +6 -0
  51. package/dist/notification/platform-notifications.d.ts.map +1 -0
  52. package/dist/notification/platform-notifications.js +2 -0
  53. package/dist/notification/platform-notifications.js.map +1 -0
  54. package/dist/service-keys.d.ts +11 -0
  55. package/dist/service-keys.d.ts.map +1 -0
  56. package/dist/service-keys.js +10 -0
  57. package/dist/service-keys.js.map +1 -0
  58. package/dist/storage/storage.d.ts +48 -0
  59. package/dist/storage/storage.d.ts.map +1 -0
  60. package/dist/storage/storage.js +2 -0
  61. package/dist/storage/storage.js.map +1 -0
  62. package/dist/theme/platform-theme.d.ts +7 -0
  63. package/dist/theme/platform-theme.d.ts.map +1 -0
  64. package/dist/theme/platform-theme.js +2 -0
  65. package/dist/theme/platform-theme.js.map +1 -0
  66. package/dist/types.d.ts +38 -0
  67. package/dist/types.d.ts.map +1 -0
  68. package/dist/types.js +3 -0
  69. package/dist/types.js.map +1 -0
  70. package/dist/utils/async-helpers.d.ts +14 -0
  71. package/dist/utils/async-helpers.d.ts.map +1 -0
  72. package/dist/utils/async-helpers.js +93 -0
  73. package/dist/utils/async-helpers.js.map +1 -0
  74. package/dist/utils/index.d.ts +3 -0
  75. package/dist/utils/index.d.ts.map +1 -0
  76. package/dist/utils/index.js +3 -0
  77. package/dist/utils/index.js.map +1 -0
  78. package/dist/utils/logger.d.ts +8 -0
  79. package/dist/utils/logger.d.ts.map +1 -0
  80. package/dist/utils/logger.js +19 -0
  81. package/dist/utils/logger.js.map +1 -0
  82. package/package.json +105 -0
package/README.md ADDED
@@ -0,0 +1,67 @@
1
+ # @johnqh/di
2
+
3
+ Platform-agnostic dependency injection interfaces for React and React Native projects.
4
+
5
+ ## Overview
6
+
7
+ This library provides abstract TypeScript interfaces for dependency injection patterns that work across web and React Native platforms. It contains no platform-specific code and focuses purely on defining contracts for common services.
8
+
9
+ ## Features
10
+
11
+ - 🚀 **Platform Agnostic**: Works with both React and React Native
12
+ - 📱 **React Native Compatible**: No web-specific dependencies
13
+ - 🔌 **Dependency Injection**: Clean interface-based architecture
14
+ - 🎯 **TypeScript First**: Fully typed interfaces
15
+ - 🏗️ **Modular**: Import only what you need
16
+
17
+ ## Installation
18
+
19
+ ```bash
20
+ npm install @johnqh/di
21
+ ```
22
+
23
+ ## Usage
24
+
25
+ ```typescript
26
+ import {
27
+ NetworkClient,
28
+ StorageProvider,
29
+ AnalyticsService,
30
+ EnvProvider
31
+ } from '@johnqh/di';
32
+
33
+ // Implement interfaces for your specific platform
34
+ class MyNetworkClient implements NetworkClient {
35
+ // Your implementation
36
+ }
37
+ ```
38
+
39
+ ## Included Interfaces
40
+
41
+ ### Network
42
+ - `NetworkClient` - HTTP client interface
43
+ - `NetworkResponse` - Response type
44
+ - `NetworkRequestOptions` - Request configuration
45
+
46
+ ### Storage
47
+ - `StorageProvider` - Storage abstraction
48
+ - `PlatformStorage` - Basic storage interface
49
+ - `StorageService` - Enhanced storage service
50
+
51
+ ### Analytics
52
+ - `AnalyticsService` - Analytics tracking interface
53
+ - `EmailAnalyticsService` - Email-specific analytics
54
+
55
+ ### Environment
56
+ - `EnvProvider` - Environment configuration
57
+ - `AppConfig` - Application configuration
58
+
59
+ ### Authentication
60
+ - Auth interfaces for various providers
61
+
62
+ ### Navigation & Notifications
63
+ - Platform-agnostic navigation and notification interfaces
64
+
65
+ ## License
66
+
67
+ MIT
@@ -0,0 +1,18 @@
1
+ import { AnalyticsEvent, Optional } from '@sudobility/types';
2
+ export { AnalyticsEvent, Optional };
3
+ interface AnalyticsEventData {
4
+ event: AnalyticsEvent;
5
+ parameters?: Optional<Record<string, unknown>>;
6
+ }
7
+ interface _AnalyticsClient {
8
+ trackEvent(event: AnalyticsEvent | AnalyticsEventData): void;
9
+ setUserProperties(properties: Record<string, unknown>): void;
10
+ setUserId(userId: Optional<string>): void;
11
+ setAnalyticsEnabled(enabled: boolean): void;
12
+ setCurrentScreen(screenName: string, screenClass?: Optional<string>): void;
13
+ }
14
+ interface _AnalyticsContextProvider {
15
+ getCurrentContext(): Record<string, unknown>;
16
+ }
17
+ export { type AnalyticsEventData, type _AnalyticsClient as AnalyticsClient, type _AnalyticsContextProvider as AnalyticsContextProvider, };
18
+ //# sourceMappingURL=analytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/analytics/analytics.ts"],"names":[],"mappings":"AAoCA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;AAoBpC,UAAU,kBAAkB;IAC1B,KAAK,EAAE,cAAc,CAAC;IACtB,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAChD;AAoBD,UAAU,gBAAgB;IAKxB,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,kBAAkB,GAAG,IAAI,CAAC;IAM7D,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAM7D,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAM1C,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAO5C,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CAC5E;AAyBD,UAAU,yBAAyB;IAKjC,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9C;AAED,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,IAAI,eAAe,EACxC,KAAK,yBAAyB,IAAI,wBAAwB,GAC3D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { AnalyticsEvent } from '@sudobility/types';
2
+ export { AnalyticsEvent };
3
+ //# sourceMappingURL=analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/analytics/analytics.ts"],"names":[],"mappings":"AAoCA,OAAO,EAAE,cAAc,EAAY,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ export interface PlatformAnalytics {
2
+ trackEvent(event: string, properties: Record<string, unknown>): void;
3
+ setUserProperty(key: string, value: string): void;
4
+ setUserId(userId: string): void;
5
+ isEnabled(): boolean;
6
+ }
7
+ //# sourceMappingURL=platform-analytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-analytics.d.ts","sourceRoot":"","sources":["../../src/analytics/platform-analytics.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,iBAAiB;IAMhC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAOrE,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAMlD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAMhC,SAAS,IAAI,OAAO,CAAC;CACtB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=platform-analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-analytics.js","sourceRoot":"","sources":["../../src/analytics/platform-analytics.ts"],"names":[],"mappings":""}
package/dist/env.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ import type { EnvProvider, AppConfig, EnvironmentVariables, FirebaseConfig, Optional } from './types';
2
+ export type { EnvProvider, AppConfig, EnvironmentVariables, FirebaseConfig, Optional, };
3
+ export interface EnvFactory {
4
+ createEnvProvider(): EnvProvider;
5
+ createAppConfig(envProvider: EnvProvider): AppConfig;
6
+ detectPlatform(): 'web' | 'react-native' | 'node';
7
+ }
8
+ export interface EnvUtils {
9
+ isDevelopment(): boolean;
10
+ isProduction(): boolean;
11
+ isTest(): boolean;
12
+ get(key: string, defaultValue?: Optional<string>): Optional<string>;
13
+ }
14
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,oBAAoB,EACpB,cAAc,EACd,QAAQ,EACT,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,WAAW,EACX,SAAS,EACT,oBAAoB,EACpB,cAAc,EACd,QAAQ,GACT,CAAC;AAwBF,MAAM,WAAW,UAAU;IAIzB,iBAAiB,IAAI,WAAW,CAAC;IAKjC,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IAKrD,cAAc,IAAI,KAAK,GAAG,cAAc,GAAG,MAAM,CAAC;CACnD;AAwBD,MAAM,WAAW,QAAQ;IAIvB,aAAa,IAAI,OAAO,CAAC;IAKzB,YAAY,IAAI,OAAO,CAAC;IAKxB,MAAM,IAAI,OAAO,CAAC;IAKlB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;CACrE"}
package/dist/env.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export { useApiCall, useApiCallStrict, useApiGroup, type UseApiCallOptions, type UseApiCallReturn, } from './useApiCall.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { useApiCall, useApiCallStrict, useApiGroup, } from './useApiCall.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,WAAW,GAGZ,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { Optional } from '../types.js';
2
+ export interface UseApiCallOptions {
3
+ onError?: (error: Error) => void;
4
+ context?: string;
5
+ }
6
+ export interface UseApiCallReturn {
7
+ isLoading: boolean;
8
+ error: Optional<string>;
9
+ clearError: () => void;
10
+ executeAsync: <T>(operation: () => Promise<T>) => Promise<Optional<T>>;
11
+ execute: <T, TArgs extends unknown[]>(operation: (...args: TArgs) => Promise<T>) => (...args: TArgs) => Promise<Optional<T>>;
12
+ }
13
+ export declare const useApiCall: (options?: UseApiCallOptions) => UseApiCallReturn;
14
+ export declare const useApiCallStrict: (options?: UseApiCallOptions) => {
15
+ isLoading: boolean;
16
+ error: Optional<string>;
17
+ clearError: () => void;
18
+ executeAsync: <T>(operation: () => Promise<T>) => Promise<T>;
19
+ execute: <T, TArgs extends unknown[]>(operation: (...args: TArgs) => Promise<T>) => (...args: TArgs) => Promise<T>;
20
+ };
21
+ export declare const useApiGroup: (options?: UseApiCallOptions) => {
22
+ isLoading: boolean;
23
+ error: Optional<string>;
24
+ clearError: () => void;
25
+ createMethod: <T, TArgs extends unknown[]>(operation: (...args: TArgs) => Promise<T>, throwOnError?: boolean) => (...args: TArgs) => Promise<Optional<T>>;
26
+ };
27
+ //# sourceMappingURL=useApiCall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useApiCall.d.ts","sourceRoot":"","sources":["../../src/hooks/useApiCall.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAQ5C,MAAM,WAAW,iBAAiB;IAEhC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEjC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAOD,MAAM,WAAW,gBAAgB;IAE/B,SAAS,EAAE,OAAO,CAAC;IAEnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAExB,UAAU,EAAE,MAAM,IAAI,CAAC;IAEvB,YAAY,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvE,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,SAAS,OAAO,EAAE,EAClC,SAAS,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,KACtC,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;CAC/C;AAYD,eAAO,MAAM,UAAU,GACrB,UAAS,iBAAsB,KAC9B,gBAoCF,CAAC;AAYF,eAAO,MAAM,gBAAgB,GAAI,UAAS,iBAAsB;;;;mBASrD,CAAC,aAAa,MAAM,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAAC;cAyBjD,CAAC,EAAE,KAAK,SAAS,OAAO,EAAE,aAAa,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,eACnD,KAAK,KAAG,OAAO,CAAC,CAAC,CAAC;CAcxC,CAAC;AAYF,eAAO,MAAM,WAAW,GAAI,UAAS,iBAAsB;;;;mBAStD,CAAC,EAAE,KAAK,SAAS,OAAO,EAAE,aACd,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,iBAC3B,OAAO,eAEE,KAAK,KAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CAmCxD,CAAC"}
@@ -0,0 +1,99 @@
1
+ import { useCallback, useState } from 'react';
2
+ import { withLoadingState } from '../utils/async-helpers.js';
3
+ export const useApiCall = (options = {}) => {
4
+ const [isLoading, setIsLoading] = useState(false);
5
+ const [error, setError] = useState(null);
6
+ const clearError = useCallback(() => {
7
+ setError(null);
8
+ }, []);
9
+ const executeAsync = useCallback(async (operation) => {
10
+ return withLoadingState(operation, setIsLoading, setError, options.context);
11
+ }, [options.context]);
12
+ const execute = useCallback((operation) => {
13
+ return async (...args) => {
14
+ return executeAsync(() => operation(...args));
15
+ };
16
+ }, [executeAsync]);
17
+ return {
18
+ isLoading,
19
+ error,
20
+ clearError,
21
+ executeAsync,
22
+ execute,
23
+ };
24
+ };
25
+ export const useApiCallStrict = (options = {}) => {
26
+ const [isLoading, setIsLoading] = useState(false);
27
+ const [error, setError] = useState(null);
28
+ const clearError = useCallback(() => {
29
+ setError(null);
30
+ }, []);
31
+ const executeAsync = useCallback(async (operation) => {
32
+ setIsLoading(true);
33
+ setError(null);
34
+ try {
35
+ const result = await operation();
36
+ return result;
37
+ }
38
+ catch (err) {
39
+ const errorMessage = err instanceof Error ? err.message : 'Operation failed';
40
+ setError(errorMessage);
41
+ if (options.onError) {
42
+ options.onError(err instanceof Error ? err : new Error(errorMessage));
43
+ }
44
+ throw err;
45
+ }
46
+ finally {
47
+ setIsLoading(false);
48
+ }
49
+ }, [options.onError]);
50
+ const execute = useCallback((operation) => {
51
+ return (...args) => {
52
+ return executeAsync(() => operation(...args));
53
+ };
54
+ }, [executeAsync]);
55
+ return {
56
+ isLoading,
57
+ error,
58
+ clearError,
59
+ executeAsync,
60
+ execute,
61
+ };
62
+ };
63
+ export const useApiGroup = (options = {}) => {
64
+ const [isLoading, setIsLoading] = useState(false);
65
+ const [error, setError] = useState(null);
66
+ const clearError = useCallback(() => {
67
+ setError(null);
68
+ }, []);
69
+ const createMethod = useCallback((operation, throwOnError = true) => {
70
+ return async (...args) => {
71
+ if (throwOnError) {
72
+ setIsLoading(true);
73
+ setError(null);
74
+ try {
75
+ const result = await operation(...args);
76
+ return result;
77
+ }
78
+ catch (err) {
79
+ const errorMessage = err instanceof Error ? err.message : 'Operation failed';
80
+ setError(errorMessage);
81
+ throw err;
82
+ }
83
+ finally {
84
+ setIsLoading(false);
85
+ }
86
+ }
87
+ else {
88
+ return withLoadingState(() => operation(...args), setIsLoading, setError, options.context);
89
+ }
90
+ };
91
+ }, [options.context]);
92
+ return {
93
+ isLoading,
94
+ error,
95
+ clearError,
96
+ createMethod,
97
+ };
98
+ };
99
+ //# sourceMappingURL=useApiCall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useApiCall.js","sourceRoot":"","sources":["../../src/hooks/useApiCall.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export * from './types.js';
2
+ export * from './env.js';
3
+ export * from './analytics/analytics.js';
4
+ export * from './analytics/platform-analytics.js';
5
+ export { type AnalyticsService, type AnalyticsConfig, type EmailAnalyticsService, AnalyticsEventBuilder, } from '@sudobility/types';
6
+ export * from './navigation/navigation.js';
7
+ export * from './network/index.js';
8
+ export * from './network/platform-network.js';
9
+ export * from './notification/notification.js';
10
+ export * from './notification/platform-notifications.js';
11
+ export * from './storage/storage.js';
12
+ export * from './theme/platform-theme.js';
13
+ export * from './logging/index.js';
14
+ export * from './service-keys.js';
15
+ export * from './hooks/index.js';
16
+ export * from './utils/index.js';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,cAAc,YAAY,CAAC;AAG3B,cAAc,UAAU,CAAC;AAGzB,cAAc,0BAA0B,CAAC;AACzC,cAAc,mCAAmC,CAAC;AAElD,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAG3B,cAAc,4BAA4B,CAAC;AAG3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAG9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0CAA0C,CAAC;AAGzD,cAAc,sBAAsB,CAAC;AAGrC,cAAc,2BAA2B,CAAC;AAG1C,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,kBAAkB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,17 @@
1
+ export * from './types.js';
2
+ export * from './env.js';
3
+ export * from './analytics/analytics.js';
4
+ export * from './analytics/platform-analytics.js';
5
+ export { AnalyticsEventBuilder, } from '@sudobility/types';
6
+ export * from './navigation/navigation.js';
7
+ export * from './network/index.js';
8
+ export * from './network/platform-network.js';
9
+ export * from './notification/notification.js';
10
+ export * from './notification/platform-notifications.js';
11
+ export * from './storage/storage.js';
12
+ export * from './theme/platform-theme.js';
13
+ export * from './logging/index.js';
14
+ export * from './service-keys.js';
15
+ export * from './hooks/index.js';
16
+ export * from './utils/index.js';
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,cAAc,YAAY,CAAC;AAG3B,cAAc,UAAU,CAAC;AAGzB,cAAc,0BAA0B,CAAC;AACzC,cAAc,mCAAmC,CAAC;AAElD,OAAO,EAIL,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAG3B,cAAc,4BAA4B,CAAC;AAG3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAG9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0CAA0C,CAAC;AAGzD,cAAc,sBAAsB,CAAC;AAGrC,cAAc,2BAA2B,CAAC;AAG1C,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { LogType, Logger, LoggerProvider } from './logging.interface.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { LogType } from './logging.interface.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA0B,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,14 @@
1
+ export declare enum LogType {
2
+ None = "none",
3
+ Console = "console",
4
+ File = "file"
5
+ }
6
+ export interface Logger {
7
+ readonly type: LogType;
8
+ log(...args: any[]): void;
9
+ }
10
+ export interface LoggerProvider {
11
+ getLogger(): Logger;
12
+ setLogType(type: LogType): void;
13
+ }
14
+ //# sourceMappingURL=logging.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.interface.d.ts","sourceRoot":"","sources":["../../src/logging/logging.interface.ts"],"names":[],"mappings":"AAQA,oBAAY,OAAO;IAEjB,IAAI,SAAS;IAEb,OAAO,YAAY;IAEnB,IAAI,SAAS;CACd;AA2CD,MAAM,WAAW,MAAM;IAOrB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAoBvB,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;CAC3B;AAuCD,MAAM,WAAW,cAAc;IAS7B,SAAS,IAAI,MAAM,CAAC;IAqBpB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;CACjC"}
@@ -0,0 +1,7 @@
1
+ export var LogType;
2
+ (function (LogType) {
3
+ LogType["None"] = "none";
4
+ LogType["Console"] = "console";
5
+ LogType["File"] = "file";
6
+ })(LogType || (LogType = {}));
7
+ //# sourceMappingURL=logging.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.interface.js","sourceRoot":"","sources":["../../src/logging/logging.interface.ts"],"names":[],"mappings":"AAQA,MAAM,CAAN,IAAY,OAOX;AAPD,WAAY,OAAO;IAEjB,wBAAa,CAAA;IAEb,8BAAmB,CAAA;IAEnB,wBAAa,CAAA;AACf,CAAC,EAPW,OAAO,KAAP,OAAO,QAOlB"}
@@ -0,0 +1,53 @@
1
+ import { Optional } from '@sudobility/types';
2
+ interface NavigationOptions {
3
+ replace?: Optional<boolean>;
4
+ state?: Optional<unknown>;
5
+ preventScrollReset?: Optional<boolean>;
6
+ }
7
+ interface NavigationState {
8
+ currentPath: string;
9
+ previousPath?: Optional<string>;
10
+ params: Record<string, string>;
11
+ searchParams: Record<string, string>;
12
+ }
13
+ interface NavigationService {
14
+ navigate(path: string, options?: Optional<NavigationOptions>): void;
15
+ goBack(fallbackPath?: Optional<string>): void;
16
+ goForward(): void;
17
+ replace(path: string, options?: Optional<NavigationOptions>): void;
18
+ getCurrentState(): NavigationState;
19
+ getCurrentPath(): string;
20
+ getSearchParams(): Record<string, string>;
21
+ getParams(): Record<string, string>;
22
+ canGoBack(): boolean;
23
+ canGoForward(): boolean;
24
+ addListener(listener: (state: NavigationState) => void): () => void;
25
+ isSupported(): boolean;
26
+ }
27
+ interface NavigationHook {
28
+ navigate: (path: string, options?: Optional<NavigationOptions>) => void;
29
+ goBack: (fallbackPath?: Optional<string>) => void;
30
+ replace: (path: string, options?: Optional<NavigationOptions>) => void;
31
+ currentPath: string;
32
+ searchParams: Record<string, string>;
33
+ params: Record<string, string>;
34
+ canGoBack: boolean;
35
+ isSupported: boolean;
36
+ }
37
+ interface LocationHook {
38
+ pathname: string;
39
+ search: string;
40
+ searchParams: Record<string, string>;
41
+ hash: string;
42
+ state: unknown;
43
+ key: string;
44
+ }
45
+ interface NavigationConfig {
46
+ enableBackGesture?: Optional<boolean>;
47
+ enableSwipeGesture?: Optional<boolean>;
48
+ animationType?: Optional<'slide' | 'fade' | 'none'>;
49
+ enableAnalytics?: Optional<boolean>;
50
+ fallbackPath?: Optional<string>;
51
+ }
52
+ export { type NavigationOptions, type NavigationState, type NavigationService, type NavigationHook, type LocationHook, type NavigationConfig, };
53
+ //# sourceMappingURL=navigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/navigation/navigation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=navigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/navigation/navigation.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export { type NetworkClient, type NetworkResponse, type NetworkRequestOptions, NetworkError, } from '@sudobility/types';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/network/index.ts"],"names":[],"mappings":"AAyBA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,YAAY,GACb,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { NetworkError, } from '@sudobility/types';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/network/index.ts"],"names":[],"mappings":"AAyBA,OAAO,EAIL,YAAY,GACb,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export interface PlatformNetwork {
2
+ request(url: string, options: RequestInit): Promise<Response>;
3
+ isOnline(): boolean;
4
+ watchNetworkStatus(callback: (isOnline: boolean) => void): () => void;
5
+ }
6
+ //# sourceMappingURL=platform-network.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-network.d.ts","sourceRoot":"","sources":["../../src/network/platform-network.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,eAAe;IAO9B,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAM9D,QAAQ,IAAI,OAAO,CAAC;IAOpB,kBAAkB,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACvE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=platform-network.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-network.js","sourceRoot":"","sources":["../../src/network/platform-network.ts"],"names":[],"mappings":""}
@@ -0,0 +1,68 @@
1
+ import { Optional } from '@sudobility/types';
2
+ interface NotificationOptions {
3
+ body?: Optional<string>;
4
+ icon?: Optional<string>;
5
+ badge?: Optional<string>;
6
+ tag?: Optional<string>;
7
+ requireInteraction?: Optional<boolean>;
8
+ silent?: Optional<boolean>;
9
+ data?: Optional<unknown>;
10
+ actions?: Optional<NotificationAction[]>;
11
+ timestamp?: Optional<number>;
12
+ }
13
+ interface NotificationAction {
14
+ action: string;
15
+ title: string;
16
+ icon?: Optional<string>;
17
+ }
18
+ interface NotificationResult {
19
+ success: boolean;
20
+ error?: Optional<string>;
21
+ notificationId?: Optional<string>;
22
+ }
23
+ interface NotificationPermissionResult {
24
+ granted: boolean;
25
+ permission: 'granted' | 'denied' | 'default';
26
+ error?: Optional<string>;
27
+ }
28
+ interface NotificationService {
29
+ isSupported(): boolean;
30
+ getPermissionStatus(): 'granted' | 'denied' | 'default' | 'unsupported';
31
+ requestPermission(): Promise<NotificationPermissionResult>;
32
+ showNotification(title: string, options?: Optional<NotificationOptions>): Promise<NotificationResult>;
33
+ closeNotification(notificationId: string): Promise<boolean>;
34
+ clearAllNotifications(): Promise<boolean>;
35
+ setClickHandler(handler: (data?: Optional<unknown>) => void): void;
36
+ hasPermission(): boolean;
37
+ getCapabilities(): NotificationCapabilities;
38
+ }
39
+ interface NotificationCapabilities {
40
+ supportsActions: boolean;
41
+ supportsIcon: boolean;
42
+ supportsBadge: boolean;
43
+ supportsData: boolean;
44
+ supportsSound: boolean;
45
+ supportsVibration: boolean;
46
+ maxActions?: Optional<number>;
47
+ }
48
+ interface NotificationConfig {
49
+ enableAutoClose: boolean;
50
+ autoCloseDelay: number;
51
+ defaultIcon: string;
52
+ enableDebugLogging: boolean;
53
+ fallbackToAlert: boolean;
54
+ }
55
+ interface NotificationClient {
56
+ service: NotificationService;
57
+ config: NotificationConfig;
58
+ show(title: string, options?: Optional<NotificationOptions>): Promise<NotificationResult>;
59
+ requestPermissions(): Promise<NotificationPermissionResult>;
60
+ }
61
+ interface NotificationContextProvider {
62
+ client: NotificationClient;
63
+ isSupported: boolean;
64
+ hasPermission: boolean;
65
+ requestPermission(): Promise<void>;
66
+ }
67
+ export { type NotificationOptions, type NotificationAction, type NotificationResult, type NotificationPermissionResult, type NotificationService, type NotificationCapabilities, type NotificationConfig, type NotificationClient, type NotificationContextProvider, };
68
+ //# sourceMappingURL=notification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../src/notification/notification.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=notification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.js","sourceRoot":"","sources":["../../src/notification/notification.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export interface PlatformNotifications {
2
+ showNotification(title: string, message: string, type: 'info' | 'success' | 'warning' | 'error'): void;
3
+ requestPermission(): Promise<boolean>;
4
+ scheduleNotification(title: string, message: string, delay: number): void;
5
+ }
6
+ //# sourceMappingURL=platform-notifications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-notifications.d.ts","sourceRoot":"","sources":["../../src/notification/platform-notifications.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,qBAAqB;IAOpC,gBAAgB,CACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAC7C,IAAI,CAAC;IAMR,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAQtC,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3E"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=platform-notifications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-notifications.js","sourceRoot":"","sources":["../../src/notification/platform-notifications.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ export declare const ServiceKeys: {
2
+ readonly STORAGE: "storage";
3
+ readonly ANALYTICS: "analytics";
4
+ readonly NOTIFICATIONS: "notifications";
5
+ readonly THEME: "theme";
6
+ readonly NETWORK: "network";
7
+ readonly PERSISTENCE: "persistence";
8
+ readonly FOLDER_OPERATIONS: "folderOperations";
9
+ };
10
+ export type ServiceKey = (typeof ServiceKeys)[keyof typeof ServiceKeys];
11
+ //# sourceMappingURL=service-keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-keys.d.ts","sourceRoot":"","sources":["../src/service-keys.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,WAAW;;;;;;;;CASd,CAAC;AAKX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ export const ServiceKeys = {
2
+ STORAGE: 'storage',
3
+ ANALYTICS: 'analytics',
4
+ NOTIFICATIONS: 'notifications',
5
+ THEME: 'theme',
6
+ NETWORK: 'network',
7
+ PERSISTENCE: 'persistence',
8
+ FOLDER_OPERATIONS: 'folderOperations',
9
+ };
10
+ //# sourceMappingURL=service-keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-keys.js","sourceRoot":"","sources":["../src/service-keys.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,WAAW,GAAG;IAEzB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,aAAa,EAAE,eAAe;IAC9B,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,aAAa;IAC1B,iBAAiB,EAAE,kBAAkB;CAC7B,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { StorageType, Optional } from '../types';
2
+ interface PlatformStorage {
3
+ setItem(key: string, value: string): Promise<void> | void;
4
+ getItem(key: string): Promise<Optional<string>> | Optional<string>;
5
+ removeItem(key: string): Promise<void> | void;
6
+ clear?: Optional<() => Promise<void> | void>;
7
+ getAllKeys?: Optional<() => Promise<string[]> | string[]>;
8
+ }
9
+ interface AdvancedPlatformStorage extends PlatformStorage {
10
+ setItem(key: string, value: string, ttl?: Optional<number>): Promise<void> | void;
11
+ hasItem(key: string): Promise<boolean> | boolean;
12
+ clearPattern(pattern?: Optional<string>): Promise<void> | void;
13
+ }
14
+ interface StorageProvider {
15
+ storage: PlatformStorage | AdvancedPlatformStorage;
16
+ get(key: string): Promise<Optional<string>> | Optional<string>;
17
+ set(key: string, value: string, ttl?: Optional<number>): Promise<void> | void;
18
+ remove(key: string): Promise<void> | void;
19
+ clear(): Promise<void> | void;
20
+ }
21
+ interface StorageService {
22
+ getItem(key: string): Promise<Optional<string>> | Optional<string>;
23
+ setItem(key: string, value: string): Promise<void> | void;
24
+ removeItem(key: string): Promise<void> | void;
25
+ clear(): Promise<void> | void;
26
+ getAllKeys(): Promise<string[]> | string[];
27
+ isAvailable(): boolean;
28
+ getType(): StorageType;
29
+ }
30
+ interface SerializedStorageService {
31
+ getObject<T>(key: string): Promise<Optional<T>> | Optional<T>;
32
+ setObject<T>(key: string, value: T): Promise<void> | void;
33
+ removeObject(key: string): Promise<void> | void;
34
+ hasObject(key: string): Promise<boolean> | boolean;
35
+ }
36
+ interface StorageFactory {
37
+ createStorage(type: StorageType): StorageService;
38
+ createSerializedStorage(type: StorageType): SerializedStorageService;
39
+ getDefaultStorageType(): StorageType;
40
+ }
41
+ interface StorageConfig {
42
+ prefix?: Optional<string>;
43
+ encryption?: Optional<boolean>;
44
+ compression?: Optional<boolean>;
45
+ ttl?: Optional<number>;
46
+ }
47
+ export { type PlatformStorage, type AdvancedPlatformStorage, type StorageProvider, type StorageService, type SerializedStorageService, type StorageFactory, type StorageConfig, };
48
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/storage/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/storage/storage.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ export interface PlatformTheme {
2
+ applyTheme(theme: string): void;
3
+ applyFontSize(fontSize: string): void;
4
+ getCurrentTheme(): string;
5
+ watchSystemTheme(callback: (theme: string) => void): () => void;
6
+ }
7
+ //# sourceMappingURL=platform-theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-theme.d.ts","sourceRoot":"","sources":["../../src/theme/platform-theme.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,aAAa;IAK5B,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAMhC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAMtC,eAAe,IAAI,MAAM,CAAC;IAO1B,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACjE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=platform-theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-theme.js","sourceRoot":"","sources":["../../src/theme/platform-theme.ts"],"names":[],"mappings":""}
@@ -0,0 +1,38 @@
1
+ import { StorageType, AnalyticsEvent, WalletType, ChainType, Optional } from '@sudobility/types';
2
+ export { StorageType, AnalyticsEvent, WalletType, ChainType, Optional };
3
+ export interface EnvironmentVariables {
4
+ NODE_ENV?: Optional<'development' | 'production' | 'test'>;
5
+ [key: string]: Optional<string>;
6
+ }
7
+ export interface EnvProvider {
8
+ get<K extends keyof EnvironmentVariables>(key: K, defaultValue?: Optional<string>): Optional<EnvironmentVariables[K] | string>;
9
+ isDevelopment(): boolean;
10
+ isProduction(): boolean;
11
+ isTest(): boolean;
12
+ getAll(): EnvironmentVariables;
13
+ }
14
+ export interface FirebaseConfig {
15
+ apiKey: string;
16
+ authDomain: string;
17
+ projectId: string;
18
+ storageBucket: string;
19
+ messagingSenderId: string;
20
+ appId: string;
21
+ measurementId?: Optional<string>;
22
+ vapidKey?: Optional<string>;
23
+ }
24
+ export interface AppConfig {
25
+ wildDuckBackendUrl: string;
26
+ indexerBackendUrl: string;
27
+ revenueCatApiKey: string;
28
+ walletConnectProjectId: string;
29
+ privyAppId: string;
30
+ firebase: FirebaseConfig;
31
+ useCloudflareWorker: boolean;
32
+ cloudflareWorkerUrl: string;
33
+ useMockFallback: boolean;
34
+ }
35
+ export interface AnalyticsEventProperties {
36
+ [key: string]: Optional<string | number | boolean>;
37
+ }
38
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,WAAW,EACX,cAAc,EACd,UAAU,EACV,SAAS,EACT,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AASxE,MAAM,WAAW,oBAAoB;IAEnC,QAAQ,CAAC,EAAE,QAAQ,CAAC,aAAa,GAAG,YAAY,GAAG,MAAM,CAAC,CAAC;IAE3D,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;CACjC;AAsBD,MAAM,WAAW,WAAW;IAW1B,GAAG,CAAC,CAAC,SAAS,MAAM,oBAAoB,EACtC,GAAG,EAAE,CAAC,EACN,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,GAC9B,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IAQ9C,aAAa,IAAI,OAAO,CAAC;IAQzB,YAAY,IAAI,OAAO,CAAC;IAQxB,MAAM,IAAI,OAAO,CAAC;IASlB,MAAM,IAAI,oBAAoB,CAAC;CAChC;AAaD,MAAM,WAAW,cAAc;IAE7B,MAAM,EAAE,MAAM,CAAC;IAEf,UAAU,EAAE,MAAM,CAAC;IAEnB,SAAS,EAAE,MAAM,CAAC;IAElB,aAAa,EAAE,MAAM,CAAC;IAEtB,iBAAiB,EAAE,MAAM,CAAC;IAE1B,KAAK,EAAE,MAAM,CAAC;IAEd,aAAa,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEjC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC7B;AAuBD,MAAM,WAAW,SAAS;IAExB,kBAAkB,EAAE,MAAM,CAAC;IAE3B,iBAAiB,EAAE,MAAM,CAAC;IAG1B,gBAAgB,EAAE,MAAM,CAAC;IAEzB,sBAAsB,EAAE,MAAM,CAAC;IAE/B,UAAU,EAAE,MAAM,CAAC;IAGnB,QAAQ,EAAE,cAAc,CAAC;IAGzB,mBAAmB,EAAE,OAAO,CAAC;IAE7B,mBAAmB,EAAE,MAAM,CAAC;IAG5B,eAAe,EAAE,OAAO,CAAC;CAC1B;AAYD,MAAM,WAAW,wBAAwB;IAEvC,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CACpD"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ import { StorageType, AnalyticsEvent, WalletType, ChainType, } from '@sudobility/types';
2
+ export { StorageType, AnalyticsEvent, WalletType, ChainType };
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,WAAW,EACX,cAAc,EACd,UAAU,EACV,SAAS,GAEV,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAY,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { Optional } from '../types.js';
2
+ export type AsyncResult<T> = {
3
+ data?: T;
4
+ error?: Error;
5
+ success: boolean;
6
+ };
7
+ export declare const safeAsync: <T>(operation: () => Promise<T>, context?: string) => Promise<AsyncResult<T>>;
8
+ export declare const withLoadingState: <T>(operation: () => Promise<T>, setLoading: (loading: boolean) => void, setError: (error: Optional<string>) => void, context?: string) => Promise<Optional<T>>;
9
+ export declare const safeParallel: <T extends readonly unknown[]>(operations: readonly [...{ [K in keyof T]: () => Promise<T[K]>; }], context?: string) => Promise<AsyncResult<T>>;
10
+ export declare const withTimeout: <T>(operation: () => Promise<T>, timeoutMs: number, context?: string) => Promise<T>;
11
+ export declare const withCache: <T>(key: string, operation: () => Promise<T>, ttlMs?: number) => Promise<T>;
12
+ export declare const clearExpiredCache: () => void;
13
+ export declare const debounceAsync: <T extends unknown[], R>(fn: (...args: T) => Promise<R>, delay: number, key: string) => ((...args: T) => Promise<Optional<R>>);
14
+ //# sourceMappingURL=async-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/async-helpers.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAQ5C,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC3B,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAaF,eAAO,MAAM,SAAS,GAAU,CAAC,EAC/B,WAAW,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,UAAU,MAAM,KACf,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CASxB,CAAC;AAeF,eAAO,MAAM,gBAAgB,GAAU,CAAC,EACtC,WAAW,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,YAAY,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,EACtC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,EAC3C,UAAU,MAAM,KACf,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAerB,CAAC;AAYF,eAAO,MAAM,YAAY,GAAU,CAAC,SAAS,SAAS,OAAO,EAAE,EAC7D,YAAY,SAAS,CAAC,GAAG,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,EACjE,UAAU,MAAM,KACf,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAaxB,CAAC;AAcF,eAAO,MAAM,WAAW,GAAU,CAAC,EACjC,WAAW,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,WAAW,MAAM,EACjB,UAAU,MAAM,KACf,OAAO,CAAC,CAAC,CAcX,CAAC;AAuBF,eAAO,MAAM,SAAS,GAAU,CAAC,EAC/B,KAAK,MAAM,EACX,WAAW,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,QAAO,MAAsB,KAC5B,OAAO,CAAC,CAAC,CAWX,CAAC;AASF,eAAO,MAAM,iBAAiB,QAAO,IAOpC,CAAC;AAqBF,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EAClD,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAC9B,OAAO,MAAM,EACb,KAAK,MAAM,KACV,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAsBvC,CAAC"}
@@ -0,0 +1,93 @@
1
+ import { logger } from './logger.js';
2
+ export const safeAsync = async (operation, context) => {
3
+ try {
4
+ const data = await operation();
5
+ return { data, success: true };
6
+ }
7
+ catch (error) {
8
+ const errorObj = error instanceof Error ? error : new Error(String(error));
9
+ logger.error(`Async operation failed: ${errorObj.message}`, context, error);
10
+ return { error: errorObj, success: false };
11
+ }
12
+ };
13
+ export const withLoadingState = async (operation, setLoading, setError, context) => {
14
+ setLoading(true);
15
+ setError(null);
16
+ try {
17
+ const result = await operation();
18
+ return result;
19
+ }
20
+ catch (error) {
21
+ const errorMessage = error instanceof Error ? error.message : String(error);
22
+ setError(errorMessage);
23
+ logger.error(`Operation failed: ${errorMessage}`, context, error);
24
+ return undefined;
25
+ }
26
+ finally {
27
+ setLoading(false);
28
+ }
29
+ };
30
+ export const safeParallel = async (operations, context) => {
31
+ try {
32
+ const results = await Promise.all(operations.map((op) => op()));
33
+ return { data: results, success: true };
34
+ }
35
+ catch (error) {
36
+ const errorObj = error instanceof Error ? error : new Error(String(error));
37
+ logger.error(`Parallel operations failed: ${errorObj.message}`, context, error);
38
+ return { error: errorObj, success: false };
39
+ }
40
+ };
41
+ export const withTimeout = async (operation, timeoutMs, context) => {
42
+ const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error(`Operation timed out after ${timeoutMs}ms`)), timeoutMs));
43
+ try {
44
+ return await Promise.race([operation(), timeoutPromise]);
45
+ }
46
+ catch (error) {
47
+ logger.error(`Timeout operation failed`, context, error);
48
+ throw error;
49
+ }
50
+ };
51
+ const cache = new Map();
52
+ export const withCache = async (key, operation, ttlMs = 5 * 60 * 1000) => {
53
+ const cached = cache.get(key);
54
+ const now = Date.now();
55
+ if (cached && now - cached.timestamp < cached.ttl) {
56
+ return cached.data;
57
+ }
58
+ const result = await operation();
59
+ cache.set(key, { data: result, timestamp: now, ttl: ttlMs });
60
+ return result;
61
+ };
62
+ export const clearExpiredCache = () => {
63
+ const now = Date.now();
64
+ for (const [key, entry] of cache.entries()) {
65
+ if (now - entry.timestamp >= entry.ttl) {
66
+ cache.delete(key);
67
+ }
68
+ }
69
+ };
70
+ const debounceMap = new Map();
71
+ export const debounceAsync = (fn, delay, key) => {
72
+ return (...args) => {
73
+ return new Promise((resolve) => {
74
+ const existingTimeout = debounceMap.get(key);
75
+ if (existingTimeout) {
76
+ clearTimeout(existingTimeout);
77
+ }
78
+ const timeout = setTimeout(async () => {
79
+ debounceMap.delete(key);
80
+ try {
81
+ const result = await fn(...args);
82
+ resolve(result);
83
+ }
84
+ catch (error) {
85
+ logger.error(`Debounced operation failed`, key, error);
86
+ resolve(undefined);
87
+ }
88
+ }, delay);
89
+ debounceMap.set(key, timeout);
90
+ });
91
+ };
92
+ };
93
+ //# sourceMappingURL=async-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-helpers.js","sourceRoot":"","sources":["../../src/utils/async-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { safeAsync, withLoadingState, safeParallel, withTimeout, withCache, clearExpiredCache, debounceAsync, type AsyncResult, } from './async-helpers.js';
2
+ export { logger, setLogger, type SimpleLogger } from './logger.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { safeAsync, withLoadingState, safeParallel, withTimeout, withCache, clearExpiredCache, debounceAsync, } from './async-helpers.js';
2
+ export { logger, setLogger } from './logger.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,aAAa,GAEd,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAqB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface SimpleLogger {
2
+ error(message: string, context?: string, error?: unknown): void;
3
+ info(message: string, context?: string): void;
4
+ warn(message: string, context?: string): void;
5
+ }
6
+ export declare let logger: SimpleLogger;
7
+ export declare const setLogger: (customLogger: SimpleLogger) => void;
8
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAChE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/C;AA8BD,eAAO,IAAI,MAAM,EAAE,YAAkC,CAAC;AAoBtD,eAAO,MAAM,SAAS,GAAI,cAAc,YAAY,KAAG,IAEtD,CAAC"}
@@ -0,0 +1,19 @@
1
+ class ConsoleLogger {
2
+ error(message, context, error) {
3
+ const prefix = context ? `[${context}]` : '';
4
+ console.error(`${prefix} ${message}`, error);
5
+ }
6
+ info(message, context) {
7
+ const prefix = context ? `[${context}]` : '';
8
+ console.log(`${prefix} ${message}`);
9
+ }
10
+ warn(message, context) {
11
+ const prefix = context ? `[${context}]` : '';
12
+ console.warn(`${prefix} ${message}`);
13
+ }
14
+ }
15
+ export let logger = new ConsoleLogger();
16
+ export const setLogger = (customLogger) => {
17
+ logger = customLogger;
18
+ };
19
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAyBA,MAAM,aAAa;IACjB,KAAK,CAAC,OAAe,EAAE,OAAgB,EAAE,KAAe;QACtD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,OAAgB;QACpC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,OAAgB;QACpC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC,CAAC;IACvC,CAAC;CACF;AAQD,MAAM,CAAC,IAAI,MAAM,GAAiB,IAAI,aAAa,EAAE,CAAC;AAoBtD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,YAA0B,EAAQ,EAAE;IAC5D,MAAM,GAAG,YAAY,CAAC;AACxB,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,105 @@
1
+ {
2
+ "name": "@sudobility/di",
3
+ "version": "1.4.5",
4
+ "description": "Platform-agnostic dependency injection interfaces for React and React Native projects",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ },
13
+ "./analytics": {
14
+ "import": "./dist/analytics/analytics.js",
15
+ "types": "./dist/analytics/analytics.d.ts"
16
+ },
17
+ "./env": {
18
+ "import": "./dist/env.js",
19
+ "types": "./dist/env.d.ts"
20
+ },
21
+ "./logging": {
22
+ "import": "./dist/logging/index.js",
23
+ "types": "./dist/logging/index.d.ts"
24
+ },
25
+ "./navigation": {
26
+ "import": "./dist/navigation/navigation.js",
27
+ "types": "./dist/navigation/navigation.d.ts"
28
+ },
29
+ "./network": {
30
+ "import": "./dist/network/index.js",
31
+ "types": "./dist/network/index.d.ts"
32
+ },
33
+ "./notification": {
34
+ "import": "./dist/notification/notification.js",
35
+ "types": "./dist/notification/notification.d.ts"
36
+ },
37
+ "./storage": {
38
+ "import": "./dist/storage/storage.js",
39
+ "types": "./dist/storage/storage.d.ts"
40
+ },
41
+ "./types": {
42
+ "import": "./dist/types.js",
43
+ "types": "./dist/types.d.ts"
44
+ },
45
+ "./hooks": {
46
+ "import": "./dist/hooks/index.js",
47
+ "types": "./dist/hooks/index.d.ts"
48
+ },
49
+ "./utils": {
50
+ "import": "./dist/utils/index.js",
51
+ "types": "./dist/utils/index.d.ts"
52
+ }
53
+ },
54
+ "files": [
55
+ "dist/**/*"
56
+ ],
57
+ "scripts": {
58
+ "build": "tsc",
59
+ "build:watch": "tsc --watch",
60
+ "clean": "rm -rf dist",
61
+ "test": "vitest run",
62
+ "test:watch": "vitest",
63
+ "test:coverage": "vitest run --coverage",
64
+ "test:ci": "vitest run --coverage",
65
+ "prepublishOnly": "npm run clean && npm run test && npm run build",
66
+ "typecheck": "tsc --noEmit",
67
+ "lint": "eslint src --ext .ts,.tsx",
68
+ "lint:fix": "eslint src --ext .ts,.tsx --fix",
69
+ "format": "prettier --write src/**/*.{ts,tsx,js,jsx,json,md}"
70
+ },
71
+ "keywords": [
72
+ "dependency-injection",
73
+ "react",
74
+ "react-native",
75
+ "typescript",
76
+ "platform-agnostic",
77
+ "interfaces"
78
+ ],
79
+ "author": "johnqh",
80
+ "devDependencies": {
81
+ "@sudobility/types": "^1.8.21",
82
+ "@types/node": "^24.5.2",
83
+ "@types/react": "^19.2.2",
84
+ "@typescript-eslint/eslint-plugin": "^8.44.1",
85
+ "@typescript-eslint/parser": "^8.44.1",
86
+ "@vitest/coverage-v8": "^3.2.4",
87
+ "eslint": "^9.36.0",
88
+ "eslint-config-prettier": "^10.1.8",
89
+ "eslint-plugin-prettier": "^5.5.4",
90
+ "prettier": "^3.6.2",
91
+ "typescript": "^5.9.2",
92
+ "vitest": "^3.2.4"
93
+ },
94
+ "peerDependencies": {
95
+ "@sudobility/types": "^1.8.20",
96
+ "react": ">=18.0.0"
97
+ },
98
+ "repository": {
99
+ "type": "git",
100
+ "url": "https://github.com/johnqh/di.git"
101
+ },
102
+ "publishConfig": {
103
+ "access": "restricted"
104
+ }
105
+ }