diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 09346f7..ad59571 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -36,27 +36,9 @@ jobs:
cache-dependency-path: WebSocketServer/package-lock.json
- run: npm ci
- spm:
- runs-on: macos-14
- steps:
- - uses: actions/checkout@v4
- - name: Build via Swift Package Manager
- run: ./scripts/build-spm-package.sh
-
ios:
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- - name: Install Carthage
- run: brew install carthage
- - name: Build dependencies
- run: make setup-ci
- - name: Build RIBsTreeViewerClient (Simulator)
- run: |
- xcodebuild build \
- -project RIBsTreeViewerClient.xcodeproj \
- -scheme RIBsTreeViewerClient \
- -destination 'generic/platform=iOS Simulator' \
- -configuration Release \
- BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
- CODE_SIGNING_ALLOWED=NO
+ - name: Verify usable state (SPM + Xcode + Browser + WebSocket)
+ run: ./scripts/verify.sh
diff --git a/Makefile b/Makefile
index e5ee2f7..b68f621 100644
--- a/Makefile
+++ b/Makefile
@@ -1,24 +1,13 @@
.PHONY: help
.DEFAULT_GOAL := help
-
+
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
-CARTHAGE_BUILD_FLAGS = --platform iOS --no-use-binaries --use-xcframeworks
-
-setup: ## Fetch and build Carthage dependencies (RIBs, RxSwift).
- carthage update --platform iOS --no-build
- @./scripts/patch_carthage_checkouts.sh
- carthage build $(CARTHAGE_BUILD_FLAGS) RxSwift RxRelay
- carthage build $(CARTHAGE_BUILD_FLAGS) RIBs
-
-setup-ci: ## Carthage bootstrap for CI (uses Cartfile.resolved).
- carthage bootstrap --platform iOS --no-build --cache-builds
- @./scripts/patch_carthage_checkouts.sh
- carthage build $(CARTHAGE_BUILD_FLAGS) --cache-builds RxSwift RxRelay
- carthage build $(CARTHAGE_BUILD_FLAGS) --cache-builds RIBs
+verify: ## Run full usability checks (./scripts/verify.sh).
+ @./scripts/verify.sh
-generate_xcframeworks: ## Generate XCFrameworks.
+generate_xcframeworks: ## Regenerate Products/RIBsTreeViewerClient.xcframework (SPM deps).
@./scripts/generate_xcframeworks.sh
websocket-server: ## Start the WebSocket relay (port 8080).
diff --git a/Products/RIBsTreeViewerClient.xcframework/Info.plist b/Products/RIBsTreeViewerClient.xcframework/Info.plist
index 342e764..0c9c258 100644
--- a/Products/RIBsTreeViewerClient.xcframework/Info.plist
+++ b/Products/RIBsTreeViewerClient.xcframework/Info.plist
@@ -8,32 +8,32 @@
BinaryPath
RIBsTreeViewerClient.framework/RIBsTreeViewerClient
LibraryIdentifier
- ios-arm64_x86_64-simulator
+ ios-arm64
LibraryPath
RIBsTreeViewerClient.framework
SupportedArchitectures
arm64
- x86_64
SupportedPlatform
ios
- SupportedPlatformVariant
- simulator
BinaryPath
RIBsTreeViewerClient.framework/RIBsTreeViewerClient
LibraryIdentifier
- ios-arm64
+ ios-arm64_x86_64-simulator
LibraryPath
RIBsTreeViewerClient.framework
SupportedArchitectures
arm64
+ x86_64
SupportedPlatform
ios
+ SupportedPlatformVariant
+ simulator
CFBundlePackageType
diff --git a/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/Info.plist b/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/Info.plist
index 80f69a4..a47d7fd 100644
Binary files a/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/Info.plist and b/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/Info.plist differ
diff --git a/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios.abi.json b/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios.abi.json
index a6c0211..080730e 100644
--- a/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios.abi.json
+++ b/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios.abi.json
@@ -386,7 +386,7 @@
"usr": "s:20RIBsTreeViewerClient0abC4ImplC",
"mangledName": "$s20RIBsTreeViewerClient0abC4ImplC",
"moduleName": "RIBsTreeViewerClient",
- "intro_iOS": "13.0",
+ "intro_iOS": "15.0",
"declAttributes": [
"AccessControl",
"Available"
diff --git a/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios.private.swiftinterface b/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios.private.swiftinterface
index 1920048..c600a2b 100644
--- a/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios.private.swiftinterface
+++ b/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios.private.swiftinterface
@@ -1,6 +1,6 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 6.2 effective-5.10 (swiftlang-6.2.0.19.9 clang-1700.3.19.1)
-// swift-module-flags: -target arm64-apple-ios13.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -enable-experimental-feature DebugDescriptionMacro -enable-bare-slash-regex -module-name RIBsTreeViewerClient
+// swift-module-flags: -target arm64-apple-ios15.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -enable-experimental-feature DebugDescriptionMacro -enable-bare-slash-regex -module-name RIBsTreeViewerClient
// swift-module-flags-ignorable: -no-verify-emitted-module-interface -formal-cxx-interoperability-mode=off -interface-compiler-version 6.2
import Foundation
import RIBs
@@ -22,7 +22,7 @@ public enum RIBsTreeViewerOption {
case webSocketURL(Swift.String)
case monitoringIntervalMillis(Swift.Int)
}
-@available(iOS 13.0, *)
+@available(iOS 15.0, *)
public class RIBsTreeViewerImpl : RIBsTreeViewerClient.RIBsTreeViewer {
#if compiler(>=5.3) && $NonescapableTypes
required public init(router: any RIBs.Routing, options: [RIBsTreeViewerClient.RIBsTreeViewerOption]?)
diff --git a/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios.swiftdoc b/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios.swiftdoc
index 0cdf31d..4a33fcd 100644
Binary files a/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios.swiftdoc and b/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios.swiftdoc differ
diff --git a/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios.swiftinterface b/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios.swiftinterface
index 1920048..c600a2b 100644
--- a/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios.swiftinterface
+++ b/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios.swiftinterface
@@ -1,6 +1,6 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 6.2 effective-5.10 (swiftlang-6.2.0.19.9 clang-1700.3.19.1)
-// swift-module-flags: -target arm64-apple-ios13.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -enable-experimental-feature DebugDescriptionMacro -enable-bare-slash-regex -module-name RIBsTreeViewerClient
+// swift-module-flags: -target arm64-apple-ios15.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -enable-experimental-feature DebugDescriptionMacro -enable-bare-slash-regex -module-name RIBsTreeViewerClient
// swift-module-flags-ignorable: -no-verify-emitted-module-interface -formal-cxx-interoperability-mode=off -interface-compiler-version 6.2
import Foundation
import RIBs
@@ -22,7 +22,7 @@ public enum RIBsTreeViewerOption {
case webSocketURL(Swift.String)
case monitoringIntervalMillis(Swift.Int)
}
-@available(iOS 13.0, *)
+@available(iOS 15.0, *)
public class RIBsTreeViewerImpl : RIBsTreeViewerClient.RIBsTreeViewer {
#if compiler(>=5.3) && $NonescapableTypes
required public init(router: any RIBs.Routing, options: [RIBsTreeViewerClient.RIBsTreeViewerOption]?)
diff --git a/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/RIBsTreeViewerClient b/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/RIBsTreeViewerClient
index 6b8e6be..e8a2b8d 100755
Binary files a/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/RIBsTreeViewerClient and b/Products/RIBsTreeViewerClient.xcframework/ios-arm64/RIBsTreeViewerClient.framework/RIBsTreeViewerClient differ
diff --git a/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Info.plist b/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Info.plist
index 11d2660..8d921e0 100644
Binary files a/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Info.plist and b/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Info.plist differ
diff --git a/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.abi.json b/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.abi.json
index a6c0211..080730e 100644
--- a/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.abi.json
+++ b/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.abi.json
@@ -386,7 +386,7 @@
"usr": "s:20RIBsTreeViewerClient0abC4ImplC",
"mangledName": "$s20RIBsTreeViewerClient0abC4ImplC",
"moduleName": "RIBsTreeViewerClient",
- "intro_iOS": "13.0",
+ "intro_iOS": "15.0",
"declAttributes": [
"AccessControl",
"Available"
diff --git a/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface b/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface
index 66df82f..98ffdc5 100644
--- a/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface
+++ b/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface
@@ -1,6 +1,6 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 6.2 effective-5.10 (swiftlang-6.2.0.19.9 clang-1700.3.19.1)
-// swift-module-flags: -target arm64-apple-ios13.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -enable-experimental-feature DebugDescriptionMacro -enable-bare-slash-regex -module-name RIBsTreeViewerClient
+// swift-module-flags: -target arm64-apple-ios15.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -enable-experimental-feature DebugDescriptionMacro -enable-bare-slash-regex -module-name RIBsTreeViewerClient
// swift-module-flags-ignorable: -no-verify-emitted-module-interface -formal-cxx-interoperability-mode=off -interface-compiler-version 6.2
import Foundation
import RIBs
@@ -22,7 +22,7 @@ public enum RIBsTreeViewerOption {
case webSocketURL(Swift.String)
case monitoringIntervalMillis(Swift.Int)
}
-@available(iOS 13.0, *)
+@available(iOS 15.0, *)
public class RIBsTreeViewerImpl : RIBsTreeViewerClient.RIBsTreeViewer {
#if compiler(>=5.3) && $NonescapableTypes
required public init(router: any RIBs.Routing, options: [RIBsTreeViewerClient.RIBsTreeViewerOption]?)
diff --git a/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.swiftdoc b/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.swiftdoc
index 3e6e108..e12b3fd 100644
Binary files a/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.swiftdoc and b/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.swiftdoc differ
diff --git a/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.swiftinterface b/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.swiftinterface
index 66df82f..98ffdc5 100644
--- a/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.swiftinterface
+++ b/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.swiftinterface
@@ -1,6 +1,6 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 6.2 effective-5.10 (swiftlang-6.2.0.19.9 clang-1700.3.19.1)
-// swift-module-flags: -target arm64-apple-ios13.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -enable-experimental-feature DebugDescriptionMacro -enable-bare-slash-regex -module-name RIBsTreeViewerClient
+// swift-module-flags: -target arm64-apple-ios15.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -enable-experimental-feature DebugDescriptionMacro -enable-bare-slash-regex -module-name RIBsTreeViewerClient
// swift-module-flags-ignorable: -no-verify-emitted-module-interface -formal-cxx-interoperability-mode=off -interface-compiler-version 6.2
import Foundation
import RIBs
@@ -22,7 +22,7 @@ public enum RIBsTreeViewerOption {
case webSocketURL(Swift.String)
case monitoringIntervalMillis(Swift.Int)
}
-@available(iOS 13.0, *)
+@available(iOS 15.0, *)
public class RIBsTreeViewerImpl : RIBsTreeViewerClient.RIBsTreeViewer {
#if compiler(>=5.3) && $NonescapableTypes
required public init(router: any RIBs.Routing, options: [RIBsTreeViewerClient.RIBsTreeViewerOption]?)
diff --git a/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.abi.json b/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.abi.json
index a6c0211..080730e 100644
--- a/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.abi.json
+++ b/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.abi.json
@@ -386,7 +386,7 @@
"usr": "s:20RIBsTreeViewerClient0abC4ImplC",
"mangledName": "$s20RIBsTreeViewerClient0abC4ImplC",
"moduleName": "RIBsTreeViewerClient",
- "intro_iOS": "13.0",
+ "intro_iOS": "15.0",
"declAttributes": [
"AccessControl",
"Available"
diff --git a/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface b/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface
index b160ec8..4bf709f 100644
--- a/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface
+++ b/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface
@@ -1,6 +1,6 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 6.2 effective-5.10 (swiftlang-6.2.0.19.9 clang-1700.3.19.1)
-// swift-module-flags: -target x86_64-apple-ios13.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -enable-experimental-feature DebugDescriptionMacro -enable-bare-slash-regex -module-name RIBsTreeViewerClient
+// swift-module-flags: -target x86_64-apple-ios15.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -enable-experimental-feature DebugDescriptionMacro -enable-bare-slash-regex -module-name RIBsTreeViewerClient
// swift-module-flags-ignorable: -no-verify-emitted-module-interface -formal-cxx-interoperability-mode=off -interface-compiler-version 6.2
import Foundation
import RIBs
@@ -22,7 +22,7 @@ public enum RIBsTreeViewerOption {
case webSocketURL(Swift.String)
case monitoringIntervalMillis(Swift.Int)
}
-@available(iOS 13.0, *)
+@available(iOS 15.0, *)
public class RIBsTreeViewerImpl : RIBsTreeViewerClient.RIBsTreeViewer {
#if compiler(>=5.3) && $NonescapableTypes
required public init(router: any RIBs.Routing, options: [RIBsTreeViewerClient.RIBsTreeViewerOption]?)
diff --git a/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.swiftdoc b/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.swiftdoc
index 06fe47a..2f4c125 100644
Binary files a/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.swiftdoc and b/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.swiftdoc differ
diff --git a/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.swiftinterface b/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.swiftinterface
index b160ec8..4bf709f 100644
--- a/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.swiftinterface
+++ b/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.swiftinterface
@@ -1,6 +1,6 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 6.2 effective-5.10 (swiftlang-6.2.0.19.9 clang-1700.3.19.1)
-// swift-module-flags: -target x86_64-apple-ios13.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -enable-experimental-feature DebugDescriptionMacro -enable-bare-slash-regex -module-name RIBsTreeViewerClient
+// swift-module-flags: -target x86_64-apple-ios15.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -enable-experimental-feature DebugDescriptionMacro -enable-bare-slash-regex -module-name RIBsTreeViewerClient
// swift-module-flags-ignorable: -no-verify-emitted-module-interface -formal-cxx-interoperability-mode=off -interface-compiler-version 6.2
import Foundation
import RIBs
@@ -22,7 +22,7 @@ public enum RIBsTreeViewerOption {
case webSocketURL(Swift.String)
case monitoringIntervalMillis(Swift.Int)
}
-@available(iOS 13.0, *)
+@available(iOS 15.0, *)
public class RIBsTreeViewerImpl : RIBsTreeViewerClient.RIBsTreeViewer {
#if compiler(>=5.3) && $NonescapableTypes
required public init(router: any RIBs.Routing, options: [RIBsTreeViewerClient.RIBsTreeViewerOption]?)
diff --git a/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/RIBsTreeViewerClient b/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/RIBsTreeViewerClient
index ea7ceae..5470bec 100755
Binary files a/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/RIBsTreeViewerClient and b/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/RIBsTreeViewerClient differ
diff --git a/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/_CodeSignature/CodeResources b/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/_CodeSignature/CodeResources
index e72293d..ffade11 100644
--- a/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/_CodeSignature/CodeResources
+++ b/Products/RIBsTreeViewerClient.xcframework/ios-arm64_x86_64-simulator/RIBsTreeViewerClient.framework/_CodeSignature/CodeResources
@@ -14,47 +14,47 @@
Info.plist
- H94fkPqXB41T4AezCDV8qa3ceWw=
+ D6asmWDkXcskZokn4kWVvf2JMl4=
Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.abi.json
- Qml/PWH5GgqSv1EHmPh9gV6cSIc=
+ I5CRo3J/gkgmldEirZcoI//qgAs=
Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface
- KsAMQQXP8TNfvYkxjRfEXhrlLXw=
+ 6HSV4ex8GCcv0XfOmhWKaTAy8B4=
Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.swiftdoc
- Z7OeThwM4pCIbyjPXTB2mgm5d3M=
+ bTdmD6PhEfEqvTOZB0xYGyhOWDw=
Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.swiftinterface
- KsAMQQXP8TNfvYkxjRfEXhrlLXw=
+ 6HSV4ex8GCcv0XfOmhWKaTAy8B4=
Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.swiftmodule
- mmAJB3lx8NbSMzDT2W0xQXA/NiI=
+ 7PTJvRQDV1HNdLgfluf9N7NOx/0=
Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.abi.json
- Qml/PWH5GgqSv1EHmPh9gV6cSIc=
+ I5CRo3J/gkgmldEirZcoI//qgAs=
Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface
- UqPdP2+CrXrnvHKwPDy/P3gyUSg=
+ rGfOHXt03lnzrPtBtxeyNLhF90o=
Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.swiftdoc
- rcxsJ8W9koN7G0EmTZsEcqqR5RE=
+ a2OwEA/SDCOP0Bl5GiYA/VexZ6M=
Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.swiftinterface
- UqPdP2+CrXrnvHKwPDy/P3gyUSg=
+ rGfOHXt03lnzrPtBtxeyNLhF90o=
Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.swiftmodule
- j/ZxCmJvulUkiiW5igveLr5JVm0=
+ WtDuLx+RnNPdFaqx81Em3bblLr4=
Modules/module.modulemap
@@ -81,70 +81,70 @@
hash2
- ugcySCvrF/m6HMnU1Lx2OGoGNNftNqHi+YtlT20vF14=
+ ZTLEjOQN42UKTACyBuQN03/IyRLJ/TT4UFeP3HNgxk4=
Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface
hash2
- dU2kH5Iq+R3Q7SHBGeD1Oh3/egLz+DImA/pbmqqvZUU=
+ /6RlLiVLFxp9vHsKRox6meSymo/Es5+E+4uPY9w+7O4=
Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.swiftdoc
hash2
- CxwcBWMAjoDVFjO58ps4UoUrxL/unzuI1cxDHvSpRbw=
+ AUZ7OD4KACpsqEdq1dqAVbSd8d01fFAMKnRjmD5WLvc=
Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.swiftinterface
hash2
- dU2kH5Iq+R3Q7SHBGeD1Oh3/egLz+DImA/pbmqqvZUU=
+ /6RlLiVLFxp9vHsKRox6meSymo/Es5+E+4uPY9w+7O4=
Modules/RIBsTreeViewerClient.swiftmodule/arm64-apple-ios-simulator.swiftmodule
hash2
- JW07oPzo5h/ve4FDh9HSkDIgJi1XqTc9YcFGvb1xbKU=
+ e2kAmGdSaQOCFoqJfCKpA1jc8uXxUxzbsLZjCDXM7Ag=
Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.abi.json
hash2
- ugcySCvrF/m6HMnU1Lx2OGoGNNftNqHi+YtlT20vF14=
+ ZTLEjOQN42UKTACyBuQN03/IyRLJ/TT4UFeP3HNgxk4=
Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface
hash2
- xGQLWfqQp+pSmkkf8tkJEVGRskCuTDm97qi1wUgnHLY=
+ zw0HyQvJn4GggJx0DkMTViIv8pckq6r3w+TVbEUsVXQ=
Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.swiftdoc
hash2
- YgrIz2dqyNMxL06T1EI2t3nvLjVQiHqMM8uEpq0YSNU=
+ EW6p9HPhVvDASuMALKHpyJSn4Z1BB0L1to75anZ9xw0=
Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.swiftinterface
hash2
- xGQLWfqQp+pSmkkf8tkJEVGRskCuTDm97qi1wUgnHLY=
+ zw0HyQvJn4GggJx0DkMTViIv8pckq6r3w+TVbEUsVXQ=
Modules/RIBsTreeViewerClient.swiftmodule/x86_64-apple-ios-simulator.swiftmodule
hash2
- pF13kxt1ZagQYSYLYu/G0LAYaJ3+88z11muA5u1FvoU=
+ DX3kmjsw7UY1f0VJySqEp+dp9MJFwZzoe6Z6P+cs0M0=
Modules/module.modulemap
diff --git a/README.md b/README.md
index bb28d9c..3fd9f00 100644
--- a/README.md
+++ b/README.md
@@ -1,134 +1,119 @@
-
-[](https://github.com/Carthage/Carthage)
+
+
# RIBsTreeViewer
-
+
Real Time viewing attached RIBs Tree on Browser
## Demo
-
+
-## Using the Libraries
+## Requirements
-### XCFramework
+- **iOS 15+** (aligned with [RIBs-iOS](https://github.com/uber/RIBs-iOS) 1.0)
+- Xcode 15+
+- Node.js 20+ (WebSocket relay and browser viewer)
-Add the xcframework to your project。
+## Quick start (local tooling)
-```
-./Products/RIBsTreeViewerClient.xcframework
+From a clean clone — **no Carthage**:
+
+```shell
+./scripts/verify.sh
```
-### Swift Package Manager (in progress)
+Then run the viewer stack in three terminals:
-SPM integration is being rolled out in [#38](https://github.com/srea/RIBsTreeViewerClient/issues/38). For local development of this repo:
+```shell
+# 1. WebSocket relay (port 8080)
+cd WebSocketServer && npm install && npm start
-```swift
-// Package.swift dependency (consumer apps)
-.package(url: "https://github.com/srea/RIBsTreeViewerClient.git", from: "1.0.7"),
-```
+# 2. Browser tree UI
+cd Browser && yarn install && yarn build && open ./public/index.html
-Or add this package in Xcode via **File → Add Package Dependencies** (once a tagged release includes SPM support).
+# 3. Your iOS app (DEBUG): attach RIBsTreeViewer to the launch router — see below
+```
-Requirements when using SPM: **iOS 15+**, [RIBs-iOS](https://github.com/uber/RIBs-iOS) 1.0+, RxSwift 6.x.
+## Using the library in your app
-### CocoaPods
+### Swift Package Manager (recommended)
-This is not supported because the RIBs do not provide an up-to-date PodSpec, making it difficult to resolve dependencies.
+In Xcode: **File → Add Package Dependencies** → `https://github.com/srea/RIBsTreeViewerClient.git`
-### Carthage
+Or in `Package.swift`:
-```shell
-github "srea/RIBsTreeViewerClient"
+```swift
+dependencies: [
+ .package(url: "https://github.com/srea/RIBsTreeViewerClient.git", branch: "master"),
+],
+targets: [
+ .target(
+ name: "YourApp",
+ dependencies: [
+ .product(name: "RIBsTreeViewerClient", package: "RIBsTreeViewerClient"),
+ ]
+ ),
+]
```
-```
-$ make setup
-```
+This pulls [RIBs-iOS](https://github.com/uber/RIBs-iOS) 1.0+ and RxSwift 6.x automatically.
-Requires Xcode 15+ and [Carthage](https://github.com/Carthage/Carthage). Dependencies are built as XCFrameworks (Apple Silicon–compatible). Minimum iOS: **13.0** (library source targets **15.0+** when using SPM — see [#38](https://github.com/srea/RIBsTreeViewerClient/issues/38)).
+### XCFramework
-To regenerate the prebuilt `Products/RIBsTreeViewerClient.xcframework` after source changes:
+Add the prebuilt binary (no Carthage required for consumers):
```
-$ make generate_xcframeworks
+./Products/RIBsTreeViewerClient.xcframework
```
-#### Build Phase
-
-
-
-
-Carthage CopyFrameworks (ONLY DEBUG)
+Regenerate after changing library sources:
```shell
- if [ ${CONFIGURATION%%-*} == "Debug" ]; then
- /usr/local/bin/carthage copy-frameworks
- fi
+make generate_xcframeworks
```
-## Basic setup
+### Carthage (legacy)
-```swift
-@UIApplicationMain
-public class AppDelegate: UIResponder, UIApplicationDelegate {
-
- private var ribsTreeViewer: RIBsTreeViewer? = nil
-
- public func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
- let window = UIWindow(frame: UIScreen.main.bounds)
- self.window = window
-
- let result = RootBuilder(dependency: AppComponent()).build()
- let launchRouter = result.launchRouter
- self.launchRouter = launchRouter
- urlHandler = result.urlHandler
- launchRouter.launch(from: window)
- startRIBsTreeViewer(launchRouter: launchRouter)
- return true
- }
-}
-```
+Carthage is **deprecated** for this repo ([#38](https://github.com/srea/RIBsTreeViewerClient/issues/38)). Prefer SPM or the XCFramework above.
-```swift
-// MARK: - RIBsTreeViewer
+## Basic setup (iOS app, DEBUG)
+```swift
#if DEBUG
import RIBsTreeViewerClient
extension AppDelegate {
private func startRIBsTreeViewer(launchRouter: Routing) {
if #available(iOS 15.0, *) {
- ribsTreeViewer = RIBsTreeViewerImpl.init(router: launchRouter,
- options: [.webSocketURL("ws://0.0.0.0:8080"),
- .monitoringIntervalMillis(1000)])
- ribsTreeViewer?.start()
- } else {
- // RIBsTreeViewer is not supported OS version.
+ let viewer = RIBsTreeViewerImpl(
+ router: launchRouter,
+ options: [
+ .webSocketURL("ws://127.0.0.1:8080"),
+ .monitoringIntervalMillis(1000),
+ ]
+ )
+ viewer.start()
}
}
}
#endif
```
-### Starting the WebSocket relay server
+Use `127.0.0.1` when running the simulator on the same Mac as the WebSocket relay.
-```shell
-cd WebSocketServer
-npm install
-npm start
-```
+## Development commands
-The server listens on port `8080` by default. Override with `PORT=9090 npm start`.
+| Command | Description |
+|---------|-------------|
+| `./scripts/verify.sh` | Full usability check (SPM, Xcode, Browser, WebSocket) |
+| `./scripts/build-spm-package.sh` | Build library via SwiftPM only |
+| `make generate_xcframeworks` | Rebuild `Products/*.xcframework` |
+| `make browser-build` | Build browser bundle |
+| `make websocket-server` | Start WebSocket relay |
-### Build and open the browser viewer
-
-```shell
-cd Browser
-yarn install
-yarn build
-open ./public/index.html
-```
+## Migration notes
-For development, run `yarn watch` in `Browser/` to rebuild on source changes.
\ No newline at end of file
+- RIBs iOS now lives at [uber/RIBs-iOS](https://github.com/uber/RIBs-iOS) (not `uber/RIBs`).
+- Minimum iOS is **15** for SPM / current sources; older XCFrameworks may still show iOS 13 in metadata until regenerated.
diff --git a/RIBsTreeViewerClient.xcodeproj/project.pbxproj b/RIBsTreeViewerClient.xcodeproj/project.pbxproj
index 362111e..4e60e98 100644
--- a/RIBsTreeViewerClient.xcodeproj/project.pbxproj
+++ b/RIBsTreeViewerClient.xcodeproj/project.pbxproj
@@ -9,9 +9,6 @@
/* Begin PBXBuildFile section */
C555E16421EF16520060A7B0 /* RIBsTreeViewerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = C555E16221EF16520060A7B0 /* RIBsTreeViewerClient.h */; settings = {ATTRIBUTES = (Public, ); }; };
C555E16B21EF16790060A7B0 /* RIBsTreeViewer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C555E16A21EF16790060A7B0 /* RIBsTreeViewer.swift */; };
- C555E18821EF244C0060A7B0 /* RIBs.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C555E18421EF20F10060A7B0 /* RIBs.framework */; platformFilter = ios; };
- C555E18921EF245A0060A7B0 /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C555E18621EF20FF0060A7B0 /* RxSwift.framework */; platformFilter = ios; };
- C555E18E21EF28000060A7B0 /* RxRelay.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C555E18D21EF28000060A7B0 /* RxRelay.framework */; platformFilter = ios; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
@@ -19,11 +16,6 @@
C555E16221EF16520060A7B0 /* RIBsTreeViewerClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RIBsTreeViewerClient.h; sourceTree = ""; };
C555E16321EF16520060A7B0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
C555E16A21EF16790060A7B0 /* RIBsTreeViewer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RIBsTreeViewer.swift; sourceTree = ""; };
- C555E18421EF20F10060A7B0 /* RIBs.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = RIBs.xcframework; path = Carthage/Build/RIBs.xcframework; sourceTree = ""; };
- C555E18621EF20FF0060A7B0 /* RxSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = RxSwift.xcframework; path = Carthage/Build/RxSwift.xcframework; sourceTree = ""; };
- C555E18D21EF28000060A7B0 /* RxRelay.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = RxRelay.xcframework; path = Carthage/Build/RxRelay.xcframework; sourceTree = ""; };
- C555E18A21EF27150060A7B0 /* SocketIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SocketIO.framework; path = Carthage/Build/iOS/SocketIO.framework; sourceTree = ""; };
- C555E18C21EF271F0060A7B0 /* Starscream.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Starscream.framework; path = Carthage/Build/iOS/Starscream.framework; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -31,9 +23,6 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- C555E18E21EF28000060A7B0 /* RxRelay.framework in Frameworks */,
- C555E18921EF245A0060A7B0 /* RxSwift.framework in Frameworks */,
- C555E18821EF244C0060A7B0 /* RIBs.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -45,7 +34,6 @@
children = (
C555E16121EF16520060A7B0 /* RIBsTreeViewerClient */,
C555E16021EF16520060A7B0 /* Products */,
- C555E18321EF20F00060A7B0 /* Frameworks */,
);
sourceTree = "";
};
@@ -75,18 +63,6 @@
path = Sources;
sourceTree = "";
};
- C555E18321EF20F00060A7B0 /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- C555E18C21EF271F0060A7B0 /* Starscream.framework */,
- C555E18A21EF27150060A7B0 /* SocketIO.framework */,
- C555E18D21EF28000060A7B0 /* RxRelay.framework */,
- C555E18621EF20FF0060A7B0 /* RxSwift.framework */,
- C555E18421EF20F10060A7B0 /* RIBs.framework */,
- );
- name = Frameworks;
- sourceTree = "";
- };
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
@@ -115,6 +91,10 @@
dependencies = (
);
name = RIBsTreeViewerClient;
+ packageProductDependencies = (
+ C555E19221EF30020060A7B0 /* RIBs */,
+ C555E19321EF30030060A7B0 /* RxSwift */,
+ );
productName = RIBsTreeViewerClient;
productReference = C555E15F21EF16520060A7B0 /* RIBsTreeViewerClient.framework */;
productType = "com.apple.product-type.framework";
@@ -145,6 +125,10 @@
Base,
);
mainGroup = C555E15521EF16520060A7B0;
+ packageReferences = (
+ C555E19021EF30000060A7B0 /* XCRemoteSwiftPackageReference "RIBs-iOS" */,
+ C555E19121EF30010060A7B0 /* XCRemoteSwiftPackageReference "RxSwift" */,
+ );
productRefGroup = C555E16021EF16520060A7B0 /* Products */;
projectDirPath = "";
projectRoot = "";
@@ -228,7 +212,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
@@ -287,7 +271,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = iphoneos;
@@ -310,28 +294,15 @@
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build",
- );
INFOPLIST_FILE = RIBsTreeViewerClient/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
- MARKETING_VERSION = 1.0.7;
- OTHER_LDFLAGS = (
- "$(inherited)",
- "-framework",
- RIBs,
- "-framework",
- RxRelay,
- "-framework",
- RxSwift,
- );
+ MARKETING_VERSION = 1.0.8;
PRODUCT_BUNDLE_IDENTIFIER = co.minipro.app.RIBsTreeViewerClient;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
@@ -353,28 +324,15 @@
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build",
- );
INFOPLIST_FILE = RIBsTreeViewerClient/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
- MARKETING_VERSION = 1.0.7;
- OTHER_LDFLAGS = (
- "$(inherited)",
- "-framework",
- RIBs,
- "-framework",
- RxRelay,
- "-framework",
- RxSwift,
- );
+ MARKETING_VERSION = 1.0.8;
PRODUCT_BUNDLE_IDENTIFIER = co.minipro.app.RIBsTreeViewerClient;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
@@ -386,6 +344,38 @@
};
/* End XCBuildConfiguration section */
+/* Begin XCRemoteSwiftPackageReference section */
+ C555E19021EF30000060A7B0 /* XCRemoteSwiftPackageReference "RIBs-iOS" */ = {
+ isa = XCRemoteSwiftPackageReference;
+ repositoryURL = "https://github.com/uber/RIBs-iOS.git";
+ requirement = {
+ kind = upToNextMajorVersion;
+ minimumVersion = 1.0.0;
+ };
+ };
+ C555E19121EF30010060A7B0 /* XCRemoteSwiftPackageReference "RxSwift" */ = {
+ isa = XCRemoteSwiftPackageReference;
+ repositoryURL = "https://github.com/ReactiveX/RxSwift.git";
+ requirement = {
+ kind = upToNextMajorVersion;
+ minimumVersion = 6.9.0;
+ };
+ };
+/* End XCRemoteSwiftPackageReference section */
+
+/* Begin XCSwiftPackageProductDependency section */
+ C555E19221EF30020060A7B0 /* RIBs */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = C555E19021EF30000060A7B0 /* XCRemoteSwiftPackageReference "RIBs-iOS" */;
+ productName = RIBs;
+ };
+ C555E19321EF30030060A7B0 /* RxSwift */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = C555E19121EF30010060A7B0 /* XCRemoteSwiftPackageReference "RxSwift" */;
+ productName = RxSwift;
+ };
+/* End XCSwiftPackageProductDependency section */
+
/* Begin XCConfigurationList section */
C555E15921EF16520060A7B0 /* Build configuration list for PBXProject "RIBsTreeViewerClient" */ = {
isa = XCConfigurationList;
diff --git a/scripts/build-xcode-project.sh b/scripts/build-xcode-project.sh
new file mode 100755
index 0000000..91b8de0
--- /dev/null
+++ b/scripts/build-xcode-project.sh
@@ -0,0 +1,18 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+ROOT="$(cd "$(dirname "$0")/.." && pwd)"
+cd "$ROOT"
+
+xcodebuild -resolvePackageDependencies \
+ -project RIBsTreeViewerClient.xcodeproj \
+ -scheme RIBsTreeViewerClient
+
+xcodebuild build \
+ -project RIBsTreeViewerClient.xcodeproj \
+ -scheme RIBsTreeViewerClient \
+ -destination 'generic/platform=iOS Simulator' \
+ -configuration Release \
+ BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
+ CODE_SIGNING_ALLOWED=NO \
+ "$@"
diff --git a/scripts/generate_xcframeworks.sh b/scripts/generate_xcframeworks.sh
index d645c6e..5e24916 100755
--- a/scripts/generate_xcframeworks.sh
+++ b/scripts/generate_xcframeworks.sh
@@ -4,13 +4,12 @@ set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
cd "$ROOT"
-if [[ ! -d Carthage/Build/RIBs.xcframework ]]; then
- echo "Run 'make setup' before generating XCFrameworks."
- exit 1
-fi
-
rm -rf ./Products/RIBsTreeViewerClient.xcframework build
+xcodebuild -resolvePackageDependencies \
+ -project RIBsTreeViewerClient.xcodeproj \
+ -scheme RIBsTreeViewerClient
+
COMMON_FLAGS=(
BUILD_LIBRARY_FOR_DISTRIBUTION=YES
SKIP_INSTALL=NO
diff --git a/scripts/verify.sh b/scripts/verify.sh
new file mode 100755
index 0000000..0cbc128
--- /dev/null
+++ b/scripts/verify.sh
@@ -0,0 +1,37 @@
+#!/usr/bin/env bash
+# Verify RIBsTreeViewerClient is in a usable state (no Carthage required).
+set -euo pipefail
+
+ROOT="$(cd "$(dirname "$0")/.." && pwd)"
+cd "$ROOT"
+
+echo "==> Swift Package Manager library build"
+./scripts/build-spm-package.sh
+
+echo "==> Xcode project (SPM dependencies, iOS Simulator)"
+xcodebuild -resolvePackageDependencies \
+ -project RIBsTreeViewerClient.xcodeproj \
+ -scheme RIBsTreeViewerClient
+xcodebuild build \
+ -project RIBsTreeViewerClient.xcodeproj \
+ -scheme RIBsTreeViewerClient \
+ -destination 'generic/platform=iOS Simulator' \
+ -configuration Release \
+ BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
+ CODE_SIGNING_ALLOWED=NO \
+ -derivedDataPath .build/DerivedData-verify
+
+echo "==> Prebuilt XCFramework"
+test -f Products/RIBsTreeViewerClient.xcframework/Info.plist
+
+echo "==> WebSocket relay"
+(cd WebSocketServer && npm ci)
+
+echo "==> Browser viewer"
+(cd Browser && yarn install --frozen-lockfile && yarn build)
+
+echo ""
+echo "All checks passed. Usable workflow:"
+echo " 1. cd WebSocketServer && npm start"
+echo " 2. cd Browser && yarn build && open ./public/index.html"
+echo " 3. Link Products/RIBsTreeViewerClient.xcframework or add SPM package in your app (# DEBUG)"