react-native-nitro-net 0.3.0 → 0.4.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.
- package/README.md +1 -1
- package/android/CMakeLists.txt +5 -0
- package/android/build.gradle +1 -1
- package/lib/Driver.d.ts +1 -0
- package/lib/Driver.d.ts.map +1 -0
- package/lib/Driver.js +2 -5
- package/lib/Net.nitro.d.ts +1 -0
- package/lib/Net.nitro.d.ts.map +1 -0
- package/lib/Net.nitro.js +4 -7
- package/lib/http.d.ts +2 -1
- package/lib/http.d.ts.map +1 -0
- package/lib/http.js +56 -61
- package/lib/https.d.ts +1 -0
- package/lib/https.d.ts.map +1 -0
- package/lib/https.js +11 -53
- package/lib/index.d.ts +41 -198
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +11 -928
- package/lib/net.d.ts +197 -0
- package/lib/net.d.ts.map +1 -0
- package/lib/net.js +875 -0
- package/lib/tls.d.ts +2 -1
- package/lib/tls.d.ts.map +1 -0
- package/lib/tls.js +35 -51
- package/nitrogen/generated/android/RustCNet+autolinking.cmake +1 -1
- package/nitrogen/generated/android/RustCNet+autolinking.gradle +1 -1
- package/nitrogen/generated/android/RustCNetOnLoad.cpp +1 -1
- package/nitrogen/generated/android/RustCNetOnLoad.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_double_std__shared_ptr_ArrayBuffer_.hpp +1 -1
- package/nitrogen/generated/android/c++/JHybridHttpParserSpec.cpp +1 -1
- package/nitrogen/generated/android/c++/JHybridHttpParserSpec.hpp +1 -1
- package/nitrogen/generated/android/c++/JHybridNetDriverSpec.cpp +1 -1
- package/nitrogen/generated/android/c++/JHybridNetDriverSpec.hpp +1 -1
- package/nitrogen/generated/android/c++/JHybridNetServerDriverSpec.cpp +1 -1
- package/nitrogen/generated/android/c++/JHybridNetServerDriverSpec.hpp +1 -1
- package/nitrogen/generated/android/c++/JHybridNetSocketDriverSpec.cpp +1 -1
- package/nitrogen/generated/android/c++/JHybridNetSocketDriverSpec.hpp +1 -1
- package/nitrogen/generated/android/c++/JNetConfig.hpp +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/Func_void_double_std__shared_ptr_ArrayBuffer_.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridHttpParserSpec.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridNetDriverSpec.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridNetServerDriverSpec.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridNetSocketDriverSpec.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/NetConfig.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/RustCNetOnLoad.kt +1 -1
- package/nitrogen/generated/ios/RustCNet+autolinking.rb +1 -1
- package/nitrogen/generated/ios/RustCNet-Swift-Cxx-Bridge.cpp +1 -1
- package/nitrogen/generated/ios/RustCNet-Swift-Cxx-Bridge.hpp +1 -1
- package/nitrogen/generated/ios/RustCNet-Swift-Cxx-Umbrella.hpp +1 -1
- package/nitrogen/generated/ios/RustCNetAutolinking.mm +1 -1
- package/nitrogen/generated/ios/RustCNetAutolinking.swift +1 -1
- package/nitrogen/generated/ios/c++/HybridHttpParserSpecSwift.cpp +1 -1
- package/nitrogen/generated/ios/c++/HybridHttpParserSpecSwift.hpp +1 -1
- package/nitrogen/generated/ios/c++/HybridNetDriverSpecSwift.cpp +1 -1
- package/nitrogen/generated/ios/c++/HybridNetDriverSpecSwift.hpp +1 -1
- package/nitrogen/generated/ios/c++/HybridNetServerDriverSpecSwift.cpp +1 -1
- package/nitrogen/generated/ios/c++/HybridNetServerDriverSpecSwift.hpp +1 -1
- package/nitrogen/generated/ios/c++/HybridNetSocketDriverSpecSwift.cpp +1 -1
- package/nitrogen/generated/ios/c++/HybridNetSocketDriverSpecSwift.hpp +1 -1
- package/nitrogen/generated/ios/swift/Func_void_double_std__shared_ptr_ArrayBuffer_.swift +1 -1
- package/nitrogen/generated/ios/swift/HybridHttpParserSpec.swift +1 -1
- package/nitrogen/generated/ios/swift/HybridHttpParserSpec_cxx.swift +1 -1
- package/nitrogen/generated/ios/swift/HybridNetDriverSpec.swift +1 -1
- package/nitrogen/generated/ios/swift/HybridNetDriverSpec_cxx.swift +1 -1
- package/nitrogen/generated/ios/swift/HybridNetServerDriverSpec.swift +1 -1
- package/nitrogen/generated/ios/swift/HybridNetServerDriverSpec_cxx.swift +1 -1
- package/nitrogen/generated/ios/swift/HybridNetSocketDriverSpec.swift +1 -1
- package/nitrogen/generated/ios/swift/HybridNetSocketDriverSpec_cxx.swift +1 -1
- package/nitrogen/generated/ios/swift/NetConfig.swift +1 -1
- package/nitrogen/generated/shared/c++/HybridHttpParserSpec.cpp +1 -1
- package/nitrogen/generated/shared/c++/HybridHttpParserSpec.hpp +1 -1
- package/nitrogen/generated/shared/c++/HybridNetDriverSpec.cpp +1 -1
- package/nitrogen/generated/shared/c++/HybridNetDriverSpec.hpp +1 -1
- package/nitrogen/generated/shared/c++/HybridNetServerDriverSpec.cpp +1 -1
- package/nitrogen/generated/shared/c++/HybridNetServerDriverSpec.hpp +1 -1
- package/nitrogen/generated/shared/c++/HybridNetSocketDriverSpec.cpp +1 -1
- package/nitrogen/generated/shared/c++/HybridNetSocketDriverSpec.hpp +1 -1
- package/nitrogen/generated/shared/c++/HybridNitroBufferSpec.cpp +1 -1
- package/nitrogen/generated/shared/c++/HybridNitroBufferSpec.hpp +1 -1
- package/nitrogen/generated/shared/c++/NetConfig.hpp +1 -1
- package/package.json +7 -5
- package/src/http.ts +18 -12
- package/src/https.ts +0 -2
- package/src/index.ts +13 -1005
- package/src/net.ts +1005 -0
- package/src/tls.ts +1 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/// HybridNetServerDriverSpec_cxx.swift
|
|
3
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
4
|
/// https://github.com/mrousavy/nitro
|
|
5
|
-
/// Copyright ©
|
|
5
|
+
/// Copyright © 2026 Marc Rousavy @ Margelo
|
|
6
6
|
///
|
|
7
7
|
|
|
8
8
|
import Foundation
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/// HybridNetSocketDriverSpec_cxx.swift
|
|
3
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
4
|
/// https://github.com/mrousavy/nitro
|
|
5
|
-
/// Copyright ©
|
|
5
|
+
/// Copyright © 2026 Marc Rousavy @ Margelo
|
|
6
6
|
///
|
|
7
7
|
|
|
8
8
|
import Foundation
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/// HybridHttpParserSpec.cpp
|
|
3
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
4
|
/// https://github.com/mrousavy/nitro
|
|
5
|
-
/// Copyright ©
|
|
5
|
+
/// Copyright © 2026 Marc Rousavy @ Margelo
|
|
6
6
|
///
|
|
7
7
|
|
|
8
8
|
#include "HybridHttpParserSpec.hpp"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/// HybridNetDriverSpec.cpp
|
|
3
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
4
|
/// https://github.com/mrousavy/nitro
|
|
5
|
-
/// Copyright ©
|
|
5
|
+
/// Copyright © 2026 Marc Rousavy @ Margelo
|
|
6
6
|
///
|
|
7
7
|
|
|
8
8
|
#include "HybridNetDriverSpec.hpp"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/// HybridNetServerDriverSpec.cpp
|
|
3
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
4
|
/// https://github.com/mrousavy/nitro
|
|
5
|
-
/// Copyright ©
|
|
5
|
+
/// Copyright © 2026 Marc Rousavy @ Margelo
|
|
6
6
|
///
|
|
7
7
|
|
|
8
8
|
#include "HybridNetServerDriverSpec.hpp"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/// HybridNetSocketDriverSpec.cpp
|
|
3
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
4
|
/// https://github.com/mrousavy/nitro
|
|
5
|
-
/// Copyright ©
|
|
5
|
+
/// Copyright © 2026 Marc Rousavy @ Margelo
|
|
6
6
|
///
|
|
7
7
|
|
|
8
8
|
#include "HybridNetSocketDriverSpec.hpp"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/// HybridNitroBufferSpec.cpp
|
|
3
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
4
|
/// https://github.com/mrousavy/nitro
|
|
5
|
-
/// Copyright ©
|
|
5
|
+
/// Copyright © 2026 Marc Rousavy @ Margelo
|
|
6
6
|
///
|
|
7
7
|
|
|
8
8
|
#include "HybridNitroBufferSpec.hpp"
|
package/package.json
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-nitro-net",
|
|
3
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.
|
|
4
|
+
"version": "0.4.0",
|
|
5
|
+
"type": "module",
|
|
5
6
|
"main": "./lib/index.js",
|
|
6
7
|
"module": "./lib/index.js",
|
|
7
8
|
"types": "./lib/index.d.ts",
|
|
@@ -28,13 +29,14 @@
|
|
|
28
29
|
"one": "yarn copy-clib && yarn build && yarn pack",
|
|
29
30
|
"build": "npx nitrogen@0.32.0 && tsc",
|
|
30
31
|
"prepare": "npm run build",
|
|
31
|
-
"copy-clib": "
|
|
32
|
-
"copy-clib-android": "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/",
|
|
33
|
-
"copy-clib-ios": "rm -rf ios/Frameworks/RustCNet.xcframework && cp -R ../rust_c_net/target/xcframework/RustCNet.xcframework ios/Frameworks/"
|
|
32
|
+
"copy-clib": "npm run copy-clib-android && npm run copy-clib-ios && npm run copy-clib-mac",
|
|
33
|
+
"copy-clib-android": "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/",
|
|
34
|
+
"copy-clib-ios": "rm -rf ios/Frameworks/RustCNet.xcframework && cp -R ../rust_c_net/target/xcframework/RustCNet.xcframework ios/Frameworks/",
|
|
35
|
+
"copy-clib-mac": "mkdir -p mac && cp ../rust_c_net/target/release/librust_c_net.a mac/ && cp ../rust_c_net/include/NetBindings.hpp cpp/"
|
|
34
36
|
},
|
|
35
37
|
"dependencies": {
|
|
36
38
|
"eventemitter3": "^5.0.1",
|
|
37
|
-
"react-native-nitro-buffer": "
|
|
39
|
+
"react-native-nitro-buffer": "~0.0.14",
|
|
38
40
|
"readable-stream": "^4.7.0"
|
|
39
41
|
},
|
|
40
42
|
"devDependencies": {
|
package/src/http.ts
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Writable, Readable } from 'readable-stream'
|
|
2
2
|
import { EventEmitter } from 'eventemitter3'
|
|
3
3
|
import { Driver } from './Driver'
|
|
4
|
-
import { Socket, isVerbose } from './
|
|
4
|
+
import { Socket, isVerbose } from './net'
|
|
5
5
|
import { TLSSocket } from './tls'
|
|
6
6
|
import { Buffer } from 'react-native-nitro-buffer'
|
|
7
|
-
import type { HttpParser } from './Net.nitro'
|
|
8
7
|
|
|
9
8
|
function debugLog(message: string) {
|
|
10
9
|
if (isVerbose()) {
|
|
11
10
|
const timestamp = new Date().toISOString().split('T')[1].split('Z')[0];
|
|
12
|
-
|
|
11
|
+
debugLog(`[HTTP DEBUG ${timestamp}] ${message}`);
|
|
13
12
|
}
|
|
14
13
|
}
|
|
15
14
|
|
|
@@ -418,7 +417,7 @@ export class Server extends EventEmitter {
|
|
|
418
417
|
constructor(options?: ServerOptions | ((req: IncomingMessage, res: ServerResponse) => void), requestListener?: (req: IncomingMessage, res: ServerResponse) => void) {
|
|
419
418
|
super();
|
|
420
419
|
// Use net.Server from index.ts
|
|
421
|
-
const { Server: NetServer } = require('./
|
|
420
|
+
const { Server: NetServer } = require('./net');
|
|
422
421
|
this._netServer = new NetServer();
|
|
423
422
|
|
|
424
423
|
let listener: ((req: IncomingMessage, res: ServerResponse) => void) | undefined;
|
|
@@ -573,7 +572,7 @@ export class Server extends EventEmitter {
|
|
|
573
572
|
if (!result || result === '' || result.startsWith('ERROR:')) {
|
|
574
573
|
// Empty result (partial) or error - exit loop
|
|
575
574
|
if (result && result.startsWith('ERROR:')) {
|
|
576
|
-
|
|
575
|
+
debugLog(`[HTTP] Server: Parser error: ${result}`);
|
|
577
576
|
}
|
|
578
577
|
break;
|
|
579
578
|
}
|
|
@@ -987,7 +986,7 @@ export class ClientRequest extends OutgoingMessage {
|
|
|
987
986
|
this.socket = socket;
|
|
988
987
|
this._connected = true;
|
|
989
988
|
this.emit('socket', this.socket);
|
|
990
|
-
|
|
989
|
+
// DO NOT call _sendRequest() here. Headers should only be sent once write() or end() is called.
|
|
991
990
|
this._flushPendingWrites();
|
|
992
991
|
this._attachSocketListeners();
|
|
993
992
|
} else {
|
|
@@ -1005,7 +1004,7 @@ export class ClientRequest extends OutgoingMessage {
|
|
|
1005
1004
|
return;
|
|
1006
1005
|
}
|
|
1007
1006
|
debugLog(`ClientRequest._connect: Socket connected! socket=${!!socket}, socket._driver=${!!(socket as any)._driver}`);
|
|
1008
|
-
|
|
1007
|
+
debugLog(`[HTTP] _connect: Socket connected!`);
|
|
1009
1008
|
this.socket = socket;
|
|
1010
1009
|
this._connected = true;
|
|
1011
1010
|
this.emit('socket', this.socket);
|
|
@@ -1031,7 +1030,7 @@ export class ClientRequest extends OutgoingMessage {
|
|
|
1031
1030
|
return;
|
|
1032
1031
|
}
|
|
1033
1032
|
const parsed = JSON.parse(result);
|
|
1034
|
-
|
|
1033
|
+
debugLog(`[HTTP] _connect: Parser result: ${parsed.is_headers ? 'HEADERS' : 'DATA'}${parsed.complete ? ' (COMPLETE)' : ''}`);
|
|
1035
1034
|
|
|
1036
1035
|
if (parsed.is_headers) {
|
|
1037
1036
|
const status = parsed.status || 0;
|
|
@@ -1103,7 +1102,7 @@ export class ClientRequest extends OutgoingMessage {
|
|
|
1103
1102
|
if (!result || result === '' || result.startsWith('ERROR:')) {
|
|
1104
1103
|
// Empty result (partial) or error - exit loop
|
|
1105
1104
|
if (result && result.startsWith('ERROR:')) {
|
|
1106
|
-
|
|
1105
|
+
debugLog(`[HTTP] ClientRequest: Parser error: ${result}`);
|
|
1107
1106
|
}
|
|
1108
1107
|
break;
|
|
1109
1108
|
}
|
|
@@ -1113,13 +1112,13 @@ export class ClientRequest extends OutgoingMessage {
|
|
|
1113
1112
|
};
|
|
1114
1113
|
|
|
1115
1114
|
const onError = (err: Error) => {
|
|
1116
|
-
|
|
1115
|
+
debugLog(`[HTTP] _connect: Socket error: ${err.message}`);
|
|
1117
1116
|
this.emit('error', err);
|
|
1118
1117
|
this._cleanupSocket();
|
|
1119
1118
|
};
|
|
1120
1119
|
|
|
1121
1120
|
const onClose = () => {
|
|
1122
|
-
|
|
1121
|
+
debugLog(`[HTTP] _connect: Socket closed`);
|
|
1123
1122
|
if (this._res && !this._res.readableEnded) this._res.push(null);
|
|
1124
1123
|
this.emit('close');
|
|
1125
1124
|
this._cleanupSocket();
|
|
@@ -1190,6 +1189,7 @@ export class ClientRequest extends OutgoingMessage {
|
|
|
1190
1189
|
}
|
|
1191
1190
|
|
|
1192
1191
|
_write(chunk: any, encoding: string, callback: (error?: Error | null) => void) {
|
|
1192
|
+
this._hasBody = true;
|
|
1193
1193
|
if (!this._connected) {
|
|
1194
1194
|
this._pendingWrites.push({ chunk, encoding, callback });
|
|
1195
1195
|
return;
|
|
@@ -1199,6 +1199,7 @@ export class ClientRequest extends OutgoingMessage {
|
|
|
1199
1199
|
}
|
|
1200
1200
|
|
|
1201
1201
|
write(chunk: any, encoding?: any, callback?: any): boolean {
|
|
1202
|
+
this._hasBody = true;
|
|
1202
1203
|
if (!this._connected) {
|
|
1203
1204
|
this._pendingWrites.push({ chunk, encoding, callback });
|
|
1204
1205
|
return true;
|
|
@@ -1210,6 +1211,11 @@ export class ClientRequest extends OutgoingMessage {
|
|
|
1210
1211
|
end(chunk?: any, encoding?: any, callback?: any): this {
|
|
1211
1212
|
debugLog(`ClientRequest.end() called, connected=${this._connected}, headersSent=${this.headersSent}`);
|
|
1212
1213
|
if (chunk) {
|
|
1214
|
+
this._hasBody = true;
|
|
1215
|
+
if (!this.headersSent && !this.hasHeader('Content-Length')) {
|
|
1216
|
+
const len = typeof chunk === 'string' ? Buffer.byteLength(chunk, encoding as any) : chunk.length;
|
|
1217
|
+
this.setHeader('Content-Length', len);
|
|
1218
|
+
}
|
|
1213
1219
|
this.write(chunk, encoding);
|
|
1214
1220
|
}
|
|
1215
1221
|
this._ended = true;
|