react-native-nitro-net 0.1.5 → 0.3.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 (71) hide show
  1. package/README.md +122 -12
  2. package/android/libs/arm64-v8a/librust_c_net.so +0 -0
  3. package/android/libs/armeabi-v7a/librust_c_net.so +0 -0
  4. package/android/libs/x86/librust_c_net.so +0 -0
  5. package/android/libs/x86_64/librust_c_net.so +0 -0
  6. package/cpp/HybridHttpParser.hpp +67 -0
  7. package/cpp/HybridNetDriver.hpp +74 -0
  8. package/cpp/HybridNetServerDriver.hpp +16 -0
  9. package/cpp/HybridNetSocketDriver.hpp +176 -0
  10. package/cpp/NetBindings.hpp +67 -1
  11. package/ios/Frameworks/RustCNet.xcframework/ios-arm64/RustCNet.framework/RustCNet +0 -0
  12. package/ios/Frameworks/RustCNet.xcframework/ios-arm64_x86_64-simulator/RustCNet.framework/RustCNet +0 -0
  13. package/lib/Net.nitro.d.ts +46 -1
  14. package/lib/Net.nitro.js +3 -1
  15. package/lib/http.d.ts +203 -0
  16. package/lib/http.js +1138 -0
  17. package/lib/https.d.ts +24 -0
  18. package/lib/https.js +144 -0
  19. package/lib/index.d.ts +50 -11
  20. package/lib/index.js +179 -31
  21. package/lib/tls.d.ts +145 -0
  22. package/lib/tls.js +521 -0
  23. package/nitrogen/generated/android/RustCNet+autolinking.cmake +2 -0
  24. package/nitrogen/generated/android/RustCNetOnLoad.cpp +2 -0
  25. package/nitrogen/generated/android/c++/JHybridHttpParserSpec.cpp +54 -0
  26. package/nitrogen/generated/android/c++/JHybridHttpParserSpec.hpp +65 -0
  27. package/nitrogen/generated/android/c++/JHybridNetDriverSpec.cpp +47 -1
  28. package/nitrogen/generated/android/c++/JHybridNetDriverSpec.hpp +9 -0
  29. package/nitrogen/generated/android/c++/JHybridNetServerDriverSpec.cpp +8 -0
  30. package/nitrogen/generated/android/c++/JHybridNetServerDriverSpec.hpp +2 -0
  31. package/nitrogen/generated/android/c++/JHybridNetSocketDriverSpec.cpp +79 -0
  32. package/nitrogen/generated/android/c++/JHybridNetSocketDriverSpec.hpp +17 -0
  33. package/nitrogen/generated/android/c++/JNetConfig.hpp +7 -3
  34. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridHttpParserSpec.kt +58 -0
  35. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridNetDriverSpec.kt +37 -0
  36. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridNetServerDriverSpec.kt +8 -0
  37. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridNetSocketDriverSpec.kt +68 -0
  38. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/NetConfig.kt +6 -3
  39. package/nitrogen/generated/ios/RustCNet-Swift-Cxx-Bridge.cpp +17 -0
  40. package/nitrogen/generated/ios/RustCNet-Swift-Cxx-Bridge.hpp +118 -41
  41. package/nitrogen/generated/ios/RustCNet-Swift-Cxx-Umbrella.hpp +5 -0
  42. package/nitrogen/generated/ios/c++/HybridHttpParserSpecSwift.cpp +11 -0
  43. package/nitrogen/generated/ios/c++/HybridHttpParserSpecSwift.hpp +79 -0
  44. package/nitrogen/generated/ios/c++/HybridNetDriverSpecSwift.hpp +69 -0
  45. package/nitrogen/generated/ios/c++/HybridNetServerDriverSpecSwift.hpp +12 -0
  46. package/nitrogen/generated/ios/c++/HybridNetSocketDriverSpecSwift.hpp +123 -0
  47. package/nitrogen/generated/ios/swift/HybridHttpParserSpec.swift +56 -0
  48. package/nitrogen/generated/ios/swift/HybridHttpParserSpec_cxx.swift +131 -0
  49. package/nitrogen/generated/ios/swift/HybridNetDriverSpec.swift +9 -0
  50. package/nitrogen/generated/ios/swift/HybridNetDriverSpec_cxx.swift +133 -0
  51. package/nitrogen/generated/ios/swift/HybridNetServerDriverSpec.swift +2 -0
  52. package/nitrogen/generated/ios/swift/HybridNetServerDriverSpec_cxx.swift +36 -0
  53. package/nitrogen/generated/ios/swift/HybridNetSocketDriverSpec.swift +17 -0
  54. package/nitrogen/generated/ios/swift/HybridNetSocketDriverSpec_cxx.swift +314 -0
  55. package/nitrogen/generated/ios/swift/NetConfig.swift +19 -1
  56. package/nitrogen/generated/shared/c++/HybridHttpParserSpec.cpp +21 -0
  57. package/nitrogen/generated/shared/c++/HybridHttpParserSpec.hpp +63 -0
  58. package/nitrogen/generated/shared/c++/HybridNetDriverSpec.cpp +9 -0
  59. package/nitrogen/generated/shared/c++/HybridNetDriverSpec.hpp +13 -0
  60. package/nitrogen/generated/shared/c++/HybridNetServerDriverSpec.cpp +2 -0
  61. package/nitrogen/generated/shared/c++/HybridNetServerDriverSpec.hpp +2 -0
  62. package/nitrogen/generated/shared/c++/HybridNetSocketDriverSpec.cpp +17 -0
  63. package/nitrogen/generated/shared/c++/HybridNetSocketDriverSpec.hpp +18 -0
  64. package/nitrogen/generated/shared/c++/NetConfig.hpp +6 -2
  65. package/package.json +7 -5
  66. package/react-native-nitro-net.podspec +1 -3
  67. package/src/Net.nitro.ts +44 -1
  68. package/src/http.ts +1304 -0
  69. package/src/https.ts +127 -0
  70. package/src/index.ts +167 -27
  71. package/src/tls.ts +608 -0
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "react-native-nitro-net",
3
- "version": "0.1.5",
4
- "description": "Ultra-high-performance networking to React Native by combining a memory-safe Rust core with the zero-overhead Nitro Modules JSI bridge. Provides Node.js-compatible net API.",
3
+ "description": "Ultra-high-performance networking to React Native by combining a memory-safe Rust core with the zero-overhead Nitro Modules JSI bridge. Provides Node.js-compatible net, tls, http(s) API.",
4
+ "version": "0.3.0",
5
5
  "main": "./lib/index.js",
6
6
  "module": "./lib/index.js",
7
7
  "types": "./lib/index.d.ts",
8
+ "react-native": "src/index.ts",
8
9
  "keywords": [
9
10
  "react-native",
10
11
  "ios",
@@ -18,12 +19,13 @@
18
19
  "license": "ISC",
19
20
  "repository": {
20
21
  "type": "git",
21
- "url": "https://github.com/iwater/react-native-nitro-net.git"
22
+ "url": "git+https://github.com/iwater/react-native-nitro-net.git"
22
23
  },
23
24
  "bugs": {
24
25
  "url": "https://github.com/iwater/react-native-nitro-net/issues"
25
26
  },
26
27
  "scripts": {
28
+ "one": "yarn copy-clib && yarn build && yarn pack",
27
29
  "build": "npx nitrogen@0.32.0 && tsc",
28
30
  "prepare": "npm run build",
29
31
  "copy-clib": "rm -rf ios/Frameworks/RustCNet.xcframework && cp -R ../rust_c_net/target/xcframework/RustCNet.xcframework ios/Frameworks/ && mkdir -p android/libs/arm64-v8a android/libs/armeabi-v7a android/libs/x86 android/libs/x86_64 && cp ../rust_c_net/target/aarch64-linux-android/release/librust_c_net.so android/libs/arm64-v8a/ && cp ../rust_c_net/target/armv7-linux-androideabi/release/librust_c_net.so android/libs/armeabi-v7a/ && cp ../rust_c_net/target/i686-linux-android/release/librust_c_net.so android/libs/x86/ && cp ../rust_c_net/target/x86_64-linux-android/release/librust_c_net.so android/libs/x86_64/ && cp ../rust_c_net/include/NetBindings.hpp cpp/",
@@ -32,7 +34,7 @@
32
34
  },
33
35
  "dependencies": {
34
36
  "eventemitter3": "^5.0.1",
35
- "react-native-nitro-buffer": "^0.0.11",
37
+ "react-native-nitro-buffer": "^0.0.13",
36
38
  "readable-stream": "^4.7.0"
37
39
  },
38
40
  "devDependencies": {
@@ -56,4 +58,4 @@
56
58
  "nitrogen/",
57
59
  "*.podspec"
58
60
  ]
59
- }
61
+ }
@@ -34,9 +34,7 @@ Pod::Spec.new do |s|
34
34
  "\"$(PODS_TARGET_SRCROOT)/nitrogen/generated/shared\"",
35
35
  "\"$(PODS_TARGET_SRCROOT)/nitrogen/generated/ios/c++\"",
36
36
  "\"$(PODS_TARGET_SRCROOT)/nitrogen/generated/ios\"",
37
- "\"$(PODS_TARGET_SRCROOT)/cpp\"",
38
- "\"$(PODS_TARGET_SRCROOT)/ios/Frameworks/RustCNet.xcframework/ios-arm64/RustCNet.framework/Headers\"",
39
- "\"$(PODS_TARGET_SRCROOT)/ios/Frameworks/RustCNet.xcframework/ios-arm64_x86_64-simulator/RustCNet.framework/Headers\""
37
+ "\"$(PODS_TARGET_SRCROOT)/cpp\""
40
38
  ],
41
39
  "OTHER_SWIFT_FLAGS" => "-cxx-interoperability-mode=default"
42
40
  }
package/src/Net.nitro.ts CHANGED
@@ -19,13 +19,29 @@ export enum NetSocketEvent {
19
19
  DRAIN = 5,
20
20
  TIMEOUT = 7,
21
21
  LOOKUP = 8,
22
- DEBUG = 9
22
+ SESSION = 9,
23
+ KEYLOG = 10,
24
+ OCSP = 11
23
25
  }
24
26
 
25
27
  export interface NetSocketDriver extends HybridObject<{ ios: 'swift', android: 'kotlin' }> {
26
28
  readonly id: number
27
29
  connect(host: string, port: number): void
30
+ connectTLS(host: string, port: number, serverName?: string, rejectUnauthorized?: boolean): void
31
+ connectTLSWithContext(host: string, port: number, serverName?: string, rejectUnauthorized?: boolean, secureContextId?: number): void
32
+ getAuthorizationError(): string | undefined
33
+ getProtocol(): string | undefined
34
+ getCipher(): string | undefined
35
+ getALPN(): string | undefined
36
+ getPeerCertificateJSON(): string | undefined
37
+ getEphemeralKeyInfo(): string | undefined
38
+ getSharedSigalgs(): string | undefined
39
+ isSessionReused(): boolean
40
+ getSession(): ArrayBuffer | undefined
41
+ setSession(session: ArrayBuffer): void
28
42
  connectUnix(path: string): void
43
+ connectUnixTLS(path: string, serverName?: string, rejectUnauthorized?: boolean): void
44
+ connectUnixTLSWithContext(path: string, serverName?: string, rejectUnauthorized?: boolean, secureContextId?: number): void
29
45
  write(data: ArrayBuffer): void
30
46
  pause(): void
31
47
  resume(): void
@@ -33,6 +49,9 @@ export interface NetSocketDriver extends HybridObject<{ ios: 'swift', android: '
33
49
  setTimeout(timeout: number): void
34
50
  destroy(): void
35
51
  resetAndDestroy(): void
52
+ enableKeylog(): void
53
+ enableTrace(): void
54
+ exportKeyingMaterial(length: number, label: string, context?: ArrayBuffer): ArrayBuffer | undefined
36
55
  setNoDelay(enable: boolean): void
37
56
  setKeepAlive(enable: boolean, delay: number): void
38
57
  getLocalAddress(): string
@@ -50,7 +69,9 @@ export enum NetServerEvent {
50
69
  export interface NetServerDriver extends HybridObject<{ ios: 'swift', android: 'kotlin' }> {
51
70
  onEvent: (event: number, data: ArrayBuffer) => void
52
71
  listen(port: number, backlog?: number, ipv6Only?: boolean, reusePort?: boolean): void
72
+ listenTLS(port: number, secureContextId: number, backlog?: number, ipv6Only?: boolean, reusePort?: boolean): void
53
73
  listenUnix(path: string, backlog?: number): void
74
+ listenTLSUnix(path: string, secureContextId: number, backlog?: number): void
54
75
  /**
55
76
  * Listen on an existing file descriptor (handle)
56
77
  * @param fd File descriptor of an already-bound TCP listener
@@ -62,6 +83,15 @@ export interface NetServerDriver extends HybridObject<{ ios: 'swift', android: '
62
83
  close(): void
63
84
  }
64
85
 
86
+ export interface HttpParser extends HybridObject<{ ios: 'swift', android: 'kotlin' }> {
87
+ /**
88
+ * Feed data to the parser
89
+ * @param data Raw byte data from the network
90
+ * @returns JSON string of the parsed message if complete, empty string if partial, or error message starting with 'ERROR:'
91
+ */
92
+ feed(data: ArrayBuffer): string
93
+ }
94
+
65
95
  /**
66
96
  * Runtime configuration for the network module
67
97
  */
@@ -71,11 +101,24 @@ export interface NetConfig {
71
101
  * 0 = use CPU core count (default)
72
102
  */
73
103
  workerThreads?: number
104
+ /**
105
+ * Whether to enable verbose debug logging
106
+ */
107
+ debug?: boolean
74
108
  }
75
109
 
76
110
  export interface NetDriver extends HybridObject<{ ios: 'swift', android: 'kotlin' }> {
77
111
  createSocket(id?: string): NetSocketDriver
78
112
  createServer(): NetServerDriver
113
+ createHttpParser(mode: number): HttpParser
114
+ createSecureContext(cert: string, key: string, passphrase?: string): number
115
+ createEmptySecureContext(): number
116
+ addCACertToSecureContext(scId: number, ca: string): void
117
+ addContextToSecureContext(scId: number, hostname: string, cert: string, key: string, passphrase?: string): void
118
+ setPFXToSecureContext(scId: number, pfx: ArrayBuffer, passphrase?: string): void
119
+ setOCSPResponseToSecureContext(scId: number, ocsp: ArrayBuffer): void
120
+ getTicketKeys(scId: number): ArrayBuffer | undefined
121
+ setTicketKeys(scId: number, keys: ArrayBuffer): void
79
122
  /**
80
123
  * Initialize the network module with custom configuration
81
124
  * Must be called before any other network operations