react-native-nitro-sse 0.1.0-beta.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 (72) hide show
  1. package/LICENSE +21 -0
  2. package/NitroSse.podspec +30 -0
  3. package/README.md +121 -0
  4. package/android/CMakeLists.txt +24 -0
  5. package/android/build.gradle +120 -0
  6. package/android/src/main/AndroidManifest.xml +2 -0
  7. package/android/src/main/cpp/cpp-adapter.cpp +6 -0
  8. package/android/src/main/java/com/margelo/nitro/nitrosse/NitroSse.kt +279 -0
  9. package/android/src/main/java/com/margelo/nitro/nitrosse/NitroSsePackage.kt +22 -0
  10. package/ios/NitroSse.swift +311 -0
  11. package/lib/module/NitroSse.nitro.js +4 -0
  12. package/lib/module/NitroSse.nitro.js.map +1 -0
  13. package/lib/module/SseInterface.js +2 -0
  14. package/lib/module/SseInterface.js.map +1 -0
  15. package/lib/module/index.js +22 -0
  16. package/lib/module/index.js.map +1 -0
  17. package/lib/module/package.json +1 -0
  18. package/lib/typescript/package.json +1 -0
  19. package/lib/typescript/src/NitroSse.nitro.d.ts +34 -0
  20. package/lib/typescript/src/NitroSse.nitro.d.ts.map +1 -0
  21. package/lib/typescript/src/SseInterface.d.ts +25 -0
  22. package/lib/typescript/src/SseInterface.d.ts.map +1 -0
  23. package/lib/typescript/src/index.d.ts +5 -0
  24. package/lib/typescript/src/index.d.ts.map +1 -0
  25. package/nitro.json +17 -0
  26. package/nitrogen/generated/android/c++/JFunc_void_std__vector_SseEvent_.hpp +100 -0
  27. package/nitrogen/generated/android/c++/JHttpMethod.hpp +58 -0
  28. package/nitrogen/generated/android/c++/JHybridNitroSseSpec.cpp +110 -0
  29. package/nitrogen/generated/android/c++/JHybridNitroSseSpec.hpp +71 -0
  30. package/nitrogen/generated/android/c++/JSseConfig.hpp +98 -0
  31. package/nitrogen/generated/android/c++/JSseEvent.hpp +76 -0
  32. package/nitrogen/generated/android/c++/JSseEventType.hpp +67 -0
  33. package/nitrogen/generated/android/c++/JSseStats.hpp +70 -0
  34. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrosse/Func_void_std__vector_SseEvent_.kt +80 -0
  35. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrosse/HttpMethod.kt +23 -0
  36. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrosse/HybridNitroSseSpec.kt +82 -0
  37. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrosse/SseConfig.kt +56 -0
  38. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrosse/SseEvent.kt +50 -0
  39. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrosse/SseEventType.kt +26 -0
  40. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrosse/SseStats.kt +47 -0
  41. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrosse/nitrosseOnLoad.kt +35 -0
  42. package/nitrogen/generated/android/nitrosse+autolinking.cmake +81 -0
  43. package/nitrogen/generated/android/nitrosse+autolinking.gradle +27 -0
  44. package/nitrogen/generated/android/nitrosseOnLoad.cpp +46 -0
  45. package/nitrogen/generated/android/nitrosseOnLoad.hpp +25 -0
  46. package/nitrogen/generated/ios/NitroSse+autolinking.rb +60 -0
  47. package/nitrogen/generated/ios/NitroSse-Swift-Cxx-Bridge.cpp +41 -0
  48. package/nitrogen/generated/ios/NitroSse-Swift-Cxx-Bridge.hpp +210 -0
  49. package/nitrogen/generated/ios/NitroSse-Swift-Cxx-Umbrella.hpp +63 -0
  50. package/nitrogen/generated/ios/NitroSseAutolinking.mm +33 -0
  51. package/nitrogen/generated/ios/NitroSseAutolinking.swift +26 -0
  52. package/nitrogen/generated/ios/c++/HybridNitroSseSpecSwift.cpp +11 -0
  53. package/nitrogen/generated/ios/c++/HybridNitroSseSpecSwift.hpp +130 -0
  54. package/nitrogen/generated/ios/swift/Func_void_std__vector_SseEvent_.swift +46 -0
  55. package/nitrogen/generated/ios/swift/HttpMethod.swift +40 -0
  56. package/nitrogen/generated/ios/swift/HybridNitroSseSpec.swift +60 -0
  57. package/nitrogen/generated/ios/swift/HybridNitroSseSpec_cxx.swift +212 -0
  58. package/nitrogen/generated/ios/swift/SseConfig.swift +130 -0
  59. package/nitrogen/generated/ios/swift/SseEvent.swift +101 -0
  60. package/nitrogen/generated/ios/swift/SseEventType.swift +52 -0
  61. package/nitrogen/generated/ios/swift/SseStats.swift +63 -0
  62. package/nitrogen/generated/shared/c++/HttpMethod.hpp +76 -0
  63. package/nitrogen/generated/shared/c++/HybridNitroSseSpec.cpp +26 -0
  64. package/nitrogen/generated/shared/c++/HybridNitroSseSpec.hpp +78 -0
  65. package/nitrogen/generated/shared/c++/SseConfig.hpp +111 -0
  66. package/nitrogen/generated/shared/c++/SseEvent.hpp +102 -0
  67. package/nitrogen/generated/shared/c++/SseEventType.hpp +88 -0
  68. package/nitrogen/generated/shared/c++/SseStats.hpp +96 -0
  69. package/package.json +179 -0
  70. package/src/NitroSse.nitro.ts +37 -0
  71. package/src/SseInterface.ts +28 -0
  72. package/src/index.tsx +26 -0
@@ -0,0 +1,37 @@
1
+ import type { HybridObject } from 'react-native-nitro-modules';
2
+ import type { SseConfig, SseEvent, SseStats } from './SseInterface';
3
+
4
+ export interface NitroSse
5
+ extends HybridObject<{ ios: 'swift'; android: 'kotlin' }> {
6
+ /**
7
+ * Configure SSE and setup event callback.
8
+ */
9
+ setup(config: SseConfig, onEvent: (events: SseEvent[]) => void): void;
10
+
11
+ /**
12
+ * Start the SSE connection.
13
+ */
14
+ start(): void;
15
+
16
+ /**
17
+ * Stop the SSE connection.
18
+ */
19
+ stop(): void;
20
+
21
+ /**
22
+ * Set the last processed event ID.
23
+ * Native will use this ID to resume connection if interrupted.
24
+ */
25
+ setLastProcessedId(id: string): void;
26
+
27
+ /**
28
+ * Update HTTP headers dynamically (e.g., when token expires).
29
+ * These headers will be used for subsequent connection/reconnection attempts.
30
+ */
31
+ updateHeaders(headers: Record<string, string>): void;
32
+
33
+ /**
34
+ * Get connection statistics.
35
+ */
36
+ getStats(): SseStats;
37
+ }
@@ -0,0 +1,28 @@
1
+ export type HttpMethod = 'get' | 'post';
2
+
3
+ export type SseEventType = 'open' | 'message' | 'error' | 'close' | 'heartbeat';
4
+
5
+ export interface SseConfig {
6
+ url: string;
7
+ method?: HttpMethod;
8
+ headers?: Record<string, string>;
9
+ body?: string;
10
+ backgroundExecution?: boolean;
11
+ batchingIntervalMs?: number;
12
+ maxBufferSize?: number;
13
+ }
14
+
15
+ export interface SseEvent {
16
+ type: SseEventType;
17
+ data?: string;
18
+ id?: string;
19
+ event?: string;
20
+ message?: string;
21
+ }
22
+
23
+ export interface SseStats {
24
+ totalBytesReceived: number;
25
+ reconnectCount: number;
26
+ lastErrorTime?: number;
27
+ lastErrorCode?: string;
28
+ }
package/src/index.tsx ADDED
@@ -0,0 +1,26 @@
1
+ import { NitroModules } from 'react-native-nitro-modules';
2
+ import type { NitroSse } from './NitroSse.nitro';
3
+
4
+ export * from './SseInterface';
5
+ export * from './NitroSse.nitro';
6
+
7
+ // Load the Hybrid Object from Native
8
+ let realNitroSse: NitroSse | undefined;
9
+ try {
10
+ realNitroSse = NitroModules.createHybridObject<NitroSse>('NitroSse');
11
+ } catch {
12
+ console.debug(
13
+ 'Native NitroSse not found. This might be a test environment or web.'
14
+ );
15
+ }
16
+
17
+ /**
18
+ * Public interface to use SSE.
19
+ */
20
+ if (!realNitroSse || !(realNitroSse as any).setup) {
21
+ throw new Error(
22
+ 'NitroSse: Native module not found. Ensure you have linked the library and built the app for iOS/Android.'
23
+ );
24
+ }
25
+
26
+ export const NitroSseModule: NitroSse = realNitroSse;