riuve-rn 1.0.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 (99) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +848 -0
  3. package/dist/Riuve.d.ts +91 -0
  4. package/dist/Riuve.d.ts.map +1 -0
  5. package/dist/Riuve.js +402 -0
  6. package/dist/Rive.d.ts +91 -0
  7. package/dist/Rive.d.ts.map +1 -0
  8. package/dist/Rive.js +402 -0
  9. package/dist/adapters/deviceInfo/ExpoDeviceInfo.d.ts +13 -0
  10. package/dist/adapters/deviceInfo/ExpoDeviceInfo.d.ts.map +1 -0
  11. package/dist/adapters/deviceInfo/ExpoDeviceInfo.js +91 -0
  12. package/dist/adapters/deviceInfo/FallbackDeviceInfo.d.ts +13 -0
  13. package/dist/adapters/deviceInfo/FallbackDeviceInfo.d.ts.map +1 -0
  14. package/dist/adapters/deviceInfo/FallbackDeviceInfo.js +36 -0
  15. package/dist/adapters/deviceInfo/NativeDeviceInfo.d.ts +17 -0
  16. package/dist/adapters/deviceInfo/NativeDeviceInfo.d.ts.map +1 -0
  17. package/dist/adapters/deviceInfo/NativeDeviceInfo.js +83 -0
  18. package/dist/adapters/deviceInfo/index.d.ts +14 -0
  19. package/dist/adapters/deviceInfo/index.d.ts.map +1 -0
  20. package/dist/adapters/deviceInfo/index.js +38 -0
  21. package/dist/adapters/deviceInfo/types.d.ts +25 -0
  22. package/dist/adapters/deviceInfo/types.d.ts.map +1 -0
  23. package/dist/adapters/deviceInfo/types.js +7 -0
  24. package/dist/adapters/network/ExpoNetworkManager.d.ts +20 -0
  25. package/dist/adapters/network/ExpoNetworkManager.d.ts.map +1 -0
  26. package/dist/adapters/network/ExpoNetworkManager.js +114 -0
  27. package/dist/adapters/network/FallbackNetworkManager.d.ts +15 -0
  28. package/dist/adapters/network/FallbackNetworkManager.d.ts.map +1 -0
  29. package/dist/adapters/network/FallbackNetworkManager.js +27 -0
  30. package/dist/adapters/network/NativeNetworkManager.d.ts +20 -0
  31. package/dist/adapters/network/NativeNetworkManager.d.ts.map +1 -0
  32. package/dist/adapters/network/NativeNetworkManager.js +68 -0
  33. package/dist/adapters/network/index.d.ts +14 -0
  34. package/dist/adapters/network/index.d.ts.map +1 -0
  35. package/dist/adapters/network/index.js +38 -0
  36. package/dist/adapters/network/types.d.ts +28 -0
  37. package/dist/adapters/network/types.d.ts.map +1 -0
  38. package/dist/adapters/network/types.js +7 -0
  39. package/dist/adapters/utils/moduleDetector.d.ts +17 -0
  40. package/dist/adapters/utils/moduleDetector.d.ts.map +1 -0
  41. package/dist/adapters/utils/moduleDetector.js +32 -0
  42. package/dist/constants.d.ts +41 -0
  43. package/dist/constants.d.ts.map +1 -0
  44. package/dist/constants.js +43 -0
  45. package/dist/core/ApiClient.d.ts +49 -0
  46. package/dist/core/ApiClient.d.ts.map +1 -0
  47. package/dist/core/ApiClient.js +184 -0
  48. package/dist/core/DeviceInfo.d.ts +27 -0
  49. package/dist/core/DeviceInfo.d.ts.map +1 -0
  50. package/dist/core/DeviceInfo.js +69 -0
  51. package/dist/core/EventQueue.d.ts +71 -0
  52. package/dist/core/EventQueue.d.ts.map +1 -0
  53. package/dist/core/EventQueue.js +216 -0
  54. package/dist/core/Storage.d.ts +29 -0
  55. package/dist/core/Storage.d.ts.map +1 -0
  56. package/dist/core/Storage.js +88 -0
  57. package/dist/index.d.ts +9 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +17 -0
  60. package/dist/managers/BatchManager.d.ts +50 -0
  61. package/dist/managers/BatchManager.d.ts.map +1 -0
  62. package/dist/managers/BatchManager.js +277 -0
  63. package/dist/managers/IdentityManager.d.ts +47 -0
  64. package/dist/managers/IdentityManager.d.ts.map +1 -0
  65. package/dist/managers/IdentityManager.js +135 -0
  66. package/dist/managers/NetworkManager.d.ts +32 -0
  67. package/dist/managers/NetworkManager.d.ts.map +1 -0
  68. package/dist/managers/NetworkManager.js +67 -0
  69. package/dist/types/api.d.ts +65 -0
  70. package/dist/types/api.d.ts.map +1 -0
  71. package/dist/types/api.js +15 -0
  72. package/dist/types/config.d.ts +32 -0
  73. package/dist/types/config.d.ts.map +1 -0
  74. package/dist/types/config.js +5 -0
  75. package/dist/types/events.d.ts +63 -0
  76. package/dist/types/events.d.ts.map +1 -0
  77. package/dist/types/events.js +5 -0
  78. package/dist/types/index.d.ts +8 -0
  79. package/dist/types/index.d.ts.map +1 -0
  80. package/dist/types/index.js +23 -0
  81. package/dist/types/storage.d.ts +26 -0
  82. package/dist/types/storage.d.ts.map +1 -0
  83. package/dist/types/storage.js +5 -0
  84. package/dist/utils/fetchWithTimeout.d.ts +6 -0
  85. package/dist/utils/fetchWithTimeout.d.ts.map +1 -0
  86. package/dist/utils/fetchWithTimeout.js +28 -0
  87. package/dist/utils/logger.d.ts +21 -0
  88. package/dist/utils/logger.d.ts.map +1 -0
  89. package/dist/utils/logger.js +39 -0
  90. package/dist/utils/retry.d.ts +29 -0
  91. package/dist/utils/retry.d.ts.map +1 -0
  92. package/dist/utils/retry.js +78 -0
  93. package/dist/utils/uuid.d.ts +12 -0
  94. package/dist/utils/uuid.d.ts.map +1 -0
  95. package/dist/utils/uuid.js +27 -0
  96. package/dist/utils/validators.d.ts +32 -0
  97. package/dist/utils/validators.d.ts.map +1 -0
  98. package/dist/utils/validators.js +68 -0
  99. package/package.json +65 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/deviceInfo/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAIjD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CAyBxD"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ /**
3
+ * DeviceInfo Adapter Selector
4
+ *
5
+ * Automatically detects available modules and selects the best adapter:
6
+ * 1. NativeDeviceInfo (react-native-device-info) - Best performance & data
7
+ * 2. ExpoDeviceInfo (expo-device, expo-application) - Expo Go compatible
8
+ * 3. FallbackDeviceInfo (Platform API only) - Always works
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.getDeviceInfoAdapter = getDeviceInfoAdapter;
12
+ const moduleDetector_1 = require("../utils/moduleDetector");
13
+ let adapter = null;
14
+ /**
15
+ * Gets the appropriate DeviceInfo adapter for the current environment
16
+ */
17
+ function getDeviceInfoAdapter() {
18
+ if (adapter) {
19
+ return adapter;
20
+ }
21
+ const modules = (0, moduleDetector_1.detectAvailableModules)();
22
+ // Priority 1: Native adapter (best performance & data)
23
+ if (modules.hasNativeDeviceInfo) {
24
+ const { NativeDeviceInfo } = require('./NativeDeviceInfo');
25
+ adapter = new NativeDeviceInfo();
26
+ return adapter;
27
+ }
28
+ // Priority 2: Expo adapter (Expo Go compatible)
29
+ if (modules.hasExpoDevice) {
30
+ const { ExpoDeviceInfo } = require('./ExpoDeviceInfo');
31
+ adapter = new ExpoDeviceInfo();
32
+ return adapter;
33
+ }
34
+ // Priority 3: Fallback adapter (always works)
35
+ const { FallbackDeviceInfo } = require('./FallbackDeviceInfo');
36
+ adapter = new FallbackDeviceInfo();
37
+ return adapter;
38
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * DeviceInfo Adapter Types
3
+ *
4
+ * Defines the interface that all DeviceInfo adapters must implement.
5
+ */
6
+ export interface DeviceInfoType {
7
+ os_version: string;
8
+ device_model: string;
9
+ app_version: string;
10
+ locale: string;
11
+ platform: 'ios' | 'android';
12
+ manufacturer?: string;
13
+ brand?: string;
14
+ }
15
+ export interface DeviceInfoAdapter {
16
+ /**
17
+ * Collect device information
18
+ */
19
+ collect(): Promise<DeviceInfoType>;
20
+ /**
21
+ * Get cached device information (if available)
22
+ */
23
+ getCached(): DeviceInfoType | null;
24
+ }
25
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/deviceInfo/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IAEnC;;OAEG;IACH,SAAS,IAAI,cAAc,GAAG,IAAI,CAAC;CACpC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * DeviceInfo Adapter Types
4
+ *
5
+ * Defines the interface that all DeviceInfo adapters must implement.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Expo Network Adapter
3
+ *
4
+ * Uses expo-network for network monitoring.
5
+ * Since expo-network doesn't have event listeners, this adapter uses polling.
6
+ */
7
+ import type { NetworkAdapter } from './types';
8
+ export declare class ExpoNetworkManager implements NetworkAdapter {
9
+ private isOnline;
10
+ private listeners;
11
+ private intervalId;
12
+ private Network;
13
+ initialize(): Promise<void>;
14
+ isConnected(): boolean;
15
+ onStatusChange(callback: (isOnline: boolean) => void): void;
16
+ refresh(): Promise<void>;
17
+ cleanup(): void;
18
+ private notifyListeners;
19
+ }
20
+ //# sourceMappingURL=ExpoNetworkManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpoNetworkManager.d.ts","sourceRoot":"","sources":["../../../src/adapters/network/ExpoNetworkManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,SAAS,CAA0C;IAC3D,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,OAAO,CAAa;IAEtB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBjC,WAAW,IAAI,OAAO;IAItB,cAAc,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAIrD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB9B,OAAO,IAAI,IAAI;IASf,OAAO,CAAC,eAAe;CASxB"}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ /**
3
+ * Expo Network Adapter
4
+ *
5
+ * Uses expo-network for network monitoring.
6
+ * Since expo-network doesn't have event listeners, this adapter uses polling.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.ExpoNetworkManager = void 0;
43
+ class ExpoNetworkManager {
44
+ constructor() {
45
+ this.isOnline = true;
46
+ this.listeners = [];
47
+ this.intervalId = null;
48
+ this.Network = null;
49
+ }
50
+ async initialize() {
51
+ try {
52
+ // Lazy import - only import when this adapter is actually used
53
+ // @ts-ignore - expo modules are optional peer dependencies
54
+ this.Network = await Promise.resolve().then(() => __importStar(require('expo-network')));
55
+ // Check initial network state
56
+ const networkState = await this.Network.getNetworkStateAsync();
57
+ this.isOnline = networkState.isConnected ?? true;
58
+ // Expo Network doesn't have addEventListener, use polling instead
59
+ this.intervalId = setInterval(async () => {
60
+ await this.refresh();
61
+ }, 5000); // Check every 5 seconds
62
+ }
63
+ catch (error) {
64
+ // If expo-network fails to load, assume online
65
+ this.isOnline = true;
66
+ }
67
+ }
68
+ isConnected() {
69
+ return this.isOnline;
70
+ }
71
+ onStatusChange(callback) {
72
+ this.listeners.push(callback);
73
+ }
74
+ async refresh() {
75
+ if (!this.Network) {
76
+ return;
77
+ }
78
+ try {
79
+ const networkState = await this.Network.getNetworkStateAsync();
80
+ const wasOnline = this.isOnline;
81
+ this.isOnline = networkState.isConnected ?? true;
82
+ if (wasOnline !== this.isOnline) {
83
+ this.notifyListeners();
84
+ }
85
+ }
86
+ catch (error) {
87
+ // If network check fails, assume we're offline
88
+ const wasOnline = this.isOnline;
89
+ this.isOnline = false;
90
+ if (wasOnline !== this.isOnline) {
91
+ this.notifyListeners();
92
+ }
93
+ }
94
+ }
95
+ cleanup() {
96
+ if (this.intervalId) {
97
+ clearInterval(this.intervalId);
98
+ this.intervalId = null;
99
+ }
100
+ this.listeners = [];
101
+ this.Network = null;
102
+ }
103
+ notifyListeners() {
104
+ this.listeners.forEach((callback) => {
105
+ try {
106
+ callback(this.isOnline);
107
+ }
108
+ catch (error) {
109
+ // Silently catch listener errors
110
+ }
111
+ });
112
+ }
113
+ }
114
+ exports.ExpoNetworkManager = ExpoNetworkManager;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Fallback Network Adapter
3
+ *
4
+ * Minimal network adapter that always assumes online status.
5
+ * This adapter works in any React Native environment without any dependencies.
6
+ */
7
+ import type { NetworkAdapter } from './types';
8
+ export declare class FallbackNetworkManager implements NetworkAdapter {
9
+ initialize(): Promise<void>;
10
+ isConnected(): boolean;
11
+ onStatusChange(_callback: (isOnline: boolean) => void): void;
12
+ refresh(): Promise<void>;
13
+ cleanup(): void;
14
+ }
15
+ //# sourceMappingURL=FallbackNetworkManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FallbackNetworkManager.d.ts","sourceRoot":"","sources":["../../../src/adapters/network/FallbackNetworkManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,qBAAa,sBAAuB,YAAW,cAAc;IACrD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,WAAW,IAAI,OAAO;IAItB,cAAc,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAItD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,OAAO,IAAI,IAAI;CAGhB"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ /**
3
+ * Fallback Network Adapter
4
+ *
5
+ * Minimal network adapter that always assumes online status.
6
+ * This adapter works in any React Native environment without any dependencies.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.FallbackNetworkManager = void 0;
10
+ class FallbackNetworkManager {
11
+ async initialize() {
12
+ // No-op: Always assume online
13
+ }
14
+ isConnected() {
15
+ return true; // Always return true (assume online)
16
+ }
17
+ onStatusChange(_callback) {
18
+ // No-op: Never triggers callbacks since status never changes
19
+ }
20
+ async refresh() {
21
+ // No-op: Always online
22
+ }
23
+ cleanup() {
24
+ // No-op: Nothing to clean up
25
+ }
26
+ }
27
+ exports.FallbackNetworkManager = FallbackNetworkManager;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Native Network Adapter
3
+ *
4
+ * Uses @react-native-community/netinfo for network monitoring.
5
+ * This adapter provides real-time network status updates via event listeners.
6
+ */
7
+ import type { NetworkAdapter } from './types';
8
+ export declare class NativeNetworkManager implements NetworkAdapter {
9
+ private isOnline;
10
+ private listeners;
11
+ private unsubscribe;
12
+ initialize(): Promise<void>;
13
+ isConnected(): boolean;
14
+ onStatusChange(callback: (isOnline: boolean) => void): void;
15
+ refresh(): Promise<void>;
16
+ cleanup(): void;
17
+ private handleNetworkChange;
18
+ private notifyListeners;
19
+ }
20
+ //# sourceMappingURL=NativeNetworkManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeNetworkManager.d.ts","sourceRoot":"","sources":["../../../src/adapters/network/NativeNetworkManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,qBAAa,oBAAqB,YAAW,cAAc;IACzD,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,SAAS,CAA0C;IAC3D,OAAO,CAAC,WAAW,CAA6B;IAE1C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAWjC,WAAW,IAAI,OAAO;IAItB,cAAc,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAIrD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B,OAAO,IAAI,IAAI;IAQf,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,eAAe;CASxB"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ /**
3
+ * Native Network Adapter
4
+ *
5
+ * Uses @react-native-community/netinfo for network monitoring.
6
+ * This adapter provides real-time network status updates via event listeners.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.NativeNetworkManager = void 0;
13
+ const netinfo_1 = __importDefault(require("@react-native-community/netinfo"));
14
+ class NativeNetworkManager {
15
+ constructor() {
16
+ this.isOnline = true;
17
+ this.listeners = [];
18
+ this.unsubscribe = null;
19
+ }
20
+ async initialize() {
21
+ // Check initial network state
22
+ const state = await netinfo_1.default.fetch();
23
+ this.isOnline = state.isConnected ?? true;
24
+ // Subscribe to network state changes
25
+ this.unsubscribe = netinfo_1.default.addEventListener((state) => {
26
+ this.handleNetworkChange(state);
27
+ });
28
+ }
29
+ isConnected() {
30
+ return this.isOnline;
31
+ }
32
+ onStatusChange(callback) {
33
+ this.listeners.push(callback);
34
+ }
35
+ async refresh() {
36
+ const state = await netinfo_1.default.fetch();
37
+ const wasOnline = this.isOnline;
38
+ this.isOnline = state.isConnected ?? true;
39
+ if (wasOnline !== this.isOnline) {
40
+ this.notifyListeners();
41
+ }
42
+ }
43
+ cleanup() {
44
+ if (this.unsubscribe) {
45
+ this.unsubscribe();
46
+ this.unsubscribe = null;
47
+ }
48
+ this.listeners = [];
49
+ }
50
+ handleNetworkChange(state) {
51
+ const wasOnline = this.isOnline;
52
+ this.isOnline = state.isConnected ?? true;
53
+ if (wasOnline !== this.isOnline) {
54
+ this.notifyListeners();
55
+ }
56
+ }
57
+ notifyListeners() {
58
+ this.listeners.forEach((callback) => {
59
+ try {
60
+ callback(this.isOnline);
61
+ }
62
+ catch (error) {
63
+ // Silently catch listener errors
64
+ }
65
+ });
66
+ }
67
+ }
68
+ exports.NativeNetworkManager = NativeNetworkManager;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Network Adapter Selector
3
+ *
4
+ * Automatically detects available modules and selects the best adapter:
5
+ * 1. NativeNetworkManager (@react-native-community/netinfo) - Real-time events
6
+ * 2. ExpoNetworkManager (expo-network) - Expo Go compatible (polling)
7
+ * 3. FallbackNetworkManager (no dependencies) - Always assumes online
8
+ */
9
+ import type { NetworkAdapter } from './types';
10
+ /**
11
+ * Gets the appropriate Network adapter for the current environment
12
+ */
13
+ export declare function getNetworkAdapter(): NetworkAdapter;
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/network/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAI9C;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAyBlD"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ /**
3
+ * Network Adapter Selector
4
+ *
5
+ * Automatically detects available modules and selects the best adapter:
6
+ * 1. NativeNetworkManager (@react-native-community/netinfo) - Real-time events
7
+ * 2. ExpoNetworkManager (expo-network) - Expo Go compatible (polling)
8
+ * 3. FallbackNetworkManager (no dependencies) - Always assumes online
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.getNetworkAdapter = getNetworkAdapter;
12
+ const moduleDetector_1 = require("../utils/moduleDetector");
13
+ let adapter = null;
14
+ /**
15
+ * Gets the appropriate Network adapter for the current environment
16
+ */
17
+ function getNetworkAdapter() {
18
+ if (adapter) {
19
+ return adapter;
20
+ }
21
+ const modules = (0, moduleDetector_1.detectAvailableModules)();
22
+ // Priority 1: Native adapter (real-time network events)
23
+ if (modules.hasNativeNetInfo) {
24
+ const { NativeNetworkManager } = require('./NativeNetworkManager');
25
+ adapter = new NativeNetworkManager();
26
+ return adapter;
27
+ }
28
+ // Priority 2: Expo adapter (Expo Go compatible, uses polling)
29
+ if (modules.hasExpoNetwork) {
30
+ const { ExpoNetworkManager } = require('./ExpoNetworkManager');
31
+ adapter = new ExpoNetworkManager();
32
+ return adapter;
33
+ }
34
+ // Priority 3: Fallback adapter (always assumes online)
35
+ const { FallbackNetworkManager } = require('./FallbackNetworkManager');
36
+ adapter = new FallbackNetworkManager();
37
+ return adapter;
38
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Network Adapter Types
3
+ *
4
+ * Defines the interface that all Network adapters must implement.
5
+ */
6
+ export interface NetworkAdapter {
7
+ /**
8
+ * Initialize the network adapter
9
+ */
10
+ initialize(): Promise<void>;
11
+ /**
12
+ * Check if device is currently connected to the internet
13
+ */
14
+ isConnected(): boolean;
15
+ /**
16
+ * Register a callback for network status changes
17
+ */
18
+ onStatusChange(callback: (isOnline: boolean) => void): void;
19
+ /**
20
+ * Cleanup resources (listeners, intervals, etc.)
21
+ */
22
+ cleanup(): void;
23
+ /**
24
+ * Manually refresh network status
25
+ */
26
+ refresh(): Promise<void>;
27
+ }
28
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/network/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;OAEG;IACH,WAAW,IAAI,OAAO,CAAC;IAEvB;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAE5D;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;IAEhB;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * Network Adapter Types
4
+ *
5
+ * Defines the interface that all Network adapters must implement.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Module Detector
3
+ *
4
+ * Detects which native/expo modules are available at runtime.
5
+ * This allows the SDK to select the best adapter implementation automatically.
6
+ */
7
+ export interface ModuleAvailability {
8
+ hasNativeDeviceInfo: boolean;
9
+ hasExpoDevice: boolean;
10
+ hasNativeNetInfo: boolean;
11
+ hasExpoNetwork: boolean;
12
+ }
13
+ /**
14
+ * Detects which modules are available in the current environment
15
+ */
16
+ export declare function detectAvailableModules(): ModuleAvailability;
17
+ //# sourceMappingURL=moduleDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moduleDetector.d.ts","sourceRoot":"","sources":["../../../src/adapters/utils/moduleDetector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,kBAAkB;IACjC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,kBAAkB,CAO3D"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ /**
3
+ * Module Detector
4
+ *
5
+ * Detects which native/expo modules are available at runtime.
6
+ * This allows the SDK to select the best adapter implementation automatically.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.detectAvailableModules = detectAvailableModules;
10
+ /**
11
+ * Detects which modules are available in the current environment
12
+ */
13
+ function detectAvailableModules() {
14
+ return {
15
+ hasNativeDeviceInfo: canRequire('react-native-device-info'),
16
+ hasExpoDevice: canRequire('expo-device'),
17
+ hasNativeNetInfo: canRequire('@react-native-community/netinfo'),
18
+ hasExpoNetwork: canRequire('expo-network'),
19
+ };
20
+ }
21
+ /**
22
+ * Checks if a module can be required (is installed and available)
23
+ */
24
+ function canRequire(moduleName) {
25
+ try {
26
+ require.resolve(moduleName);
27
+ return true;
28
+ }
29
+ catch {
30
+ return false;
31
+ }
32
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * SDK Constants
3
+ */
4
+ export declare const STORAGE_KEYS: {
5
+ readonly ANONYMOUS_ID: "@riuve/anonymous_id";
6
+ readonly EXTERNAL_USER_ID: "@riuve/external_user_id";
7
+ readonly USER_PROPERTIES: "@riuve/user_properties";
8
+ readonly DEVICE_INFO: "@riuve/device_info";
9
+ readonly FCM_TOKEN: "@riuve/fcm_token";
10
+ readonly EVENT_QUEUE: "@riuve/event_queue";
11
+ readonly FAILED_BATCHES: "@riuve/failed_batches";
12
+ };
13
+ export declare const DEFAULT_CONFIG: {
14
+ readonly batchSize: 10;
15
+ readonly batchTimeout: 30000;
16
+ readonly maxRetries: 3;
17
+ readonly retryDelay: 1000;
18
+ readonly persistEvents: true;
19
+ readonly autoFlushOnBackground: true;
20
+ readonly maxQueueSize: 1000;
21
+ readonly eventRetentionDays: 7;
22
+ readonly requestTimeout: 10000;
23
+ readonly debugMode: false;
24
+ };
25
+ export declare const API_BASE_URL = "https://api.riuve.com";
26
+ export declare const API_ENDPOINTS: {
27
+ readonly INITIALIZE: "/api/sdk/initialize";
28
+ readonly IDENTIFY: "/api/sdk/identify";
29
+ readonly TRACK: "/api/sdk/track";
30
+ readonly FCM_TOKEN: "/api/sdk/fcm-token";
31
+ };
32
+ export declare const ERROR_MESSAGES: {
33
+ readonly NOT_INITIALIZED: "SDK not initialized. Call Riuve.initialize() first.";
34
+ readonly INVALID_API_KEY: "Invalid API key provided.";
35
+ readonly INVALID_EVENT_NAME: "Event name must be a non-empty string.";
36
+ readonly INVALID_USER_ID: "User ID must be a non-empty string.";
37
+ readonly NETWORK_ERROR: "Network request failed.";
38
+ readonly STORAGE_ERROR: "Storage operation failed.";
39
+ readonly QUEUE_FULL: "Event queue is full. Oldest events will be removed.";
40
+ };
41
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,YAAY;;;;;;;;CAQf,CAAC;AAEX,eAAO,MAAM,cAAc;;;;;;;;;;;CAWjB,CAAC;AAEX,eAAO,MAAM,YAAY,0BAA0B,CAAC;AAEpD,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AAEX,eAAO,MAAM,cAAc;;;;;;;;CAQjB,CAAC"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ /**
3
+ * SDK Constants
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ERROR_MESSAGES = exports.API_ENDPOINTS = exports.API_BASE_URL = exports.DEFAULT_CONFIG = exports.STORAGE_KEYS = void 0;
7
+ exports.STORAGE_KEYS = {
8
+ ANONYMOUS_ID: '@riuve/anonymous_id',
9
+ EXTERNAL_USER_ID: '@riuve/external_user_id',
10
+ USER_PROPERTIES: '@riuve/user_properties',
11
+ DEVICE_INFO: '@riuve/device_info',
12
+ FCM_TOKEN: '@riuve/fcm_token',
13
+ EVENT_QUEUE: '@riuve/event_queue',
14
+ FAILED_BATCHES: '@riuve/failed_batches',
15
+ };
16
+ exports.DEFAULT_CONFIG = {
17
+ batchSize: 10,
18
+ batchTimeout: 30000, // 30 seconds
19
+ maxRetries: 3,
20
+ retryDelay: 1000, // 1 second
21
+ persistEvents: true,
22
+ autoFlushOnBackground: true,
23
+ maxQueueSize: 1000,
24
+ eventRetentionDays: 7,
25
+ requestTimeout: 10000, // 10 seconds API request timeout
26
+ debugMode: false, // Disabled by default (only WARN and ERROR)
27
+ };
28
+ exports.API_BASE_URL = 'https://api.riuve.com';
29
+ exports.API_ENDPOINTS = {
30
+ INITIALIZE: '/api/sdk/initialize',
31
+ IDENTIFY: '/api/sdk/identify',
32
+ TRACK: '/api/sdk/track',
33
+ FCM_TOKEN: '/api/sdk/fcm-token',
34
+ };
35
+ exports.ERROR_MESSAGES = {
36
+ NOT_INITIALIZED: 'SDK not initialized. Call Riuve.initialize() first.',
37
+ INVALID_API_KEY: 'Invalid API key provided.',
38
+ INVALID_EVENT_NAME: 'Event name must be a non-empty string.',
39
+ INVALID_USER_ID: 'User ID must be a non-empty string.',
40
+ NETWORK_ERROR: 'Network request failed.',
41
+ STORAGE_ERROR: 'Storage operation failed.',
42
+ QUEUE_FULL: 'Event queue is full. Oldest events will be removed.',
43
+ };
@@ -0,0 +1,49 @@
1
+ /**
2
+ * API Client - Handles HTTP requests with retry logic
3
+ */
4
+ import type { InitializeRequest, InitializeResponse, IdentifyRequest, IdentifyResponse, TrackRequest, TrackResponse, SetFcmTokenRequest, SetFcmTokenResponse } from '../types';
5
+ export declare class ApiClient {
6
+ private baseUrl;
7
+ private apiKey;
8
+ private maxRetries;
9
+ private retryDelay;
10
+ private timeout;
11
+ constructor(baseUrl: string, apiKey: string, maxRetries: number, retryDelay: number, timeout?: number);
12
+ /**
13
+ * Updates the API client configuration
14
+ */
15
+ updateConfig(baseUrl: string, apiKey: string, maxRetries: number, retryDelay: number, timeout?: number): void;
16
+ /**
17
+ * Initialize endpoint
18
+ */
19
+ initialize(request: Omit<InitializeRequest, 'api_key'>): Promise<InitializeResponse>;
20
+ /**
21
+ * Identify endpoint
22
+ */
23
+ identify(request: Omit<IdentifyRequest, 'api_key'>): Promise<IdentifyResponse>;
24
+ /**
25
+ * Track endpoint
26
+ */
27
+ track(request: Omit<TrackRequest, 'api_key'>): Promise<TrackResponse>;
28
+ /**
29
+ * Set FCM token endpoint
30
+ */
31
+ setFcmToken(request: Omit<SetFcmTokenRequest, 'api_key'>): Promise<SetFcmTokenResponse>;
32
+ /**
33
+ * Generic POST request with retry logic
34
+ */
35
+ private post;
36
+ /**
37
+ * Makes the actual HTTP request
38
+ */
39
+ private makeRequest;
40
+ /**
41
+ * Parses error response from API
42
+ */
43
+ private parseErrorResponse;
44
+ /**
45
+ * Classifies an error into an ErrorType
46
+ */
47
+ private classifyError;
48
+ }
49
+ //# sourceMappingURL=ApiClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiClient.d.ts","sourceRoot":"","sources":["../../src/core/ApiClient.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EAGpB,MAAM,UAAU,CAAC;AAMlB,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;gBAGtB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,MAAc;IASzB;;OAEG;IACH,YAAY,CACV,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,MAAc,GACtB,IAAI;IAQP;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAO1F;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAOpF;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IAO3E;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAO7F;;OAEG;YACW,IAAI;IAclB;;OAEG;YACW,WAAW;IA6EzB;;OAEG;YACW,kBAAkB;IAiBhC;;OAEG;IACH,OAAO,CAAC,aAAa;CAwBtB"}