@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.
Files changed (83) hide show
  1. package/AnnadataCapacitorMqttQuic.podspec +2 -2
  2. package/Package.swift +59 -0
  3. package/README.md +57 -17
  4. package/android/NGTCP2_BUILD_INSTRUCTIONS.md +1 -1
  5. package/android/app/src/main/assets/capacitor.config.json +1 -1
  6. package/android/build-wolfssl.sh +8 -2
  7. package/android/build.gradle +4 -1
  8. package/android/install/nghttp3-android/arm64-v8a/lib/libnghttp3.a +0 -0
  9. package/android/install/nghttp3-android/arm64-v8a/lib/libnghttp3.so +0 -0
  10. package/android/install/nghttp3-android/arm64-v8a/lib/pkgconfig/libnghttp3.pc +4 -4
  11. package/android/install/nghttp3-android/armeabi-v7a/lib/libnghttp3.a +0 -0
  12. package/android/install/nghttp3-android/armeabi-v7a/lib/libnghttp3.so +0 -0
  13. package/android/install/nghttp3-android/armeabi-v7a/lib/pkgconfig/libnghttp3.pc +4 -4
  14. package/android/install/nghttp3-android/x86_64/lib/libnghttp3.a +0 -0
  15. package/android/install/nghttp3-android/x86_64/lib/libnghttp3.so +0 -0
  16. package/android/install/nghttp3-android/x86_64/lib/pkgconfig/libnghttp3.pc +4 -4
  17. package/android/install/ngtcp2-android/arm64-v8a/lib/libngtcp2.a +0 -0
  18. package/android/install/ngtcp2-android/arm64-v8a/lib/libngtcp2.so +0 -0
  19. package/android/install/ngtcp2-android/arm64-v8a/lib/libngtcp2_crypto_wolfssl.a +0 -0
  20. package/android/install/ngtcp2-android/arm64-v8a/lib/libngtcp2_crypto_wolfssl.so +0 -0
  21. package/android/install/ngtcp2-android/arm64-v8a/lib/pkgconfig/libngtcp2.pc +4 -4
  22. package/android/install/ngtcp2-android/arm64-v8a/lib/pkgconfig/libngtcp2_crypto_wolfssl.pc +4 -4
  23. package/android/install/ngtcp2-android/armeabi-v7a/lib/libngtcp2.a +0 -0
  24. package/android/install/ngtcp2-android/armeabi-v7a/lib/libngtcp2.so +0 -0
  25. package/android/install/ngtcp2-android/armeabi-v7a/lib/libngtcp2_crypto_wolfssl.a +0 -0
  26. package/android/install/ngtcp2-android/armeabi-v7a/lib/libngtcp2_crypto_wolfssl.so +0 -0
  27. package/android/install/ngtcp2-android/armeabi-v7a/lib/pkgconfig/libngtcp2.pc +4 -4
  28. package/android/install/ngtcp2-android/armeabi-v7a/lib/pkgconfig/libngtcp2_crypto_wolfssl.pc +4 -4
  29. package/android/install/ngtcp2-android/x86_64/lib/libngtcp2.a +0 -0
  30. package/android/install/ngtcp2-android/x86_64/lib/libngtcp2.so +0 -0
  31. package/android/install/ngtcp2-android/x86_64/lib/libngtcp2_crypto_wolfssl.a +0 -0
  32. package/android/install/ngtcp2-android/x86_64/lib/libngtcp2_crypto_wolfssl.so +0 -0
  33. package/android/install/ngtcp2-android/x86_64/lib/pkgconfig/libngtcp2.pc +4 -4
  34. package/android/install/ngtcp2-android/x86_64/lib/pkgconfig/libngtcp2_crypto_wolfssl.pc +4 -4
  35. package/android/install/wolfssl-android/arm64-v8a/bin/wolfssl-config +1 -1
  36. package/android/install/wolfssl-android/arm64-v8a/lib/libwolfssl.a +0 -0
  37. package/android/install/wolfssl-android/arm64-v8a/lib/libwolfssl.la +1 -1
  38. package/android/install/wolfssl-android/arm64-v8a/lib/pkgconfig/wolfssl.pc +1 -1
  39. package/android/install/wolfssl-android/armeabi-v7a/bin/wolfssl-config +1 -1
  40. package/android/install/wolfssl-android/armeabi-v7a/lib/libwolfssl.a +0 -0
  41. package/android/install/wolfssl-android/armeabi-v7a/lib/libwolfssl.la +1 -1
  42. package/android/install/wolfssl-android/armeabi-v7a/lib/pkgconfig/wolfssl.pc +1 -1
  43. package/android/install/wolfssl-android/x86_64/bin/wolfssl-config +1 -1
  44. package/android/install/wolfssl-android/x86_64/lib/libwolfssl.a +0 -0
  45. package/android/install/wolfssl-android/x86_64/lib/libwolfssl.la +1 -1
  46. package/android/install/wolfssl-android/x86_64/lib/pkgconfig/wolfssl.pc +1 -1
  47. package/android/src/main/cpp/CMakeLists.txt +19 -5
  48. package/android/src/main/cpp/ngtcp2_jni.cpp +119 -32
  49. package/android/src/main/kotlin/ai/annadata/mqttquic/MqttQuicPlugin.kt +60 -5
  50. package/android/src/main/kotlin/ai/annadata/mqttquic/client/MQTTClient.kt +233 -84
  51. package/android/src/main/kotlin/ai/annadata/mqttquic/mqtt/MQTTProtocol.kt +36 -5
  52. package/android/src/main/kotlin/ai/annadata/mqttquic/mqtt/MQTTTypes.kt +15 -15
  53. package/android/src/main/kotlin/ai/annadata/mqttquic/quic/NGTCP2Client.kt +26 -15
  54. package/android/src/main/kotlin/ai/annadata/mqttquic/quic/QuicClientStub.kt +1 -1
  55. package/android/src/main/kotlin/ai/annadata/mqttquic/quic/QuicTypes.kt +1 -1
  56. package/android/src/main/kotlin/ai/annadata/mqttquic/transport/QUICStreamAdapter.kt +80 -5
  57. package/android/src/main/kotlin/ai/annadata/mqttquic/transport/StreamTransport.kt +4 -0
  58. package/docs/IMPLEMENTATION_SUMMARY.md +1 -1
  59. package/docs/NGTCP2_IMPLEMENTATION_STATUS.md +1 -1
  60. package/docs/PRODUCTION_PUBLISH_STEPS.md +9 -3
  61. package/docs/diff-node_modules-vs-standalone-android-src.patch +1031 -0
  62. package/ios/{MqttQuicPlugin.podspec → AnnadataCapacitorMqttQuic.podspec} +4 -4
  63. package/ios/App/App/capacitor.config.json +1 -1
  64. package/ios/NGTCP2_BUILD_INSTRUCTIONS.md +3 -3
  65. package/ios/Package.swift +7 -8
  66. package/ios/Tests/MQTTProtocolTests.swift +1 -1
  67. package/ios/build-wolfssl.sh +8 -3
  68. package/ios/libs/libnghttp3.a +0 -0
  69. package/ios/libs/libngtcp2.a +0 -0
  70. package/ios/libs/libngtcp2_crypto_wolfssl.a +0 -0
  71. package/ios/libs/libwolfssl.a +0 -0
  72. package/ios/libs-simulator/libnghttp3.a +0 -0
  73. package/ios/libs-simulator/libngtcp2.a +0 -0
  74. package/ios/libs-simulator/libngtcp2_crypto_wolfssl.a +0 -0
  75. package/ios/libs-simulator/libwolfssl.a +0 -0
  76. package/ios/libs-simulator-x86_64/libnghttp3.a +0 -0
  77. package/ios/libs-simulator-x86_64/libngtcp2.a +0 -0
  78. package/ios/libs-simulator-x86_64/libngtcp2_crypto_wolfssl.a +0 -0
  79. package/ios/libs-simulator-x86_64/libwolfssl.a +0 -0
  80. package/package.json +5 -2
  81. package/ios/libs/MqttQuicLibs.xcframework/Info.plist +0 -44
  82. package/ios/libs/MqttQuicLibs.xcframework/ios-arm64/libmqttquic_native_device.a +0 -0
  83. 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 = 'MqttQuicPlugin'
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 = '14.0'
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)/MqttQuicPlugin/include/ngtcp2 $(PODS_ROOT)/MqttQuicPlugin/include/nghttp3 $(PODS_ROOT)/MqttQuicPlugin/include/wolfssl',
29
- 'LIBRARY_SEARCH_PATHS' => '$(PODS_ROOT)/MqttQuicPlugin/libs',
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
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "appId": "ai.annadata.mqttquic",
3
- "appName": "MqttQuicPlugin",
3
+ "appName": "AnnadataCapacitorMqttQuic",
4
4
  "webDir": "www",
5
5
  "packageClassList": [
6
6
  "MqttQuicPlugin"
@@ -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 `MqttQuicPlugin.podspec` to link against these libraries
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/MqttQuicPlugin.podspec`:
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 `NGTCP2_INTEGRATION_PLAN.md` for detailed implementation guide.
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
- // MqttQuicPlugin iOS – Swift Package for Capacitor 8 (SPM).
5
- // Requires Libs/MqttQuicLibs.xcframework. After building OpenSSL, ngtcp2, nghttp3
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: "MqttQuicPlugin",
10
- platforms: [.iOS(.v14)],
8
+ name: "AnnadataCapacitorMqttQuic",
9
+ platforms: [.iOS(.v15)],
11
10
  products: [
12
11
  .library(
13
- name: "MqttQuicPlugin",
14
- targets: ["MqttQuicPlugin"]
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: "MqttQuicPlugin",
40
+ name: "AnnadataCapacitorMqttQuic",
42
41
  dependencies: [
43
42
  "NGTCP2Bridge",
44
43
  .product(name: "Capacitor", package: "capacitor-swift-pm")
@@ -4,7 +4,7 @@
4
4
  //
5
5
 
6
6
  import XCTest
7
- @testable import MqttQuicPlugin
7
+ @testable import AnnadataCapacitorMqttQuic
8
8
 
9
9
  final class MQTTProtocolTests: XCTestCase {
10
10
 
@@ -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 "Error: WolfSSL source not found at $WOLFSSL_SOURCE_DIR"
61
- echo "Clone: git clone --depth 1 -b ${WOLFSSL_TAG:-v5.8.4-stable} ${WOLFSSL_REPO_URL:-https://github.com/wolfSSL/wolfssl.git} $DEPS_DIR/wolfssl"
62
- exit 1
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"
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.7",
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>