react-native-nitro-net 0.4.1 → 0.4.3

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 (88) hide show
  1. package/android/libs/arm64-v8a/librust_c_net.so +0 -0
  2. package/android/libs/armeabi-v7a/librust_c_net.so +0 -0
  3. package/android/libs/x86/librust_c_net.so +0 -0
  4. package/android/libs/x86_64/librust_c_net.so +0 -0
  5. package/cpp/HybridHttpParser.hpp +44 -16
  6. package/cpp/NetBindings.hpp +192 -96
  7. package/cpp/NetManager.hpp +16 -10
  8. package/ios/Frameworks/RustCNet.xcframework/Info.plist +5 -5
  9. package/ios/Frameworks/RustCNet.xcframework/ios-arm64/RustCNet.framework/RustCNet +0 -0
  10. package/ios/Frameworks/RustCNet.xcframework/ios-arm64_x86_64-simulator/RustCNet.framework/RustCNet +0 -0
  11. package/lib/Logger.d.ts +16 -0
  12. package/lib/Logger.d.ts.map +1 -0
  13. package/lib/Logger.js +28 -0
  14. package/lib/Net.nitro.d.ts +6 -2
  15. package/lib/Net.nitro.d.ts.map +1 -1
  16. package/lib/http.d.ts.map +1 -1
  17. package/lib/http.js +38 -23
  18. package/lib/net.d.ts +1 -2
  19. package/lib/net.d.ts.map +1 -1
  20. package/lib/net.js +22 -22
  21. package/lib/tls.d.ts.map +1 -1
  22. package/lib/tls.js +3 -5
  23. package/nitrogen/generated/android/RustCNet+autolinking.cmake +1 -1
  24. package/nitrogen/generated/android/RustCNet+autolinking.gradle +1 -1
  25. package/nitrogen/generated/android/RustCNetOnLoad.cpp +27 -22
  26. package/nitrogen/generated/android/RustCNetOnLoad.hpp +14 -5
  27. package/nitrogen/generated/android/c++/JFunc_void_double_std__shared_ptr_ArrayBuffer_.hpp +1 -1
  28. package/nitrogen/generated/android/c++/JHttpParsedMessage.hpp +64 -0
  29. package/nitrogen/generated/android/c++/JHybridHttpParserSpec.cpp +28 -23
  30. package/nitrogen/generated/android/c++/JHybridHttpParserSpec.hpp +21 -23
  31. package/nitrogen/generated/android/c++/JHybridNetDriverSpec.cpp +35 -34
  32. package/nitrogen/generated/android/c++/JHybridNetDriverSpec.hpp +20 -22
  33. package/nitrogen/generated/android/c++/JHybridNetServerDriverSpec.cpp +31 -30
  34. package/nitrogen/generated/android/c++/JHybridNetServerDriverSpec.hpp +20 -22
  35. package/nitrogen/generated/android/c++/JHybridNetSocketDriverSpec.cpp +53 -52
  36. package/nitrogen/generated/android/c++/JHybridNetSocketDriverSpec.hpp +20 -22
  37. package/nitrogen/generated/android/c++/JNetConfig.hpp +1 -1
  38. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/Func_void_double_std__shared_ptr_ArrayBuffer_.kt +1 -1
  39. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HttpParsedMessage.kt +41 -0
  40. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridHttpParserSpec.kt +15 -18
  41. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridNetDriverSpec.kt +16 -19
  42. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridNetServerDriverSpec.kt +16 -19
  43. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridNetSocketDriverSpec.kt +16 -19
  44. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/NetConfig.kt +1 -1
  45. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/RustCNetOnLoad.kt +1 -1
  46. package/nitrogen/generated/ios/RustCNet+autolinking.rb +1 -1
  47. package/nitrogen/generated/ios/RustCNet-Swift-Cxx-Bridge.cpp +1 -1
  48. package/nitrogen/generated/ios/RustCNet-Swift-Cxx-Bridge.hpp +17 -5
  49. package/nitrogen/generated/ios/RustCNet-Swift-Cxx-Umbrella.hpp +4 -1
  50. package/nitrogen/generated/ios/RustCNetAutolinking.mm +1 -1
  51. package/nitrogen/generated/ios/RustCNetAutolinking.swift +5 -1
  52. package/nitrogen/generated/ios/c++/HybridHttpParserSpecSwift.cpp +1 -1
  53. package/nitrogen/generated/ios/c++/HybridHttpParserSpecSwift.hpp +12 -2
  54. package/nitrogen/generated/ios/c++/HybridNetDriverSpecSwift.cpp +1 -1
  55. package/nitrogen/generated/ios/c++/HybridNetDriverSpecSwift.hpp +7 -1
  56. package/nitrogen/generated/ios/c++/HybridNetServerDriverSpecSwift.cpp +1 -1
  57. package/nitrogen/generated/ios/c++/HybridNetServerDriverSpecSwift.hpp +7 -1
  58. package/nitrogen/generated/ios/c++/HybridNetSocketDriverSpecSwift.cpp +1 -1
  59. package/nitrogen/generated/ios/c++/HybridNetSocketDriverSpecSwift.hpp +7 -1
  60. package/nitrogen/generated/ios/swift/Func_void_double_std__shared_ptr_ArrayBuffer_.swift +1 -2
  61. package/nitrogen/generated/ios/swift/HttpParsedMessage.swift +47 -0
  62. package/nitrogen/generated/ios/swift/HybridHttpParserSpec.swift +4 -5
  63. package/nitrogen/generated/ios/swift/HybridHttpParserSpec_cxx.swift +13 -6
  64. package/nitrogen/generated/ios/swift/HybridNetDriverSpec.swift +3 -4
  65. package/nitrogen/generated/ios/swift/HybridNetDriverSpec_cxx.swift +9 -2
  66. package/nitrogen/generated/ios/swift/HybridNetServerDriverSpec.swift +3 -4
  67. package/nitrogen/generated/ios/swift/HybridNetServerDriverSpec_cxx.swift +49 -7
  68. package/nitrogen/generated/ios/swift/HybridNetSocketDriverSpec.swift +3 -4
  69. package/nitrogen/generated/ios/swift/HybridNetSocketDriverSpec_cxx.swift +25 -4
  70. package/nitrogen/generated/ios/swift/NetConfig.swift +9 -3
  71. package/nitrogen/generated/shared/c++/HttpParsedMessage.hpp +89 -0
  72. package/nitrogen/generated/shared/c++/HybridHttpParserSpec.cpp +1 -1
  73. package/nitrogen/generated/shared/c++/HybridHttpParserSpec.hpp +5 -4
  74. package/nitrogen/generated/shared/c++/HybridNetDriverSpec.cpp +1 -1
  75. package/nitrogen/generated/shared/c++/HybridNetDriverSpec.hpp +1 -1
  76. package/nitrogen/generated/shared/c++/HybridNetServerDriverSpec.cpp +1 -1
  77. package/nitrogen/generated/shared/c++/HybridNetServerDriverSpec.hpp +1 -1
  78. package/nitrogen/generated/shared/c++/HybridNetSocketDriverSpec.cpp +1 -1
  79. package/nitrogen/generated/shared/c++/HybridNetSocketDriverSpec.hpp +1 -1
  80. package/nitrogen/generated/shared/c++/HybridNitroBufferSpec.cpp +1 -1
  81. package/nitrogen/generated/shared/c++/HybridNitroBufferSpec.hpp +1 -1
  82. package/nitrogen/generated/shared/c++/NetConfig.hpp +1 -1
  83. package/package.json +4 -5
  84. package/src/Logger.ts +31 -0
  85. package/src/Net.nitro.ts +6 -2
  86. package/src/http.ts +42 -25
  87. package/src/net.ts +23 -22
  88. package/src/tls.ts +3 -5
package/lib/http.js CHANGED
@@ -1,14 +1,12 @@
1
1
  import { Writable, Readable } from 'readable-stream';
2
2
  import { EventEmitter } from 'eventemitter3';
3
+ import { Buffer } from 'react-native-nitro-buffer';
3
4
  import { Driver } from './Driver';
4
- import { Socket, isVerbose } from './net';
5
+ import { Socket } from './net';
5
6
  import { TLSSocket } from './tls';
6
- import { Buffer } from 'react-native-nitro-buffer';
7
+ import { debugLog as loggerDebugLog } from './Logger';
7
8
  function debugLog(message) {
8
- if (isVerbose()) {
9
- const timestamp = new Date().toISOString().split('T')[1].split('Z')[0];
10
- debugLog(`[HTTP DEBUG ${timestamp}] ${message}`);
11
- }
9
+ loggerDebugLog('HTTP', message);
12
10
  }
13
11
  // ========== STATUS_CODES ==========
14
12
  export const STATUS_CODES = {
@@ -125,9 +123,6 @@ export class OutgoingMessage extends Writable {
125
123
  this._sendHeadersSent = false;
126
124
  this.aborted = false;
127
125
  this._trailers = null;
128
- this.once('finish', () => {
129
- this.emit('close');
130
- });
131
126
  }
132
127
  destroy(error) {
133
128
  super.destroy(error);
@@ -285,6 +280,15 @@ export class ServerResponse extends OutgoingMessage {
285
280
  super();
286
281
  this.statusCode = 200;
287
282
  this.socket = socket;
283
+ const onClose = () => {
284
+ if (this.socket) {
285
+ this.socket.removeListener('close', onClose);
286
+ }
287
+ this.removeListener('finish', onClose);
288
+ this.emit('close');
289
+ };
290
+ this.once('finish', onClose);
291
+ this.socket.once('close', onClose);
288
292
  }
289
293
  writeHead(statusCode, statusMessage, headers) {
290
294
  if (this.headersSent)
@@ -403,14 +407,18 @@ export class Server extends EventEmitter {
403
407
  }
404
408
  const onData = (data) => {
405
409
  const handleParsedResult = (result) => {
406
- if (result.startsWith('ERROR:')) {
410
+ const metadata = result.metadata;
411
+ if (metadata.startsWith('ERROR:')) {
407
412
  if (headersTimer)
408
413
  clearTimeout(headersTimer);
409
- this.emit('error', new Error(result));
414
+ this.emit('error', new Error(metadata));
410
415
  socket.destroy();
411
416
  return;
412
417
  }
413
- const parsed = JSON.parse(result);
418
+ const parsed = JSON.parse(metadata);
419
+ if (result.body) {
420
+ parsed.body = Buffer.from(result.body);
421
+ }
414
422
  if (parsed.is_headers) {
415
423
  if (headersTimer) {
416
424
  clearTimeout(headersTimer);
@@ -490,14 +498,15 @@ export class Server extends EventEmitter {
490
498
  };
491
499
  let input = data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
492
500
  let iterations = 0;
493
- const maxIterations = 100; // Safety limit
501
+ const maxIterations = 2000; // Safety limit
494
502
  while (iterations < maxIterations) {
495
503
  iterations++;
496
504
  const result = parser.feed(input);
497
- if (!result || result === '' || result.startsWith('ERROR:')) {
505
+ const metadata = result.metadata;
506
+ if (!metadata || metadata === '' || metadata.startsWith('ERROR:')) {
498
507
  // Empty result (partial) or error - exit loop
499
- if (result && result.startsWith('ERROR:')) {
500
- debugLog(`[HTTP] Server: Parser error: ${result}`);
508
+ if (metadata && metadata.startsWith('ERROR:')) {
509
+ debugLog(`[HTTP] Server: Parser error: ${metadata}`);
501
510
  }
502
511
  break;
503
512
  }
@@ -884,12 +893,16 @@ export class ClientRequest extends OutgoingMessage {
884
893
  const parser = Driver.createHttpParser(1); // 1 = Response mode
885
894
  const onData = (data) => {
886
895
  const handleParsedResult = (result) => {
887
- if (result.startsWith('ERROR:')) {
888
- this.emit('error', new Error(result));
896
+ const metadata = result.metadata;
897
+ if (metadata.startsWith('ERROR:')) {
898
+ this.emit('error', new Error(metadata));
889
899
  this.socket.destroy();
890
900
  return;
891
901
  }
892
- const parsed = JSON.parse(result);
902
+ const parsed = JSON.parse(metadata);
903
+ if (result.body) {
904
+ parsed.body = Buffer.from(result.body);
905
+ }
893
906
  debugLog(`[HTTP] _connect: Parser result: ${parsed.is_headers ? 'HEADERS' : 'DATA'}${parsed.complete ? ' (COMPLETE)' : ''}`);
894
907
  if (parsed.is_headers) {
895
908
  const status = parsed.status || 0;
@@ -948,14 +961,15 @@ export class ClientRequest extends OutgoingMessage {
948
961
  };
949
962
  let input = data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
950
963
  let iterations = 0;
951
- const maxIterations = 100; // Safety limit
964
+ const maxIterations = 2000; // Safety limit
952
965
  while (iterations < maxIterations) {
953
966
  iterations++;
954
967
  const result = parser.feed(input);
955
- if (!result || result === '' || result.startsWith('ERROR:')) {
968
+ const metadata = result.metadata;
969
+ if (!metadata || metadata === '' || metadata.startsWith('ERROR:')) {
956
970
  // Empty result (partial) or error - exit loop
957
- if (result && result.startsWith('ERROR:')) {
958
- debugLog(`[HTTP] ClientRequest: Parser error: ${result}`);
971
+ if (metadata && metadata.startsWith('ERROR:')) {
972
+ debugLog(`[HTTP] ClientRequest: Parser error: ${metadata}`);
959
973
  }
960
974
  break;
961
975
  }
@@ -998,6 +1012,7 @@ export class ClientRequest extends OutgoingMessage {
998
1012
  this._cleanupSocket();
999
1013
  if (socket)
1000
1014
  agent.releaseSocket(socket, this._options);
1015
+ this.emit('close');
1001
1016
  }
1002
1017
  _flushPendingWrites() {
1003
1018
  if (!this.socket)
package/lib/net.d.ts CHANGED
@@ -1,11 +1,10 @@
1
1
  import { Duplex, DuplexOptions } from 'readable-stream';
2
2
  import { EventEmitter } from 'eventemitter3';
3
3
  import type { NetSocketDriver, NetConfig } from './Net.nitro';
4
+ import { isVerbose, setVerbose } from './Logger';
4
5
  declare function isIP(input: string): number;
5
6
  declare function isIPv4(input: string): boolean;
6
7
  declare function isIPv6(input: string): boolean;
7
- declare function isVerbose(): boolean;
8
- declare function setVerbose(enabled: boolean): void;
9
8
  declare function getDefaultAutoSelectFamily(): number;
10
9
  declare function setDefaultAutoSelectFamily(family: number): void;
11
10
  /**
package/lib/net.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"net.d.ts","sourceRoot":"","sources":["../src/net.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,OAAO,KAAK,EAAE,eAAe,EAAmB,SAAS,EAAE,MAAM,aAAa,CAAA;AAQ9E,iBAAS,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOnC;AAED,iBAAS,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEtC;AAED,iBAAS,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEtC;AASD,iBAAS,SAAS,IAAI,OAAO,CAE5B;AAED,iBAAS,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAE1C;AASD,iBAAS,0BAA0B,IAAI,MAAM,CAE5C;AAED,iBAAS,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAGxD;AAYD;;;;;;;;;;;;;;GAcG;AACH,iBAAS,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAM/C;AASD,MAAM,WAAW,oBAAoB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,aAAa;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,OAAO,GAAE,oBAAyB;IAO9C;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;CAoCzD;AAMD,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3B;AAED,qBAAa,SAAS;IAClB,OAAO,CAAC,MAAM,CAAkE;IAEhF,wDAAwD;IACxD,IAAI,KAAK,IAAI,aAAa,EAAE,CAU3B;IAED,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI3D,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIpE,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAItE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAsBzD;;OAEG;IACH,MAAM,IAAI,aAAa,EAAE;IAIzB;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,SAAS;IAcjD;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS;CAGzD;AAUD,MAAM,WAAW,aAAc,SAAQ,aAAa;IAChD,EAAE,CAAC,EAAE,GAAG,CAAC;IACT,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,MAAO,SAAQ,MAAM;IAC9B,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,SAAS,CAAC;IACxC,UAAU,EAAE,OAAO,CAAS;IACnC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAS;IACtC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAS;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAK;IACtB,YAAY,EAAE,MAAM,CAAK;IACzB,kCAAkC,EAAE,MAAM,EAAE,CAAM;IACzD,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAa;IAE7B,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,UAAU,IAAI,MAAM,CAWvB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;gBACW,OAAO,CAAC,EAAE,aAAa;IAmCnC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAapE,OAAO,CAAC,YAAY;IA0GpB,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IASnE,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,kBAAkB,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAmC5D,OAAO,CAAC,QAAQ;IAwBhB,OAAO,CAAC,YAAY;IAsBpB,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAC1B,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IACtC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAaxD,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI;IAgBpF,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIzB,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI;IAOtD,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI;IAK7B,QAAQ,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI;IAanE,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAStD;;;OAGG;IACH,KAAK,IAAI,IAAI;IAQb;;OAEG;IACH,MAAM,IAAI,IAAI;IAYd;;OAEG;IACH,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAKnC,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI;IAK3D,GAAG,IAAI,IAAI;IACX,KAAK,IAAI,IAAI;IAEb;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAK3C,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,eAAe,IAAI,IAAI;CAU1B;AAMD,qBAAa,MAAO,SAAQ,YAAY;IACpC,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,YAAY,CAAa;IAEjC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,kBAAkB,CAAkB;IAE5C,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,cAAc,CAAC,KAAK,EAAE,MAAM,EAK/B;IAED,IAAI,iBAAiB,IAAI,OAAO,CAE/B;IAED,IAAI,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAEnC;IAED,IAAI,SAAS,IAAI,OAAO,CAMvB;gBAEW,OAAO,CAAC,EAAE,GAAG,EAAE,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;IA0FxE,GAAG,IAAI,IAAI;IACX,KAAK,IAAI,IAAI;IAGb,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI;IAqEnE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAa7C,OAAO,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAkBnE,cAAc,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;CAGvE;AAMD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,kBAAkB,CAAC,EAAE,MAAM,IAAI,GAAG,MAAM,CAGtF;AAED,eAAO,MAAM,OAAO,yBAAmB,CAAC;AAExC,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,CAEjG;AAGD,OAAO,EACH,IAAI,EACJ,MAAM,EACN,MAAM,EACN,0BAA0B,EAC1B,0BAA0B,EAC1B,SAAS,EACT,UAAU,EACV,cAAc,GACjB,CAAC;AAEF,YAAY,EAAE,SAAS,EAAE,CAAC;;;;;;;;;;;;;;;;;AAE1B,wBAeE"}
1
+ {"version":3,"file":"net.d.ts","sourceRoot":"","sources":["../src/net.ts"],"names":[],"mappings":"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"}
package/lib/net.js CHANGED
@@ -1,8 +1,9 @@
1
1
  import { Duplex } from 'readable-stream';
2
2
  import { EventEmitter } from 'eventemitter3';
3
+ import { Buffer } from 'react-native-nitro-buffer';
3
4
  import { Driver } from './Driver';
4
5
  import { NetSocketEvent, NetServerEvent } from './Net.nitro';
5
- import { Buffer } from 'react-native-nitro-buffer';
6
+ import { isVerbose, setVerbose, debugLog as loggerDebugLog } from './Logger';
6
7
  // -----------------------------------------------------------------------------
7
8
  // Utils
8
9
  // -----------------------------------------------------------------------------
@@ -23,23 +24,25 @@ function isIPv4(input) {
23
24
  function isIPv6(input) {
24
25
  return isIP(input) === 6;
25
26
  }
27
+ /**
28
+ * Decodes an ArrayBuffer to a string.
29
+ * Prioritizes TextDecoder if available, otherwise falls back to Buffer.
30
+ */
31
+ function decodeArrayBuffer(data) {
32
+ if (!data || data.byteLength === 0)
33
+ return '';
34
+ if (typeof TextDecoder !== 'undefined') {
35
+ return new TextDecoder().decode(data);
36
+ }
37
+ return Buffer.from(data).toString();
38
+ }
26
39
  // -----------------------------------------------------------------------------
27
40
  // Global Configuration
28
41
  // -----------------------------------------------------------------------------
29
42
  let _autoSelectFamilyDefault = 4; // Node default is usually 4/6 independent, but we mock it.
30
- let _isVerbose = false;
31
43
  let _isInitialized = false;
32
- function isVerbose() {
33
- return _isVerbose;
34
- }
35
- function setVerbose(enabled) {
36
- _isVerbose = enabled;
37
- }
38
44
  function debugLog(message) {
39
- if (_isVerbose) {
40
- const timestamp = new Date().toISOString().split('T')[1].split('Z')[0];
41
- console.log(`[NET DEBUG ${timestamp}] ${message}`);
42
- }
45
+ loggerDebugLog('NET', message);
43
46
  }
44
47
  function getDefaultAutoSelectFamily() {
45
48
  return _autoSelectFamilyDefault;
@@ -280,9 +283,6 @@ export class Socket extends Duplex {
280
283
  // Do NOT resume here - socket is not connected yet!
281
284
  // resume() will be called after 'connect' event in _connect()
282
285
  }
283
- this.on('finish', () => {
284
- // Writable side finished
285
- });
286
286
  }
287
287
  on(event, listener) {
288
288
  if (event === 'connect' && this._connected) {
@@ -302,11 +302,11 @@ export class Socket extends Duplex {
302
302
  const id = this._driver.id ?? this._driver._id;
303
303
  this._driver.onEvent = (eventType, data) => {
304
304
  this.emit('event', eventType, data);
305
- if (eventType === 3) { // ERROR
306
- const msg = new TextDecoder().decode(data);
305
+ if (eventType === NetSocketEvent.ERROR) {
306
+ const msg = decodeArrayBuffer(data) || 'Unknown error';
307
307
  debugLog(`Socket (id: ${id}) NATIVE ERROR: ${msg}`);
308
308
  }
309
- if (eventType === 9) { // SESSION/DEBUG
309
+ if (eventType === NetSocketEvent.SESSION) { // SESSION/DEBUG
310
310
  debugLog(`Socket (id: ${id}) NATIVE SESSION EVENT RECEIVED`);
311
311
  this.emit('session', data);
312
312
  return;
@@ -334,7 +334,7 @@ export class Socket extends Duplex {
334
334
  break;
335
335
  case NetSocketEvent.ERROR: {
336
336
  this._hadError = true;
337
- const errorMsg = data ? Buffer.from(data).toString() : 'Unknown socket error';
337
+ const errorMsg = decodeArrayBuffer(data) || 'Unknown socket error';
338
338
  const error = new Error(errorMsg);
339
339
  if (this.connecting && this._autoSelectFamily) {
340
340
  // If we were connecting, this is a connection attempt failure
@@ -373,7 +373,7 @@ export class Socket extends Duplex {
373
373
  break;
374
374
  case NetSocketEvent.LOOKUP: {
375
375
  if (data) {
376
- const lookupStr = Buffer.from(data).toString();
376
+ const lookupStr = decodeArrayBuffer(data);
377
377
  const parts = lookupStr.split(',');
378
378
  if (parts.length >= 2) {
379
379
  const [ip, family] = parts;
@@ -676,7 +676,7 @@ export class Server extends EventEmitter {
676
676
  this._driver.onEvent = (eventType, data) => {
677
677
  switch (eventType) {
678
678
  case NetServerEvent.CONNECTION: {
679
- const payload = data ? Buffer.from(data).toString() : '';
679
+ const payload = decodeArrayBuffer(data);
680
680
  if (payload === 'success') {
681
681
  this.emit('listening');
682
682
  }
@@ -729,7 +729,7 @@ export class Server extends EventEmitter {
729
729
  break;
730
730
  }
731
731
  case NetServerEvent.ERROR:
732
- this.emit('error', new Error(data ? Buffer.from(data).toString() : 'Unknown server error'));
732
+ this.emit('error', new Error(decodeArrayBuffer(data) || 'Unknown server error'));
733
733
  break;
734
734
  case NetServerEvent.DEBUG: {
735
735
  debugLog(`Server NATIVE SESSION/DEBUG EVENT RECEIVED`);
package/lib/tls.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tls.d.ts","sourceRoot":"","sources":["../src/tls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tls.d.ts","sourceRoot":"","sources":["../src/tls.ts"],"names":[],"mappings":"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"}
package/lib/tls.js CHANGED
@@ -1,10 +1,8 @@
1
- import { Socket, Server as NetServer, isVerbose } from './net';
1
+ import { Socket, Server as NetServer } from './net';
2
2
  import { Driver } from './Driver';
3
+ import { debugLog as loggerDebugLog } from './Logger';
3
4
  function debugLog(message) {
4
- if (isVerbose()) {
5
- const timestamp = new Date().toISOString().split('T')[1].split('Z')[0];
6
- console.log(`[NET DEBUG ${timestamp}] ${message}`);
7
- }
5
+ loggerDebugLog('TLS', message);
8
6
  }
9
7
  export const DEFAULT_MIN_VERSION = 'TLSv1.2';
10
8
  export const DEFAULT_MAX_VERSION = 'TLSv1.3';
@@ -2,7 +2,7 @@
2
2
  # RustCNet+autolinking.cmake
3
3
  # This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  # https://github.com/mrousavy/nitro
5
- # Copyright © 2026 Marc Rousavy @ Margelo
5
+ # Copyright © Marc Rousavy @ Margelo
6
6
  #
7
7
 
8
8
  # This is a CMake file that adds all files generated by Nitrogen
@@ -2,7 +2,7 @@
2
2
  /// RustCNet+autolinking.gradle
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  /// This is a Gradle file that adds all files generated by Nitrogen
@@ -2,7 +2,7 @@
2
2
  /// RustCNetOnLoad.cpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #ifndef BUILDING_RUSTCNET_WITH_GENERATED_CMAKE_PROJECT
@@ -25,29 +25,34 @@
25
25
  namespace margelo::nitro::net {
26
26
 
27
27
  int initialize(JavaVM* vm) {
28
+ return facebook::jni::initialize(vm, []() {
29
+ ::margelo::nitro::net::registerAllNatives();
30
+ });
31
+ }
32
+
33
+
34
+
35
+ void registerAllNatives() {
28
36
  using namespace margelo::nitro;
29
37
  using namespace margelo::nitro::net;
30
- using namespace facebook;
31
-
32
- return facebook::jni::initialize(vm, [] {
33
- // Register native JNI methods
34
- margelo::nitro::net::JHybridNetSocketDriverSpec::registerNatives();
35
- margelo::nitro::net::JFunc_void_double_std__shared_ptr_ArrayBuffer__cxx::registerNatives();
36
- margelo::nitro::net::JHybridNetServerDriverSpec::registerNatives();
37
- margelo::nitro::net::JHybridHttpParserSpec::registerNatives();
38
- margelo::nitro::net::JHybridNetDriverSpec::registerNatives();
39
-
40
- // Register Nitro Hybrid Objects
41
- HybridObjectRegistry::registerHybridObjectConstructor(
42
- "NetDriver",
43
- []() -> std::shared_ptr<HybridObject> {
44
- static_assert(std::is_default_constructible_v<HybridNetDriver>,
45
- "The HybridObject \"HybridNetDriver\" is not default-constructible! "
46
- "Create a public constructor that takes zero arguments to be able to autolink this HybridObject.");
47
- return std::make_shared<HybridNetDriver>();
48
- }
49
- );
50
- });
38
+
39
+ // Register native JNI methods
40
+ margelo::nitro::net::JHybridNetSocketDriverSpec::CxxPart::registerNatives();
41
+ margelo::nitro::net::JFunc_void_double_std__shared_ptr_ArrayBuffer__cxx::registerNatives();
42
+ margelo::nitro::net::JHybridNetServerDriverSpec::CxxPart::registerNatives();
43
+ margelo::nitro::net::JHybridHttpParserSpec::CxxPart::registerNatives();
44
+ margelo::nitro::net::JHybridNetDriverSpec::CxxPart::registerNatives();
45
+
46
+ // Register Nitro Hybrid Objects
47
+ HybridObjectRegistry::registerHybridObjectConstructor(
48
+ "NetDriver",
49
+ []() -> std::shared_ptr<HybridObject> {
50
+ static_assert(std::is_default_constructible_v<HybridNetDriver>,
51
+ "The HybridObject \"HybridNetDriver\" is not default-constructible! "
52
+ "Create a public constructor that takes zero arguments to be able to autolink this HybridObject.");
53
+ return std::make_shared<HybridNetDriver>();
54
+ }
55
+ );
51
56
  }
52
57
 
53
58
  } // namespace margelo::nitro::net
@@ -2,24 +2,33 @@
2
2
  /// RustCNetOnLoad.hpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #include <jni.h>
9
+ #include <functional>
9
10
  #include <NitroModules/NitroDefines.hpp>
10
11
 
11
12
  namespace margelo::nitro::net {
12
13
 
14
+ [[deprecated("Use registerNatives() instead.")]]
15
+ int initialize(JavaVM* vm);
16
+
13
17
  /**
14
- * Initializes the native (C++) part of RustCNet, and autolinks all Hybrid Objects.
15
- * Call this in your `JNI_OnLoad` function (probably inside `cpp-adapter.cpp`).
18
+ * Register the native (C++) part of RustCNet, and autolinks all Hybrid Objects.
19
+ * Call this in your `JNI_OnLoad` function (probably inside `cpp-adapter.cpp`),
20
+ * inside a `facebook::jni::initialize(vm, ...)` call.
16
21
  * Example:
17
22
  * ```cpp (cpp-adapter.cpp)
18
23
  * JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) {
19
- * return margelo::nitro::net::initialize(vm);
24
+ * return facebook::jni::initialize(vm, []() {
25
+ * // register all RustCNet HybridObjects
26
+ * margelo::nitro::net::registerNatives();
27
+ * // any other custom registrations go here.
28
+ * });
20
29
  * }
21
30
  * ```
22
31
  */
23
- int initialize(JavaVM* vm);
32
+ void registerAllNatives();
24
33
 
25
34
  } // namespace margelo::nitro::net
@@ -2,7 +2,7 @@
2
2
  /// JFunc_void_double_std__shared_ptr_ArrayBuffer_.hpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #pragma once
@@ -0,0 +1,64 @@
1
+ ///
2
+ /// JHttpParsedMessage.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+ #include "HttpParsedMessage.hpp"
12
+
13
+ #include <NitroModules/ArrayBuffer.hpp>
14
+ #include <NitroModules/JArrayBuffer.hpp>
15
+ #include <optional>
16
+ #include <string>
17
+
18
+ namespace margelo::nitro::net {
19
+
20
+ using namespace facebook;
21
+
22
+ /**
23
+ * The C++ JNI bridge between the C++ struct "HttpParsedMessage" and the the Kotlin data class "HttpParsedMessage".
24
+ */
25
+ struct JHttpParsedMessage final: public jni::JavaClass<JHttpParsedMessage> {
26
+ public:
27
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/net/HttpParsedMessage;";
28
+
29
+ public:
30
+ /**
31
+ * Convert this Java/Kotlin-based struct to the C++ struct HttpParsedMessage by copying all values to C++.
32
+ */
33
+ [[maybe_unused]]
34
+ [[nodiscard]]
35
+ HttpParsedMessage toCpp() const {
36
+ static const auto clazz = javaClassStatic();
37
+ static const auto fieldMetadata = clazz->getField<jni::JString>("metadata");
38
+ jni::local_ref<jni::JString> metadata = this->getFieldValue(fieldMetadata);
39
+ static const auto fieldBody = clazz->getField<JArrayBuffer::javaobject>("body");
40
+ jni::local_ref<JArrayBuffer::javaobject> body = this->getFieldValue(fieldBody);
41
+ return HttpParsedMessage(
42
+ metadata->toStdString(),
43
+ body != nullptr ? std::make_optional(body->cthis()->getArrayBuffer()) : std::nullopt
44
+ );
45
+ }
46
+
47
+ public:
48
+ /**
49
+ * Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java.
50
+ */
51
+ [[maybe_unused]]
52
+ static jni::local_ref<JHttpParsedMessage::javaobject> fromCpp(const HttpParsedMessage& value) {
53
+ using JSignature = JHttpParsedMessage(jni::alias_ref<jni::JString>, jni::alias_ref<JArrayBuffer::javaobject>);
54
+ static const auto clazz = javaClassStatic();
55
+ static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
56
+ return create(
57
+ clazz,
58
+ jni::make_jstring(value.metadata),
59
+ value.body.has_value() ? JArrayBuffer::wrap(value.body.value()) : nullptr
60
+ );
61
+ }
62
+ };
63
+
64
+ } // namespace margelo::nitro::net
@@ -2,53 +2,58 @@
2
2
  /// JHybridHttpParserSpec.cpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #include "JHybridHttpParserSpec.hpp"
9
9
 
10
+ // Forward declaration of `HttpParsedMessage` to properly resolve imports.
11
+ namespace margelo::nitro::net { struct HttpParsedMessage; }
10
12
 
11
-
13
+ #include "HttpParsedMessage.hpp"
14
+ #include "JHttpParsedMessage.hpp"
12
15
  #include <string>
13
16
  #include <NitroModules/ArrayBuffer.hpp>
17
+ #include <optional>
14
18
  #include <NitroModules/JArrayBuffer.hpp>
15
19
 
16
20
  namespace margelo::nitro::net {
17
21
 
18
- jni::local_ref<JHybridHttpParserSpec::jhybriddata> JHybridHttpParserSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
19
- return makeCxxInstance(jThis);
22
+ std::shared_ptr<JHybridHttpParserSpec> JHybridHttpParserSpec::JavaPart::getJHybridHttpParserSpec() {
23
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
24
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridHttpParserSpec>(hybridObject);
25
+ if (castHybridObject == nullptr) [[unlikely]] {
26
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridHttpParserSpec!");
27
+ }
28
+ return castHybridObject;
20
29
  }
21
30
 
22
- void JHybridHttpParserSpec::registerNatives() {
23
- registerHybrid({
24
- makeNativeMethod("initHybrid", JHybridHttpParserSpec::initHybrid),
25
- });
26
- }
27
-
28
- size_t JHybridHttpParserSpec::getExternalMemorySize() noexcept {
29
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
30
- return method(_javaPart);
31
+ jni::local_ref<JHybridHttpParserSpec::CxxPart::jhybriddata> JHybridHttpParserSpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
32
+ return makeCxxInstance(jThis);
31
33
  }
32
34
 
33
- void JHybridHttpParserSpec::dispose() noexcept {
34
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
35
- method(_javaPart);
35
+ std::shared_ptr<JHybridObject> JHybridHttpParserSpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
36
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridHttpParserSpec::JavaPart>(javaPart);
37
+ if (castJavaPart == nullptr) [[unlikely]] {
38
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridHttpParserSpec::JavaPart!");
39
+ }
40
+ return std::make_shared<JHybridHttpParserSpec>(castJavaPart);
36
41
  }
37
42
 
38
- std::string JHybridHttpParserSpec::toString() {
39
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
40
- auto javaString = method(_javaPart);
41
- return javaString->toStdString();
43
+ void JHybridHttpParserSpec::CxxPart::registerNatives() {
44
+ registerHybrid({
45
+ makeNativeMethod("initHybrid", JHybridHttpParserSpec::CxxPart::initHybrid),
46
+ });
42
47
  }
43
48
 
44
49
  // Properties
45
50
 
46
51
 
47
52
  // Methods
48
- std::string JHybridHttpParserSpec::feed(const std::shared_ptr<ArrayBuffer>& data) {
49
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>(jni::alias_ref<JArrayBuffer::javaobject> /* data */)>("feed");
53
+ HttpParsedMessage JHybridHttpParserSpec::feed(const std::shared_ptr<ArrayBuffer>& data) {
54
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHttpParsedMessage>(jni::alias_ref<JArrayBuffer::javaobject> /* data */)>("feed");
50
55
  auto __result = method(_javaPart, JArrayBuffer::wrap(data));
51
- return __result->toStdString();
56
+ return __result->toCpp();
52
57
  }
53
58
 
54
59
  } // namespace margelo::nitro::net