@annadata/capacitor-mqtt-quic 0.1.7 → 0.1.9
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/AnnadataCapacitorMqttQuic.podspec +2 -2
- package/Package.swift +59 -0
- package/README.md +57 -17
- package/android/NGTCP2_BUILD_INSTRUCTIONS.md +1 -1
- package/android/app/src/main/assets/capacitor.config.json +1 -1
- package/android/build-wolfssl.sh +8 -2
- package/android/build.gradle +4 -1
- package/android/install/nghttp3-android/arm64-v8a/lib/libnghttp3.a +0 -0
- package/android/install/nghttp3-android/arm64-v8a/lib/libnghttp3.so +0 -0
- package/android/install/nghttp3-android/arm64-v8a/lib/pkgconfig/libnghttp3.pc +4 -4
- package/android/install/nghttp3-android/armeabi-v7a/lib/libnghttp3.a +0 -0
- package/android/install/nghttp3-android/armeabi-v7a/lib/libnghttp3.so +0 -0
- package/android/install/nghttp3-android/armeabi-v7a/lib/pkgconfig/libnghttp3.pc +4 -4
- package/android/install/nghttp3-android/x86_64/lib/libnghttp3.a +0 -0
- package/android/install/nghttp3-android/x86_64/lib/libnghttp3.so +0 -0
- package/android/install/nghttp3-android/x86_64/lib/pkgconfig/libnghttp3.pc +4 -4
- package/android/install/ngtcp2-android/arm64-v8a/lib/libngtcp2.a +0 -0
- package/android/install/ngtcp2-android/arm64-v8a/lib/libngtcp2.so +0 -0
- package/android/install/ngtcp2-android/arm64-v8a/lib/libngtcp2_crypto_wolfssl.a +0 -0
- package/android/install/ngtcp2-android/arm64-v8a/lib/libngtcp2_crypto_wolfssl.so +0 -0
- package/android/install/ngtcp2-android/arm64-v8a/lib/pkgconfig/libngtcp2.pc +4 -4
- package/android/install/ngtcp2-android/arm64-v8a/lib/pkgconfig/libngtcp2_crypto_wolfssl.pc +4 -4
- package/android/install/ngtcp2-android/armeabi-v7a/lib/libngtcp2.a +0 -0
- package/android/install/ngtcp2-android/armeabi-v7a/lib/libngtcp2.so +0 -0
- package/android/install/ngtcp2-android/armeabi-v7a/lib/libngtcp2_crypto_wolfssl.a +0 -0
- package/android/install/ngtcp2-android/armeabi-v7a/lib/libngtcp2_crypto_wolfssl.so +0 -0
- package/android/install/ngtcp2-android/armeabi-v7a/lib/pkgconfig/libngtcp2.pc +4 -4
- package/android/install/ngtcp2-android/armeabi-v7a/lib/pkgconfig/libngtcp2_crypto_wolfssl.pc +4 -4
- package/android/install/ngtcp2-android/x86_64/lib/libngtcp2.a +0 -0
- package/android/install/ngtcp2-android/x86_64/lib/libngtcp2.so +0 -0
- package/android/install/ngtcp2-android/x86_64/lib/libngtcp2_crypto_wolfssl.a +0 -0
- package/android/install/ngtcp2-android/x86_64/lib/libngtcp2_crypto_wolfssl.so +0 -0
- package/android/install/ngtcp2-android/x86_64/lib/pkgconfig/libngtcp2.pc +4 -4
- package/android/install/ngtcp2-android/x86_64/lib/pkgconfig/libngtcp2_crypto_wolfssl.pc +4 -4
- package/android/install/wolfssl-android/arm64-v8a/bin/wolfssl-config +1 -1
- package/android/install/wolfssl-android/arm64-v8a/lib/libwolfssl.a +0 -0
- package/android/install/wolfssl-android/arm64-v8a/lib/libwolfssl.la +1 -1
- package/android/install/wolfssl-android/arm64-v8a/lib/pkgconfig/wolfssl.pc +1 -1
- package/android/install/wolfssl-android/armeabi-v7a/bin/wolfssl-config +1 -1
- package/android/install/wolfssl-android/armeabi-v7a/lib/libwolfssl.a +0 -0
- package/android/install/wolfssl-android/armeabi-v7a/lib/libwolfssl.la +1 -1
- package/android/install/wolfssl-android/armeabi-v7a/lib/pkgconfig/wolfssl.pc +1 -1
- package/android/install/wolfssl-android/x86_64/bin/wolfssl-config +1 -1
- package/android/install/wolfssl-android/x86_64/lib/libwolfssl.a +0 -0
- package/android/install/wolfssl-android/x86_64/lib/libwolfssl.la +1 -1
- package/android/install/wolfssl-android/x86_64/lib/pkgconfig/wolfssl.pc +1 -1
- package/android/src/main/cpp/CMakeLists.txt +19 -5
- package/android/src/main/cpp/ngtcp2_jni.cpp +119 -32
- package/android/src/main/kotlin/ai/annadata/mqttquic/MqttQuicPlugin.kt +60 -5
- package/android/src/main/kotlin/ai/annadata/mqttquic/client/MQTTClient.kt +233 -84
- package/android/src/main/kotlin/ai/annadata/mqttquic/mqtt/MQTTProtocol.kt +36 -5
- package/android/src/main/kotlin/ai/annadata/mqttquic/mqtt/MQTTTypes.kt +15 -15
- package/android/src/main/kotlin/ai/annadata/mqttquic/quic/NGTCP2Client.kt +26 -15
- package/android/src/main/kotlin/ai/annadata/mqttquic/quic/QuicClientStub.kt +1 -1
- package/android/src/main/kotlin/ai/annadata/mqttquic/quic/QuicTypes.kt +1 -1
- package/android/src/main/kotlin/ai/annadata/mqttquic/transport/QUICStreamAdapter.kt +80 -5
- package/android/src/main/kotlin/ai/annadata/mqttquic/transport/StreamTransport.kt +4 -0
- package/docs/IMPLEMENTATION_SUMMARY.md +1 -1
- package/docs/NGTCP2_IMPLEMENTATION_STATUS.md +1 -1
- package/docs/PRODUCTION_PUBLISH_STEPS.md +9 -3
- package/docs/diff-node_modules-vs-standalone-android-src.patch +1031 -0
- package/ios/{MqttQuicPlugin.podspec → AnnadataCapacitorMqttQuic.podspec} +4 -4
- package/ios/App/App/capacitor.config.json +1 -1
- package/ios/NGTCP2_BUILD_INSTRUCTIONS.md +3 -3
- package/ios/Package.swift +7 -8
- package/ios/Tests/MQTTProtocolTests.swift +1 -1
- package/ios/build-wolfssl.sh +8 -3
- package/ios/libs/libnghttp3.a +0 -0
- package/ios/libs/libngtcp2.a +0 -0
- package/ios/libs/libngtcp2_crypto_wolfssl.a +0 -0
- package/ios/libs/libwolfssl.a +0 -0
- package/ios/libs-simulator/libnghttp3.a +0 -0
- package/ios/libs-simulator/libngtcp2.a +0 -0
- package/ios/libs-simulator/libngtcp2_crypto_wolfssl.a +0 -0
- package/ios/libs-simulator/libwolfssl.a +0 -0
- package/ios/libs-simulator-x86_64/libnghttp3.a +0 -0
- package/ios/libs-simulator-x86_64/libngtcp2.a +0 -0
- package/ios/libs-simulator-x86_64/libngtcp2_crypto_wolfssl.a +0 -0
- package/ios/libs-simulator-x86_64/libwolfssl.a +0 -0
- package/package.json +5 -2
- package/ios/libs/MqttQuicLibs.xcframework/Info.plist +0 -44
- package/ios/libs/MqttQuicLibs.xcframework/ios-arm64/libmqttquic_native_device.a +0 -0
- package/ios/libs/MqttQuicLibs.xcframework/ios-arm64_x86_64-simulator/libmqttquic_native_simulator.a +0 -0
|
@@ -3,7 +3,7 @@ require 'json'
|
|
|
3
3
|
package = JSON.parse(File.read(File.join(__dir__, '..', 'package.json')))
|
|
4
4
|
|
|
5
5
|
Pod::Spec.new do |s|
|
|
6
|
-
s.name = '
|
|
6
|
+
s.name = 'AnnadataCapacitorMqttQuic'
|
|
7
7
|
s.version = package['version']
|
|
8
8
|
s.summary = 'MQTT-over-QUIC Capacitor plugin (iOS)'
|
|
9
9
|
s.license = package['license']
|
|
@@ -12,7 +12,7 @@ Pod::Spec.new do |s|
|
|
|
12
12
|
s.source = { :git => 'https://github.com/annadata/capacitor-mqtt-quic', :tag => s.version.to_s }
|
|
13
13
|
s.source_files = 'Sources/**/*.{swift,h,m,c,cc,mm,cpp}'
|
|
14
14
|
s.resources = ['Sources/MqttQuicPlugin/Resources/*.pem']
|
|
15
|
-
s.ios.deployment_target = '
|
|
15
|
+
s.ios.deployment_target = '15.0'
|
|
16
16
|
s.dependency 'Capacitor'
|
|
17
17
|
s.swift_version = '5.1'
|
|
18
18
|
s.vendored_libraries = [
|
|
@@ -25,8 +25,8 @@ Pod::Spec.new do |s|
|
|
|
25
25
|
s.private_header_files = 'Sources/**/*.h', 'include/**/*.h'
|
|
26
26
|
s.header_mappings_dir = 'Sources'
|
|
27
27
|
s.pod_target_xcconfig = {
|
|
28
|
-
'HEADER_SEARCH_PATHS' => '$(PODS_ROOT)/
|
|
29
|
-
'LIBRARY_SEARCH_PATHS' => '$(PODS_ROOT)/
|
|
28
|
+
'HEADER_SEARCH_PATHS' => '$(PODS_ROOT)/AnnadataCapacitorMqttQuic/include/ngtcp2 $(PODS_ROOT)/AnnadataCapacitorMqttQuic/include/nghttp3 $(PODS_ROOT)/AnnadataCapacitorMqttQuic/include/wolfssl',
|
|
29
|
+
'LIBRARY_SEARCH_PATHS' => '$(PODS_ROOT)/AnnadataCapacitorMqttQuic/libs',
|
|
30
30
|
'OTHER_LDFLAGS' => '-lngtcp2 -lngtcp2_crypto_wolfssl -lnghttp3 -lwolfssl',
|
|
31
31
|
'SWIFT_ACTIVE_COMPILATION_CONDITIONS' => 'NGTCP2_ENABLED NGHTTP3_ENABLED'
|
|
32
32
|
}
|
|
@@ -34,7 +34,7 @@ If you have access to pre-built ngtcp2, nghttp3, and OpenSSL libraries:
|
|
|
34
34
|
2. Place `libnghttp3.a` in `ios/libs/`
|
|
35
35
|
3. Place OpenSSL libraries (`libssl.a`, `libcrypto.a`) in `ios/libs/`
|
|
36
36
|
4. Place headers in `ios/include/ngtcp2/`, `ios/include/nghttp3/`, and `ios/include/openssl/`
|
|
37
|
-
5. Update `
|
|
37
|
+
5. Update `AnnadataCapacitorMqttQuic.podspec` to link against these libraries
|
|
38
38
|
|
|
39
39
|
### Option 2: Build from Source
|
|
40
40
|
|
|
@@ -154,7 +154,7 @@ Then clean and rebuild the iOS app so it links the new xcframework. See the app
|
|
|
154
154
|
|
|
155
155
|
### Option A: CocoaPods
|
|
156
156
|
|
|
157
|
-
Update `ios/
|
|
157
|
+
Update `ios/AnnadataCapacitorMqttQuic.podspec`:
|
|
158
158
|
|
|
159
159
|
```ruby
|
|
160
160
|
Pod::Spec.new do |s|
|
|
@@ -342,4 +342,4 @@ After building ngtcp2:
|
|
|
342
342
|
2. Replace `QuicClientStub` with `NGTCP2Client` in `MQTTClient.swift`
|
|
343
343
|
3. Test connection to MQTT server over QUIC
|
|
344
344
|
|
|
345
|
-
See
|
|
345
|
+
See [NGTCP2_INTEGRATION_PLAN.md](../docs/NGTCP2_INTEGRATION_PLAN.md) for detailed implementation guide.
|
package/ios/Package.swift
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
// swift-tools-version: 5.9
|
|
2
2
|
import PackageDescription
|
|
3
3
|
|
|
4
|
-
//
|
|
5
|
-
// Requires Libs/MqttQuicLibs.xcframework. After building
|
|
6
|
-
// (see build-openssl.sh, build-ngtcp2.sh, build-nghttp3.sh), run:
|
|
4
|
+
// AnnadataCapacitorMqttQuic – Swift Package for Capacitor 8 (SPM).
|
|
5
|
+
// Requires Libs/MqttQuicLibs.xcframework. After building (see build-native.sh), run:
|
|
7
6
|
// ./create-xcframework.sh
|
|
8
7
|
let package = Package(
|
|
9
|
-
name: "
|
|
10
|
-
platforms: [.iOS(.
|
|
8
|
+
name: "AnnadataCapacitorMqttQuic",
|
|
9
|
+
platforms: [.iOS(.v15)],
|
|
11
10
|
products: [
|
|
12
11
|
.library(
|
|
13
|
-
name: "
|
|
14
|
-
targets: ["
|
|
12
|
+
name: "AnnadataCapacitorMqttQuic",
|
|
13
|
+
targets: ["AnnadataCapacitorMqttQuic"]
|
|
15
14
|
)
|
|
16
15
|
],
|
|
17
16
|
dependencies: [
|
|
@@ -38,7 +37,7 @@ let package = Package(
|
|
|
38
37
|
]
|
|
39
38
|
),
|
|
40
39
|
.target(
|
|
41
|
-
name: "
|
|
40
|
+
name: "AnnadataCapacitorMqttQuic",
|
|
42
41
|
dependencies: [
|
|
43
42
|
"NGTCP2Bridge",
|
|
44
43
|
.product(name: "Capacitor", package: "capacitor-swift-pm")
|
package/ios/build-wolfssl.sh
CHANGED
|
@@ -56,10 +56,15 @@ IOS_SDK_PATH=$(xcrun --sdk "$SDK" --show-sdk-path)
|
|
|
56
56
|
if [ ! -d "$WOLFSSL_SOURCE_DIR" ] && [ -d "$PROJECT_DIR/../wolfssl-5.8.4-stable" ]; then
|
|
57
57
|
WOLFSSL_SOURCE_DIR="$PROJECT_DIR/../wolfssl-5.8.4-stable"
|
|
58
58
|
fi
|
|
59
|
+
# Clone WolfSSL if missing
|
|
59
60
|
if [ ! -d "$WOLFSSL_SOURCE_DIR" ]; then
|
|
60
|
-
echo "
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
echo "WolfSSL source not found. Cloning into $DEPS_DIR/wolfssl ..."
|
|
62
|
+
mkdir -p "$DEPS_DIR"
|
|
63
|
+
git clone --depth 1 -b "${WOLFSSL_TAG:-v5.8.4-stable}" "${WOLFSSL_REPO_URL:-https://github.com/wolfSSL/wolfssl.git}" "$DEPS_DIR/wolfssl" || {
|
|
64
|
+
echo "Error: Failed to clone WolfSSL"
|
|
65
|
+
exit 1
|
|
66
|
+
}
|
|
67
|
+
WOLFSSL_SOURCE_DIR="$DEPS_DIR/wolfssl"
|
|
63
68
|
fi
|
|
64
69
|
|
|
65
70
|
echo "Building WolfSSL (TLS 1.3 + QUIC) for iOS"
|
package/ios/libs/libnghttp3.a
CHANGED
|
Binary file
|
package/ios/libs/libngtcp2.a
CHANGED
|
Binary file
|
|
Binary file
|
package/ios/libs/libwolfssl.a
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@annadata/capacitor-mqtt-quic",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "MQTT-over-QUIC client for Capacitor (iOS, Android, Web). Native: ngtcp2+WolfSSL; Web: MQTT over WebSocket (WSS), same API.",
|
|
6
6
|
"main": "dist/plugin.cjs.js",
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"dist",
|
|
12
12
|
"ios",
|
|
13
13
|
"android",
|
|
14
|
+
"Package.swift",
|
|
14
15
|
"AnnadataCapacitorMqttQuic.podspec",
|
|
15
16
|
"README.md",
|
|
16
17
|
"deps-versions.sh",
|
|
@@ -21,6 +22,7 @@
|
|
|
21
22
|
"build": "npm run build:tsc && npm run build:rollup",
|
|
22
23
|
"build:tsc": "npx tsc",
|
|
23
24
|
"build:rollup": "npx rollup -c rollup.config.js",
|
|
25
|
+
"build:android-prebuilts": "./build-native.sh --android-only --abi arm64-v8a && ./build-native.sh --android-only --abi armeabi-v7a && ./build-native.sh --android-only --abi x86_64",
|
|
24
26
|
"watch": "rollup -c rollup.config.js -w",
|
|
25
27
|
"lint": "eslint src --ext ts",
|
|
26
28
|
"prepack": "npm run clean:build-artifacts",
|
|
@@ -41,7 +43,8 @@
|
|
|
41
43
|
],
|
|
42
44
|
"capacitor": {
|
|
43
45
|
"ios": {
|
|
44
|
-
"src": "ios"
|
|
46
|
+
"src": "ios",
|
|
47
|
+
"name": "AnnadataCapacitorMqttQuic"
|
|
45
48
|
},
|
|
46
49
|
"android": {
|
|
47
50
|
"src": "android"
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
-
<plist version="1.0">
|
|
4
|
-
<dict>
|
|
5
|
-
<key>AvailableLibraries</key>
|
|
6
|
-
<array>
|
|
7
|
-
<dict>
|
|
8
|
-
<key>BinaryPath</key>
|
|
9
|
-
<string>libmqttquic_native_simulator.a</string>
|
|
10
|
-
<key>LibraryIdentifier</key>
|
|
11
|
-
<string>ios-arm64_x86_64-simulator</string>
|
|
12
|
-
<key>LibraryPath</key>
|
|
13
|
-
<string>libmqttquic_native_simulator.a</string>
|
|
14
|
-
<key>SupportedArchitectures</key>
|
|
15
|
-
<array>
|
|
16
|
-
<string>arm64</string>
|
|
17
|
-
<string>x86_64</string>
|
|
18
|
-
</array>
|
|
19
|
-
<key>SupportedPlatform</key>
|
|
20
|
-
<string>ios</string>
|
|
21
|
-
<key>SupportedPlatformVariant</key>
|
|
22
|
-
<string>simulator</string>
|
|
23
|
-
</dict>
|
|
24
|
-
<dict>
|
|
25
|
-
<key>BinaryPath</key>
|
|
26
|
-
<string>libmqttquic_native_device.a</string>
|
|
27
|
-
<key>LibraryIdentifier</key>
|
|
28
|
-
<string>ios-arm64</string>
|
|
29
|
-
<key>LibraryPath</key>
|
|
30
|
-
<string>libmqttquic_native_device.a</string>
|
|
31
|
-
<key>SupportedArchitectures</key>
|
|
32
|
-
<array>
|
|
33
|
-
<string>arm64</string>
|
|
34
|
-
</array>
|
|
35
|
-
<key>SupportedPlatform</key>
|
|
36
|
-
<string>ios</string>
|
|
37
|
-
</dict>
|
|
38
|
-
</array>
|
|
39
|
-
<key>CFBundlePackageType</key>
|
|
40
|
-
<string>XFWK</string>
|
|
41
|
-
<key>XCFrameworkFormatVersion</key>
|
|
42
|
-
<string>1.0</string>
|
|
43
|
-
</dict>
|
|
44
|
-
</plist>
|
|
Binary file
|