-
-
Notifications
You must be signed in to change notification settings - Fork 68
Closed
Labels
nitrogenIssue is related to the code-generator "Nitrogen"Issue is related to the code-generator "Nitrogen"
Description
What happened?
Nitrogen used #include <NitroModules/JNICallable.hpp> in /generated/android/c++/JFunc_void_std__string_std__shared_ptr_ArrayBuffer_.hpp
but this file is not found
Nitrogen CLI logs (with --logLevel="debug")
athexweb3@MacBook-Air react-native-quick-p2p % bunx nitrogen --logLevel="debug"
🔧 Loading nitro.json config...
🚀 Nitrogen 0.31.10 runs at ~/Developer/modules/react-native-quick-p2p/packages/react-native-quick-p2p
🔍 Nitrogen found 1 spec in ./src/specs
⏳ Parsing QuickP2P.nitro.ts...
⚙️ Generating specs for HybridObject "Peer"...
shared: Generating C++ code...
C++: Creating HybridPeerSpec.hpp...
C++: Creating HybridPeerSpec.cpp...
ios: Generating Swift code...
Swift: Creating HybridPeerSpec.swift...
Swift: Creating HybridPeerSpec_cxx.swift...
C++: Creating HybridPeerSpecSwift.hpp...
C++: Creating HybridPeerSpecSwift.cpp...
android: Generating Kotlin code...
Kotlin: Creating HybridPeerSpec.kt...
C++: Creating JHybridPeerSpec.hpp...
C++: Creating JHybridPeerSpec.cpp...
⚙️ Generating specs for HybridObject "P2PManager"...
shared: Generating C++ code...
C++: Creating HybridP2PManagerSpec.hpp...
C++: Creating HybridP2PManagerSpec.cpp...
C++: Creating PeerMetadata.hpp...
C++: Creating IdentitySpec.hpp...
ios: Generating Swift code...
Swift: Creating HybridP2PManagerSpec.swift...
Swift: Creating PeerMetadata.swift...
Swift: Creating IdentitySpec.swift...
Swift: Creating Func_void_std__string.swift...
Swift: Creating Func_void_std__string_std__shared_ptr_ArrayBuffer_.swift...
Swift: Creating HybridP2PManagerSpec_cxx.swift...
C++: Creating HybridP2PManagerSpecSwift.hpp...
C++: Creating HybridP2PManagerSpecSwift.cpp...
android: Generating Kotlin code...
Kotlin: Creating HybridP2PManagerSpec.kt...
C++: Creating JHybridP2PManagerSpec.hpp...
C++: Creating JHybridP2PManagerSpec.cpp...
Kotlin: Creating PeerMetadata.kt...
C++: Creating JPeerMetadata.hpp...
Kotlin: Creating IdentitySpec.kt...
C++: Creating JIdentitySpec.hpp...
Kotlin: Creating Func_void_std__string.kt...
C++: Creating JFunc_void_std__string.hpp...
Kotlin: Creating Func_void_std__string_std__shared_ptr_ArrayBuffer_.kt...
C++: Creating JFunc_void_std__string_std__shared_ptr_ArrayBuffer_.hpp...
⛓️ Setting up build configs for autolinking...
Creating autolinking build setup for ios...
Ruby: Creating QuickP2P+autolinking.rb...
C++: Creating QuickP2P-Swift-Cxx-Bridge.hpp...
C++: Creating QuickP2P-Swift-Cxx-Bridge.cpp...
C++: Creating QuickP2P-Swift-Cxx-Umbrella.hpp...
Objective-c++: Creating QuickP2PAutolinking.mm...
Swift: Creating QuickP2PAutolinking.swift...
Creating autolinking build setup for android...
Cmake: Creating QuickP2P+autolinking.cmake...
Gradle: Creating QuickP2P+autolinking.gradle...
C++: Creating QuickP2POnLoad.hpp...
C++: Creating QuickP2POnLoad.cpp...
Kotlin: Creating QuickP2POnLoad.kt...
🎉 Generated 2/2 HybridObjects in 1.0s!
💡 Your code is in ./nitrogen/generated
athexweb3@MacBook-Air react-native-quick-p2p %Nitro Specs (.nitro.ts)
import { type HybridObject } from 'react-native-nitro-modules'
type Platform = { ios: 'swift', android: 'kotlin' }
/**
* Represents a remote device in the P2P Mesh.
*/
export interface Peer extends HybridObject<Platform> {
readonly id: string
readonly deviceName: string
/**
* Sends data explicitly to this peer.
* Uses Transport-level routing (TCP/UDP).
*/
send(data: ArrayBuffer): void
/**
* Disconnects this specific peer link.
*/
disconnect(): void
}
/**
* Represents the identity keys to be injected into the native engine.
*/
export interface IdentitySpec {
privateKey: string; // PEM or Base64
publicKey: string; // PEM or Base64 (Cert/Public Key)
peerId: string; // The derived ID (Base58/Base64)
}
/**
* Represents the metadata of a peer, typically its identity.
*/
export type PeerMetadata = {
id: string;
name: string;
publicKey: string;
topics: string[];
};
/**
* The Central P2P Engine Facade.
* Manages Discovery, Transport, Security, and Routing.
*/
export interface P2PManager extends HybridObject<Platform> {
// Identity Management (Legacy/Internal)
getIdentity(): PeerMetadata;
generateNewIdentity(): PeerMetadata;
// Lifecycle
start(identity?: IdentitySpec): void
stop(): void
// Connectivity
/**
* Initiates a connection to a specific address (IP or BLE UUID).
* Note: This is lower-level. Ideally use Discovery to find peers first.
*/
connect(address: string): void
/**
* Broadcasts data to this Peer ID.
* If Mesh is enabled, this might hop through other peers.
*/
send(peerId: string, data: ArrayBuffer): void
/**
* Retrieves a handle to a connected peer.
*/
getPeer(peerId: string): Peer
// Events (Callback Registration)
// Note: For High-Performance, Nitro allows passing JS function references directly.
// Discovery Events
onPeerFound(callback: (peerId: string) => void): void
onPeerLost(callback: (peerId: string) => void): void
// Transport Events
onPeerConnected(callback: (peerId: string) => void): void
onPeerDisconnected(callback: (peerId: string) => void): void
onMessageReceived(callback: (peerId: string, data: ArrayBuffer) => void): void
}Nitro Modules Version
^0.29.1
Nitrogen Version
^0.29.1
Operating system
MacOS
Additional information
- I have read and followed the Troubleshooting Guide.
- I created a reproduction PR to reproduce this issue here in the nitro repo. (See Contributing for more information)
- I searched for similar issues in this repository and found none.
Metadata
Metadata
Assignees
Labels
nitrogenIssue is related to the code-generator "Nitrogen"Issue is related to the code-generator "Nitrogen"