From 2c476c7582f59a80963d83a73a604ca708ef5aa9 Mon Sep 17 00:00:00 2001 From: Emad Ghorbaninia Date: Tue, 8 Jun 2021 10:52:05 +0200 Subject: [PATCH 01/29] Replace all the class with AnyObject due to the deprication. --- Sources/Engine/Engine.swift | 2 +- Sources/Framer/FrameCollector.swift | 2 +- Sources/Framer/Framer.swift | 2 +- Sources/Framer/HTTPHandler.swift | 4 ++-- Sources/Security/Security.swift | 4 ++-- Sources/Server/Server.swift | 2 +- Sources/Starscream/WebSocket.swift | 4 ++-- Sources/Transport/Transport.swift | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Sources/Engine/Engine.swift b/Sources/Engine/Engine.swift index a60ef7e8..71a4d06a 100644 --- a/Sources/Engine/Engine.swift +++ b/Sources/Engine/Engine.swift @@ -8,7 +8,7 @@ import Foundation -public protocol EngineDelegate: class { +public protocol EngineDelegate: AnyObject { func didReceive(event: WebSocketEvent) } diff --git a/Sources/Framer/FrameCollector.swift b/Sources/Framer/FrameCollector.swift index 3ec1084c..1822b0d6 100644 --- a/Sources/Framer/FrameCollector.swift +++ b/Sources/Framer/FrameCollector.swift @@ -22,7 +22,7 @@ import Foundation -public protocol FrameCollectorDelegate: class { +public protocol FrameCollectorDelegate: AnyObject { func didForm(event: FrameCollector.Event) func decompress(data: Data, isFinal: Bool) -> Data? } diff --git a/Sources/Framer/Framer.swift b/Sources/Framer/Framer.swift index 9e7cf5c7..049e4e17 100644 --- a/Sources/Framer/Framer.swift +++ b/Sources/Framer/Framer.swift @@ -71,7 +71,7 @@ public enum FrameEvent { case error(Error) } -public protocol FramerEventClient: class { +public protocol FramerEventClient: AnyObject { func frameProcessed(event: FrameEvent) } diff --git a/Sources/Framer/HTTPHandler.swift b/Sources/Framer/HTTPHandler.swift index d7ebc5a8..bddf04b7 100644 --- a/Sources/Framer/HTTPHandler.swift +++ b/Sources/Framer/HTTPHandler.swift @@ -94,7 +94,7 @@ public enum HTTPEvent { case failure(Error) } -public protocol HTTPHandlerDelegate: class { +public protocol HTTPHandlerDelegate: AnyObject { func didReceiveHTTP(event: HTTPEvent) } @@ -104,7 +104,7 @@ public protocol HTTPHandler { func parse(data: Data) -> Int } -public protocol HTTPServerDelegate: class { +public protocol HTTPServerDelegate: AnyObject { func didReceive(event: HTTPEvent) } diff --git a/Sources/Security/Security.swift b/Sources/Security/Security.swift index a64a7713..d83a6bda 100644 --- a/Sources/Security/Security.swift +++ b/Sources/Security/Security.swift @@ -34,12 +34,12 @@ public enum PinningState { // CertificatePinning protocol provides an interface for Transports to handle Certificate // or Public Key Pinning. -public protocol CertificatePinning: class { +public protocol CertificatePinning: AnyObject { func evaluateTrust(trust: SecTrust, domain: String?, completion: ((PinningState) -> ())) } // validates the "Sec-WebSocket-Accept" header as defined 1.3 of the RFC 6455 // https://tools.ietf.org/html/rfc6455#section-1.3 -public protocol HeaderValidator: class { +public protocol HeaderValidator: AnyObject { func validate(headers: [String: String], key: String) -> Error? } diff --git a/Sources/Server/Server.swift b/Sources/Server/Server.swift index 527c851d..64cf561d 100644 --- a/Sources/Server/Server.swift +++ b/Sources/Server/Server.swift @@ -36,7 +36,7 @@ public protocol Connection { func write(data: Data, opcode: FrameOpCode) } -public protocol ConnectionDelegate: class { +public protocol ConnectionDelegate: AnyObject { func didReceive(event: ServerEvent) } diff --git a/Sources/Starscream/WebSocket.swift b/Sources/Starscream/WebSocket.swift index f09df584..f3597294 100644 --- a/Sources/Starscream/WebSocket.swift +++ b/Sources/Starscream/WebSocket.swift @@ -41,7 +41,7 @@ public struct WSError: Error { } } -public protocol WebSocketClient: class { +public protocol WebSocketClient: AnyObject { func connect() func disconnect(closeCode: UInt16) func write(string: String, completion: (() -> ())?) @@ -87,7 +87,7 @@ public enum WebSocketEvent { case cancelled } -public protocol WebSocketDelegate: class { +public protocol WebSocketDelegate: AnyObject { func didReceive(event: WebSocketEvent, client: WebSocketClient) } diff --git a/Sources/Transport/Transport.swift b/Sources/Transport/Transport.swift index e645651f..e0e74085 100644 --- a/Sources/Transport/Transport.swift +++ b/Sources/Transport/Transport.swift @@ -42,11 +42,11 @@ public enum ConnectionState { case receive(Data) } -public protocol TransportEventClient: class { +public protocol TransportEventClient: AnyObject { func connectionChanged(state: ConnectionState) } -public protocol Transport: class { +public protocol Transport: AnyObject { func register(delegate: TransportEventClient) func connect(url: URL, timeout: Double, certificatePinning: CertificatePinning?) func disconnect() From f3548815504647b22375c1e9448a439b2a4b178d Mon Sep 17 00:00:00 2001 From: NachoSoto Date: Wed, 16 Aug 2023 15:18:19 -0700 Subject: [PATCH 02/29] Added support for `xrOS` (#973) --- Starscream.xcodeproj/project.pbxproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Starscream.xcodeproj/project.pbxproj b/Starscream.xcodeproj/project.pbxproj index 4379a960..b35ead4a 100644 --- a/Starscream.xcodeproj/project.pbxproj +++ b/Starscream.xcodeproj/project.pbxproj @@ -543,10 +543,10 @@ IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos macosx appletvos appletvsimulator watchsimulator watchos"; + SUPPORTED_PLATFORMS = "iphonesimulator iphoneos macosx appletvos appletvsimulator watchsimulator watchos xros xrsimulator"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,3,4"; + TARGETED_DEVICE_FAMILY = "1,2,3,4,7"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -595,9 +595,9 @@ GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos macosx appletvos appletvsimulator watchsimulator watchos"; + SUPPORTED_PLATFORMS = "iphonesimulator iphoneos macosx appletvos appletvsimulator watchsimulator watchos xros xrsimulator"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,3,4"; + TARGETED_DEVICE_FAMILY = "1,2,3,4,7"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; From 060600f3434b5ec1d7e3a835e21bae798b9f4149 Mon Sep 17 00:00:00 2001 From: Ste Prescott Date: Wed, 16 Aug 2023 23:19:18 +0100 Subject: [PATCH 03/29] Conditionally include 'swift-nio-zlib-support' dependency to avoid warning on macOS (#964) Co-authored-by: Mykola Varahash From 5ab0d5a5416fe63d74b6eb906cb39c213ceeeb06 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Aug 2023 17:19:37 -0500 Subject: [PATCH 04/29] Bump addressable from 2.7.0 to 2.8.1 (#963) Bumps [addressable](https://github.com/sporkmonger/addressable) from 2.7.0 to 2.8.1. - [Release notes](https://github.com/sporkmonger/addressable/releases) - [Changelog](https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md) - [Commits](https://github.com/sporkmonger/addressable/compare/addressable-2.7.0...addressable-2.8.1) --- updated-dependencies: - dependency-name: addressable dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 989fe592..589e80ad 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,8 +7,8 @@ GEM minitest (~> 5.1) thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) - addressable (2.7.0) - public_suffix (>= 2.0.2, < 5.0) + addressable (2.8.1) + public_suffix (>= 2.0.2, < 6.0) algoliasearch (1.27.1) httpclient (~> 2.8, >= 2.8.3) json (>= 1.5.1) From 3c5a48404933905e382c5e3f49bd435b838ef402 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Aug 2023 17:19:45 -0500 Subject: [PATCH 05/29] Bump tzinfo from 1.2.6 to 1.2.10 (#955) Bumps [tzinfo](https://github.com/tzinfo/tzinfo) from 1.2.6 to 1.2.10. - [Release notes](https://github.com/tzinfo/tzinfo/releases) - [Changelog](https://github.com/tzinfo/tzinfo/blob/master/CHANGES.md) - [Commits](https://github.com/tzinfo/tzinfo/compare/v1.2.6...v1.2.10) --- updated-dependencies: - dependency-name: tzinfo dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 589e80ad..f89b7c82 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -187,7 +187,7 @@ GEM tty-screen (0.7.0) tty-spinner (0.9.2) tty-cursor (~> 0.7) - tzinfo (1.2.6) + tzinfo (1.2.10) thread_safe (~> 0.1) uber (0.1.0) unf (0.1.4) From cb131f8ea33a27461b09894c843c2a2dcdde56f9 Mon Sep 17 00:00:00 2001 From: Hugin Date: Thu, 17 Aug 2023 06:20:26 +0800 Subject: [PATCH 06/29] Update README.md (#950) Modify the version reference to prevent user copy errors --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1e742311..43f0ee84 100644 --- a/README.md +++ b/README.md @@ -205,7 +205,7 @@ To use Starscream in your project add the following 'Podfile' to your project platform :ios, '9.0' use_frameworks! - pod 'Starscream', '~> 4.0.0' + pod 'Starscream', '~> 4.0.4' Then run: @@ -227,7 +227,7 @@ $ brew install carthage To integrate Starscream into your Xcode project using Carthage, specify it in your `Cartfile`: ``` -github "daltoniam/Starscream" >= 4.0.0 +github "daltoniam/Starscream" >= 4.0.4 ``` ### Accio @@ -237,7 +237,7 @@ Check out the [Accio](https://github.com/JamitLabs/Accio) docs on how to add a i Add the following to your Package.swift: ```swift -.package(url: "https://github.com/daltoniam/Starscream.git", .upToNextMajor(from: "4.0.0")), +.package(url: "https://github.com/daltoniam/Starscream.git", .upToNextMajor(from: "4.0.4")), ``` Next, add `Starscream` to your App targets dependencies like so: From f900d67759cdd11df3dcca34af21f40f59fe4e79 Mon Sep 17 00:00:00 2001 From: Jenea Vranceanu <36865532+JeneaVranceanu@users.noreply.github.com> Date: Thu, 17 Aug 2023 01:21:37 +0300 Subject: [PATCH 07/29] fix: added peerClosed case for WebSocketEvent enum (#946) --- Sources/Engine/WSEngine.swift | 2 ++ Sources/Server/WebSocketServer.swift | 2 ++ Sources/Starscream/WebSocket.swift | 1 + Sources/Transport/TCPTransport.swift | 7 +++++++ Sources/Transport/Transport.swift | 20 +++++++++++++++----- Tests/FuzzingTests.swift | 2 ++ 6 files changed, 29 insertions(+), 5 deletions(-) diff --git a/Sources/Engine/WSEngine.swift b/Sources/Engine/WSEngine.swift index decca641..4ae5e44f 100644 --- a/Sources/Engine/WSEngine.swift +++ b/Sources/Engine/WSEngine.swift @@ -140,6 +140,8 @@ FrameCollectorDelegate, HTTPHandlerDelegate { } case .cancelled: broadcast(event: .cancelled) + case .peerClosed: + broadcast(event: .peerClosed) } } diff --git a/Sources/Server/WebSocketServer.swift b/Sources/Server/WebSocketServer.swift index 4d3b9af5..78657806 100644 --- a/Sources/Server/WebSocketServer.swift +++ b/Sources/Server/WebSocketServer.swift @@ -138,6 +138,8 @@ public class ServerConnection: Connection, HTTPServerDelegate, FramerEventClient case .cancelled: print("server connection cancelled!") //broadcast(event: .cancelled) + case .peerClosed: + delegate?.didReceive(event: .disconnected(self, "Connection closed by peer", UInt16(FrameOpCode.connectionClose.rawValue))) } } diff --git a/Sources/Starscream/WebSocket.swift b/Sources/Starscream/WebSocket.swift index f3597294..2f529a5c 100644 --- a/Sources/Starscream/WebSocket.swift +++ b/Sources/Starscream/WebSocket.swift @@ -85,6 +85,7 @@ public enum WebSocketEvent { case viabilityChanged(Bool) case reconnectSuggested(Bool) case cancelled + case peerClosed } public protocol WebSocketDelegate: AnyObject { diff --git a/Sources/Transport/TCPTransport.swift b/Sources/Transport/TCPTransport.swift index 459cb2ed..3f0a1757 100644 --- a/Sources/Transport/TCPTransport.swift +++ b/Sources/Transport/TCPTransport.swift @@ -144,6 +144,13 @@ public class TCPTransport: Transport { // Refer to https://developer.apple.com/documentation/network/implementing_netcat_with_network_framework if let context = context, context.isFinal, isComplete { + if let delegate = s.delegate { + // Let the owner of this TCPTransport decide what to do next: disconnect or reconnect? + delegate.connectionChanged(state: .peerClosed) + } else { + // No use to keep connection alive + s.disconnect() + } return } diff --git a/Sources/Transport/Transport.swift b/Sources/Transport/Transport.swift index e0e74085..f954b484 100644 --- a/Sources/Transport/Transport.swift +++ b/Sources/Transport/Transport.swift @@ -25,21 +25,31 @@ import Foundation public enum ConnectionState { + /// Ready connections can send and receive data case connected + + /// Waiting connections have not yet been started, or do not have a viable network case waiting + + /// Cancelled connections have been invalidated by the client and will send no more events case cancelled + + /// Failed connections are disconnected and can no longer send or receive data case failed(Error?) - //the viability (connection status) of the connection has updated - //e.g. connection is down, connection came back up, etc + /// Viability (connection status) of the connection has updated + /// e.g. connection is down, connection came back up, etc. case viability(Bool) - //the connection has upgrade to wifi from cellular. - //you should consider reconnecting to take advantage of this + /// Connection ca be upgraded to wifi from cellular. + /// You should consider reconnecting to take advantage of this. case shouldReconnect(Bool) - //the connection receive data + /// Received data case receive(Data) + + /// Remote peer has closed the network connection. + case peerClosed } public protocol TransportEventClient: AnyObject { diff --git a/Tests/FuzzingTests.swift b/Tests/FuzzingTests.swift index a6c94451..23db35a0 100644 --- a/Tests/FuzzingTests.swift +++ b/Tests/FuzzingTests.swift @@ -66,6 +66,8 @@ class FuzzingTests: XCTestCase { break case .cancelled: break + case .peerClosed: + break } } websocket.connect() From cdb61a3624d8af3f5520f0dac20d23f3f434275e Mon Sep 17 00:00:00 2001 From: newloran2 Date: Wed, 16 Aug 2023 19:22:28 -0300 Subject: [PATCH 08/29] Fix for start websocket with cookies in initial request (#942) --- Sources/Framer/HTTPHandler.swift | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Sources/Framer/HTTPHandler.swift b/Sources/Framer/HTTPHandler.swift index bddf04b7..488dd030 100644 --- a/Sources/Framer/HTTPHandler.swift +++ b/Sources/Framer/HTTPHandler.swift @@ -67,12 +67,14 @@ public struct HTTPWSHeader { req.setValue(HTTPWSHeader.versionValue, forHTTPHeaderField: HTTPWSHeader.versionName) req.setValue(secKeyValue, forHTTPHeaderField: HTTPWSHeader.keyName) - if let cookies = HTTPCookieStorage.shared.cookies(for: url), !cookies.isEmpty { - let headers = HTTPCookie.requestHeaderFields(with: cookies) - for (key, val) in headers { - req.setValue(val, forHTTPHeaderField: key) + if req.allHTTPHeaderFields?["Cookie"] == nil { + if let cookies = HTTPCookieStorage.shared.cookies(for: url), !cookies.isEmpty { + let headers = HTTPCookie.requestHeaderFields(with: cookies) + for (key, val) in headers { + req.setValue(val, forHTTPHeaderField: key) + } } - } + } if supportsCompression { let val = "permessage-deflate; client_max_window_bits; server_max_window_bits=15" From 826008daab578d9f182d6de9d61bee3944208658 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Aug 2023 17:24:08 -0500 Subject: [PATCH 09/29] Bump cocoapods-downloader from 1.3.0 to 1.6.3 (#948) Bumps [cocoapods-downloader](https://github.com/CocoaPods/cocoapods-downloader) from 1.3.0 to 1.6.3. - [Release notes](https://github.com/CocoaPods/cocoapods-downloader/releases) - [Changelog](https://github.com/CocoaPods/cocoapods-downloader/blob/master/CHANGELOG.md) - [Commits](https://github.com/CocoaPods/cocoapods-downloader/compare/1.3.0...1.6.3) --- updated-dependencies: - dependency-name: cocoapods-downloader dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index f89b7c82..182eff8e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -41,7 +41,7 @@ GEM fuzzy_match (~> 2.0.4) nap (~> 1.0) cocoapods-deintegrate (1.0.4) - cocoapods-downloader (1.3.0) + cocoapods-downloader (1.6.3) cocoapods-plugins (1.0.0) nap cocoapods-search (1.0.0) From 04acf17f4cf55d24bdc920cc6950d5e80be60f1b Mon Sep 17 00:00:00 2001 From: Mustapha Qadri <43132553+MustaphaQadri@users.noreply.github.com> Date: Thu, 17 Aug 2023 00:25:49 +0200 Subject: [PATCH 10/29] Added support for connection error (#912) --- Sources/Engine/NativeEngine.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Sources/Engine/NativeEngine.swift b/Sources/Engine/NativeEngine.swift index 1bd5b6a8..63455091 100644 --- a/Sources/Engine/NativeEngine.swift +++ b/Sources/Engine/NativeEngine.swift @@ -94,4 +94,8 @@ public class NativeEngine: NSObject, Engine, URLSessionDataDelegate, URLSessionW } broadcast(event: .disconnected(r, UInt16(closeCode.rawValue))) } + + public func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) { + broadcast(event: .error(error)) + } } From 66a441a9174fdd72b6d5353627701d7b1dc367d4 Mon Sep 17 00:00:00 2001 From: Muhammad Adil Date: Thu, 17 Aug 2023 03:29:37 +0500 Subject: [PATCH 11/29] rfc6455 link fixed (#952) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 43f0ee84..fac1963e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![starscream](https://raw.githubusercontent.com/daltoniam/starscream/assets/starscream.jpg) -Starscream is a conforming WebSocket ([RFC 6455](http://tools.ietf.org/html/rfc6455)) library in Swift. +Starscream is a conforming WebSocket ([RFC 6455](https://datatracker.ietf.org/doc/html/rfc6455)) library in Swift. ## Features From ea9a6ff27e32134e816ac522fae4d4d76e67e88a Mon Sep 17 00:00:00 2001 From: Austin Cherry Date: Sat, 19 Aug 2023 13:03:25 -0500 Subject: [PATCH 12/29] feat: cleanup, update for latest xcode/swift, add release workflow --- .github/workflows/release.yml | 23 ++ .travis.yml | 7 - Gemfile.lock | 291 +++++++++++------- LICENSE | 2 +- Package.resolved | 16 - Sources/Engine/Engine.swift | 16 +- Sources/Engine/NativeEngine.swift | 16 +- Sources/Engine/WSEngine.swift | 16 +- Sources/Starscream.h | 18 +- Sources/Transport/Transport.swift | 2 - Starscream.podspec | 6 +- Starscream.xcodeproj/project.pbxproj | 81 +++-- .../xcschemes/Starscream.xcscheme | 28 +- Tests/FuzzingTests.swift | 14 + Tests/MockServer.swift | 14 + Tests/MockTransport.swift | 16 +- Tests/StarscreamTests/StarscreamTests.swift | 16 +- build.sh | 6 - .../Autobahn.xcodeproj/project.pbxproj | 52 +++- examples/AutobahnTest/Autobahn/Info.plist | 2 +- .../SimpleTest/ViewController.swift | 17 +- fastlane/Fastfile | 23 +- fastlane/README.md | 38 ++- release.sh | 4 - 24 files changed, 484 insertions(+), 240 deletions(-) create mode 100644 .github/workflows/release.yml delete mode 100644 .travis.yml delete mode 100644 Package.resolved delete mode 100755 build.sh delete mode 100755 release.sh diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..5c5f0dae --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,23 @@ +name: Release + +on: + push: + tags: + - "*.*.*" +jobs: + release: + runs-on: macos-latest + + steps: + - uses: actions/checkout@v3 + - name: Set Latest Tag + id: vars + run: echo "tag=$(git describe --tags `git rev-list --tags --max-count=1`)" >> $GITHUB_OUTPUT + - uses: ruby/setup-ruby@v1 + with: + bundler-cache: true # runs 'bundle install' and caches installed gems automatically + - run: bundle exec fastlane test + - run: bundle exec fastlane release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + TAG: ${{ steps.vars.outputs.tag }} diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 8bd0dce0..00000000 --- a/.travis.yml +++ /dev/null @@ -1,7 +0,0 @@ -osx_image: xcode11.3 -language: objective-c -before_install: - - gem install cocoapods --pre - - gem cleanup -script: -- ./build.sh diff --git a/Gemfile.lock b/Gemfile.lock index 182eff8e..efcccf01 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,106 +1,151 @@ GEM remote: https://rubygems.org/ specs: - CFPropertyList (3.0.2) - activesupport (4.2.11.1) - i18n (~> 0.7) - minitest (~> 5.1) - thread_safe (~> 0.3, >= 0.3.4) - tzinfo (~> 1.1) - addressable (2.8.1) + CFPropertyList (3.0.6) + rexml + activesupport (7.0.7) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + addressable (2.8.5) public_suffix (>= 2.0.2, < 6.0) - algoliasearch (1.27.1) + algoliasearch (1.27.5) httpclient (~> 2.8, >= 2.8.3) json (>= 1.5.1) + artifactory (3.0.15) atomos (0.1.3) - babosa (1.0.3) - claide (1.0.3) - cocoapods (1.8.4) - activesupport (>= 4.0.2, < 5) + aws-eventstream (1.2.0) + aws-partitions (1.807.0) + aws-sdk-core (3.180.3) + aws-eventstream (~> 1, >= 1.0.2) + aws-partitions (~> 1, >= 1.651.0) + aws-sigv4 (~> 1.5) + jmespath (~> 1, >= 1.6.1) + aws-sdk-kms (1.71.0) + aws-sdk-core (~> 3, >= 3.177.0) + aws-sigv4 (~> 1.1) + aws-sdk-s3 (1.132.1) + aws-sdk-core (~> 3, >= 3.179.0) + aws-sdk-kms (~> 1) + aws-sigv4 (~> 1.6) + aws-sigv4 (1.6.0) + aws-eventstream (~> 1, >= 1.0.2) + babosa (1.0.4) + claide (1.1.0) + cocoapods (1.12.1) + addressable (~> 2.8) claide (>= 1.0.2, < 2.0) - cocoapods-core (= 1.8.4) + cocoapods-core (= 1.12.1) cocoapods-deintegrate (>= 1.0.3, < 2.0) - cocoapods-downloader (>= 1.2.2, < 2.0) + cocoapods-downloader (>= 1.6.0, < 2.0) cocoapods-plugins (>= 1.0.0, < 2.0) cocoapods-search (>= 1.0.0, < 2.0) - cocoapods-stats (>= 1.0.0, < 2.0) - cocoapods-trunk (>= 1.4.0, < 2.0) + cocoapods-trunk (>= 1.6.0, < 2.0) cocoapods-try (>= 1.1.0, < 2.0) colored2 (~> 3.1) escape (~> 0.0.4) fourflusher (>= 2.3.0, < 3.0) gh_inspector (~> 1.0) - molinillo (~> 0.6.6) + molinillo (~> 0.8.0) nap (~> 1.0) - ruby-macho (~> 1.4) - xcodeproj (>= 1.11.1, < 2.0) - cocoapods-core (1.8.4) - activesupport (>= 4.0.2, < 6) + ruby-macho (>= 2.3.0, < 3.0) + xcodeproj (>= 1.21.0, < 2.0) + cocoapods-core (1.12.1) + activesupport (>= 5.0, < 8) + addressable (~> 2.8) algoliasearch (~> 1.0) concurrent-ruby (~> 1.1) fuzzy_match (~> 2.0.4) nap (~> 1.0) - cocoapods-deintegrate (1.0.4) + netrc (~> 0.11) + public_suffix (~> 4.0) + typhoeus (~> 1.0) + cocoapods-deintegrate (1.0.5) cocoapods-downloader (1.6.3) cocoapods-plugins (1.0.0) nap - cocoapods-search (1.0.0) - cocoapods-stats (1.1.0) - cocoapods-trunk (1.4.1) + cocoapods-search (1.0.1) + cocoapods-trunk (1.6.0) nap (>= 0.8, < 2.0) netrc (~> 0.11) - cocoapods-try (1.1.0) + cocoapods-try (1.2.0) colored (1.2) colored2 (3.1.2) - commander-fastlane (4.4.6) - highline (~> 1.7.2) - concurrent-ruby (1.1.5) - declarative (0.0.10) - declarative-option (0.1.0) - digest-crc (0.4.1) + commander (4.6.0) + highline (~> 2.0.0) + concurrent-ruby (1.2.2) + declarative (0.0.20) + digest-crc (0.6.5) + rake (>= 12.0.0, < 14.0.0) domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) - dotenv (2.7.5) - emoji_regex (1.0.1) + dotenv (2.8.1) + emoji_regex (3.2.3) escape (0.0.4) - excon (0.71.1) - faraday (0.17.3) - multipart-post (>= 1.2, < 3) - faraday-cookie_jar (0.0.6) - faraday (>= 0.7.4) + ethon (0.16.0) + ffi (>= 1.15.0) + excon (0.100.0) + faraday (1.10.3) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.0) + faraday-patron (~> 1.0) + faraday-rack (~> 1.0) + faraday-retry (~> 1.0) + ruby2_keywords (>= 0.0.4) + faraday-cookie_jar (0.0.7) + faraday (>= 0.8.0) http-cookie (~> 1.0.0) - faraday_middleware (0.13.1) - faraday (>= 0.7.4, < 1.0) - fastimage (2.1.7) - fastlane (2.139.0) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-httpclient (1.0.1) + faraday-multipart (1.0.4) + multipart-post (~> 2) + faraday-net_http (1.0.1) + faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + faraday-retry (1.0.3) + faraday_middleware (1.2.0) + faraday (~> 1.0) + fastimage (2.2.7) + fastlane (2.214.0) CFPropertyList (>= 2.3, < 4.0.0) - addressable (>= 2.3, < 3.0.0) - babosa (>= 1.0.2, < 2.0.0) + addressable (>= 2.8, < 3.0.0) + artifactory (~> 3.0) + aws-sdk-s3 (~> 1.0) + babosa (>= 1.0.3, < 2.0.0) bundler (>= 1.12.0, < 3.0.0) colored - commander-fastlane (>= 4.4.6, < 5.0.0) + commander (~> 4.6) dotenv (>= 2.1.1, < 3.0.0) - emoji_regex (>= 0.1, < 2.0) + emoji_regex (>= 0.1, < 4.0) excon (>= 0.71.0, < 1.0.0) - faraday (~> 0.17) + faraday (~> 1.0) faraday-cookie_jar (~> 0.0.6) - faraday_middleware (~> 0.13.1) + faraday_middleware (~> 1.0) fastimage (>= 2.1.0, < 3.0.0) gh_inspector (>= 1.1.2, < 2.0.0) - google-api-client (>= 0.29.2, < 0.37.0) - google-cloud-storage (>= 1.15.0, < 2.0.0) - highline (>= 1.7.2, < 2.0.0) + google-apis-androidpublisher_v3 (~> 0.3) + google-apis-playcustomapp_v1 (~> 0.1) + google-cloud-storage (~> 1.31) + highline (~> 2.0) json (< 3.0.0) - jwt (~> 2.1.0) + jwt (>= 2.1.0, < 3) mini_magick (>= 4.9.4, < 5.0.0) - multi_xml (~> 0.5) - multipart-post (~> 2.0.0) + multipart-post (>= 2.0.0, < 3.0.0) + naturally (~> 2.2) + optparse (~> 0.1.1) plist (>= 3.1.0, < 4.0.0) - public_suffix (~> 2.0.0) - rubyzip (>= 1.3.0, < 2.0.0) + rubyzip (>= 2.0.0, < 3.0.0) security (= 0.1.3) simctl (~> 1.6.3) - slack-notifier (>= 2.0.0, < 3.0.0) terminal-notifier (>= 2.0.0, < 3.0.0) terminal-table (>= 1.4.5, < 2.0.0) tty-screen (>= 0.6.3, < 1.0.0) @@ -109,109 +154,129 @@ GEM xcodeproj (>= 1.13.0, < 2.0.0) xcpretty (~> 0.3.0) xcpretty-travis-formatter (>= 0.0.3) + ffi (1.15.5) fourflusher (2.3.1) fuzzy_match (2.0.4) gh_inspector (1.1.3) - google-api-client (0.36.3) + google-apis-androidpublisher_v3 (0.48.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-core (0.11.1) addressable (~> 2.5, >= 2.5.1) - googleauth (~> 0.9) - httpclient (>= 2.8.1, < 3.0) + googleauth (>= 0.16.2, < 2.a) + httpclient (>= 2.8.1, < 3.a) mini_mime (~> 1.0) representable (~> 3.0) - retriable (>= 2.0, < 4.0) - signet (~> 0.12) - google-cloud-core (1.4.1) + retriable (>= 2.0, < 4.a) + rexml + webrick + google-apis-iamcredentials_v1 (0.17.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-playcustomapp_v1 (0.13.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-storage_v1 (0.19.0) + google-apis-core (>= 0.9.0, < 2.a) + google-cloud-core (1.6.0) google-cloud-env (~> 1.0) - google-cloud-env (1.3.0) - faraday (~> 0.11) - google-cloud-storage (1.25.0) - addressable (~> 2.5) + google-cloud-errors (~> 1.0) + google-cloud-env (1.6.0) + faraday (>= 0.17.3, < 3.0) + google-cloud-errors (1.3.1) + google-cloud-storage (1.44.0) + addressable (~> 2.8) digest-crc (~> 0.4) - google-api-client (~> 0.33) - google-cloud-core (~> 1.2) - googleauth (~> 0.9) + google-apis-iamcredentials_v1 (~> 0.1) + google-apis-storage_v1 (~> 0.19.0) + google-cloud-core (~> 1.6) + googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - googleauth (0.10.0) - faraday (~> 0.12) + googleauth (1.7.0) + faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) memoist (~> 0.16) multi_json (~> 1.11) os (>= 0.9, < 2.0) - signet (~> 0.12) - highline (1.7.10) - http-cookie (1.0.3) + signet (>= 0.16, < 2.a) + highline (2.0.3) + http-cookie (1.0.5) domain_name (~> 0.5) httpclient (2.8.3) - i18n (0.9.5) + i18n (1.14.1) concurrent-ruby (~> 1.0) - json (2.3.0) - jwt (2.1.0) + jmespath (1.6.2) + json (2.6.3) + jwt (2.7.1) memoist (0.16.2) - mini_magick (4.9.5) - mini_mime (1.0.2) - minitest (5.13.0) - molinillo (0.6.6) - multi_json (1.14.1) - multi_xml (0.6.0) - multipart-post (2.0.0) - nanaimo (0.2.6) + mini_magick (4.12.0) + mini_mime (1.1.5) + minitest (5.19.0) + molinillo (0.8.0) + multi_json (1.15.0) + multipart-post (2.3.0) + nanaimo (0.3.0) nap (1.1.0) - naturally (2.2.0) + naturally (2.2.1) netrc (0.11.0) - os (1.0.1) - plist (3.5.0) - public_suffix (2.0.5) - representable (3.0.4) + optparse (0.1.1) + os (1.1.4) + plist (3.7.0) + public_suffix (4.0.7) + rake (13.0.6) + representable (3.2.0) declarative (< 0.1.0) - declarative-option (< 0.2.0) + trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) + rexml (3.2.6) rouge (2.0.7) - ruby-macho (1.4.0) - rubyzip (1.3.0) + ruby-macho (2.5.1) + ruby2_keywords (0.0.5) + rubyzip (2.3.2) security (0.1.3) - signet (0.12.0) - addressable (~> 2.3) - faraday (~> 0.9) + signet (0.17.0) + addressable (~> 2.8) + faraday (>= 0.17.5, < 3.a) jwt (>= 1.5, < 3.0) multi_json (~> 1.10) - simctl (1.6.7) + simctl (1.6.10) CFPropertyList naturally - slack-notifier (2.3.2) terminal-notifier (2.0.0) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) - thread_safe (0.3.6) - tty-cursor (0.7.0) - tty-screen (0.7.0) - tty-spinner (0.9.2) + trailblazer-option (0.1.2) + tty-cursor (0.7.1) + tty-screen (0.8.1) + tty-spinner (0.9.3) tty-cursor (~> 0.7) - tzinfo (1.2.10) - thread_safe (~> 0.1) + typhoeus (1.4.0) + ethon (>= 0.9.0) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) uber (0.1.0) unf (0.1.4) unf_ext - unf_ext (0.0.7.6) - unicode-display_width (1.6.0) + unf_ext (0.0.8.2) + unicode-display_width (1.8.0) + webrick (1.8.1) word_wrap (1.0.0) - xcodeproj (1.14.0) + xcodeproj (1.22.0) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) colored2 (~> 3.1) - nanaimo (~> 0.2.6) + nanaimo (~> 0.3.0) + rexml (~> 3.2.4) xcpretty (0.3.0) rouge (~> 2.0.7) - xcpretty-travis-formatter (1.0.0) + xcpretty-travis-formatter (1.0.1) xcpretty (~> 0.2, >= 0.0.7) PLATFORMS - ruby + arm64-darwin-22 DEPENDENCIES cocoapods fastlane BUNDLED WITH - 2.1.3 + 2.4.10 diff --git a/LICENSE b/LICENSE index d6ab2f1f..663de542 100644 --- a/LICENSE +++ b/LICENSE @@ -2,7 +2,7 @@ Version 2.0, January 2004 http://www.apache.org/licenses/ - Copyright (c) 2014-2016 Dalton Cherry. + Copyright (c) 2014-2023 Dalton Cherry. TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION diff --git a/Package.resolved b/Package.resolved deleted file mode 100644 index e49c8be4..00000000 --- a/Package.resolved +++ /dev/null @@ -1,16 +0,0 @@ -{ - "object": { - "pins": [ - { - "package": "swift-nio-zlib-support", - "repositoryURL": "https://github.com/apple/swift-nio-zlib-support.git", - "state": { - "branch": null, - "revision": "37760e9a52030bb9011972c5213c3350fa9d41fd", - "version": "1.0.0" - } - } - ] - }, - "version": 1 -} diff --git a/Sources/Engine/Engine.swift b/Sources/Engine/Engine.swift index 71a4d06a..79fe6bfe 100644 --- a/Sources/Engine/Engine.swift +++ b/Sources/Engine/Engine.swift @@ -1,10 +1,24 @@ +////////////////////////////////////////////////////////////////////////////////////////////////// // // Engine.swift // Starscream // -// Created by Dalton Cherry on 6/15/19. +// Created by Dalton Cherry on 6/15/19 // Copyright © 2019 Vluxe. All rights reserved. // +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +////////////////////////////////////////////////////////////////////////////////////////////////// import Foundation diff --git a/Sources/Engine/NativeEngine.swift b/Sources/Engine/NativeEngine.swift index 63455091..a1cb4a45 100644 --- a/Sources/Engine/NativeEngine.swift +++ b/Sources/Engine/NativeEngine.swift @@ -1,10 +1,24 @@ +////////////////////////////////////////////////////////////////////////////////////////////////// // // NativeEngine.swift // Starscream // -// Created by Dalton Cherry on 6/15/19. +// Created by Dalton Cherry on 6/15/19 // Copyright © 2019 Vluxe. All rights reserved. // +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +////////////////////////////////////////////////////////////////////////////////////////////////// import Foundation diff --git a/Sources/Engine/WSEngine.swift b/Sources/Engine/WSEngine.swift index 4ae5e44f..4dcaea32 100644 --- a/Sources/Engine/WSEngine.swift +++ b/Sources/Engine/WSEngine.swift @@ -1,10 +1,24 @@ +////////////////////////////////////////////////////////////////////////////////////////////////// // // WSEngine.swift // Starscream // -// Created by Dalton Cherry on 6/15/19. +// Created by Dalton Cherry on 6/15/19 // Copyright © 2019 Vluxe. All rights reserved. // +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +////////////////////////////////////////////////////////////////////////////////////////////////// import Foundation diff --git a/Sources/Starscream.h b/Sources/Starscream.h index 38ff9dfb..c2a6f605 100644 --- a/Sources/Starscream.h +++ b/Sources/Starscream.h @@ -1,10 +1,24 @@ +////////////////////////////////////////////////////////////////////////////////////////////////// // // Starscream.h // Starscream // // Created by Austin Cherry on 9/25/14. -// Copyright (c) 2014 Vluxe. All rights reserved. +// Copyright © 2014 Vluxe. All rights reserved. // +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +////////////////////////////////////////////////////////////////////////////////////////////////// #import @@ -15,5 +29,3 @@ FOUNDATION_EXPORT double StarscreamVersionNumber; FOUNDATION_EXPORT const unsigned char StarscreamVersionString[]; // In this header, you should import all the public headers of your framework using statements like #import - - diff --git a/Sources/Transport/Transport.swift b/Sources/Transport/Transport.swift index f954b484..8a101a4a 100644 --- a/Sources/Transport/Transport.swift +++ b/Sources/Transport/Transport.swift @@ -1,7 +1,5 @@ ////////////////////////////////////////////////////////////////////////////////////////////////// // -////////////////////////////////////////////////////////////////////////////////////////////////// -// // Transport.swift // Starscream // diff --git a/Starscream.podspec b/Starscream.podspec index e470d01f..4b31cb45 100644 --- a/Starscream.podspec +++ b/Starscream.podspec @@ -7,9 +7,9 @@ Pod::Spec.new do |s| s.author = {'Dalton Cherry' => 'http://daltoniam.com', 'Austin Cherry' => 'http://austincherry.me'} s.source = { :git => 'https://github.com/daltoniam/Starscream.git', :tag => "#{s.version}"} s.social_media_url = 'http://twitter.com/daltoniam' - s.ios.deployment_target = '8.0' - s.osx.deployment_target = '10.10' - s.tvos.deployment_target = '9.0' + s.ios.deployment_target = '11.0' + s.osx.deployment_target = '10.13' + s.tvos.deployment_target = '12.0' s.watchos.deployment_target = '2.0' s.source_files = 'Sources/**/*.swift' s.swift_version = '5.0' diff --git a/Starscream.xcodeproj/project.pbxproj b/Starscream.xcodeproj/project.pbxproj index b35ead4a..99b3f6ed 100644 --- a/Starscream.xcodeproj/project.pbxproj +++ b/Starscream.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 53; objects = { /* Begin PBXBuildFile section */ @@ -291,9 +291,10 @@ 6B3E79DD19D48B7F006071F7 /* Project object */ = { isa = PBXProject; attributes = { + BuildIndependentTargetsInParallel = YES; LastSwiftMigration = 0700; LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 1020; + LastUpgradeCheck = 1430; ORGANIZATIONNAME = Vluxe; TargetAttributes = { 335FA1F41F5DF71D00F6D2EC = { @@ -398,13 +399,24 @@ APPLICATION_EXTENSION_API_ONLY = NO; CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "-"; + DEAD_CODE_STRIPPING = YES; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", ); INFOPLIST_FILE = "$(SRCROOT)/Tests/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks @executable_path/../Frameworks @loader_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = "com.vluxe.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphonesimulator iphoneos appletvos appletvsimulator macosx"; @@ -422,15 +434,27 @@ APPLICATION_EXTENSION_API_ONLY = NO; CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "-"; + DEAD_CODE_STRIPPING = YES; INFOPLIST_FILE = "$(SRCROOT)/Tests/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks @executable_path/../Frameworks @loader_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = "com.vluxe.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphonesimulator iphoneos appletvos appletvsimulator macosx"; SUPPORTS_MACCATALYST = YES; + SWIFT_COMPILATION_MODE = wholemodule; SWIFT_INSTALL_OBJC_HEADER = NO; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_SWIFT3_OBJC_INFERENCE = Off; SWIFT_VERSION = 5.0; }; @@ -441,16 +465,24 @@ buildSettings = { BITCODE_GENERATION_MODE = marker; CLANG_ENABLE_MODULES = YES; + DEAD_CODE_STRIPPING = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = YES; INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.10; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; MARKETING_VERSION = 4.0.4; + MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; + MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu99 gnu++11"; OTHER_LDFLAGS = "-all_load"; PRODUCT_BUNDLE_IDENTIFIER = "com.vluxe.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -459,7 +491,7 @@ SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_SWIFT3_OBJC_INFERENCE = Off; SWIFT_VERSION = 5.0; - TVOS_DEPLOYMENT_TARGET = 9.0; + TVOS_DEPLOYMENT_TARGET = 12.0; WATCHOS_DEPLOYMENT_TARGET = 2.0; }; name = Debug; @@ -469,25 +501,34 @@ buildSettings = { BITCODE_GENERATION_MODE = bitcode; CLANG_ENABLE_MODULES = YES; + DEAD_CODE_STRIPPING = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = YES; INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.10; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; MARKETING_VERSION = 4.0.4; + MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; + MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu99 gnu++11"; OTHER_LDFLAGS = "-all_load"; PRODUCT_BUNDLE_IDENTIFIER = "com.vluxe.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SUPPORTS_MACCATALYST = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_SWIFT3_OBJC_INFERENCE = Off; SWIFT_VERSION = 5.0; - TVOS_DEPLOYMENT_TARGET = 9.0; + TVOS_DEPLOYMENT_TARGET = 12.0; WATCHOS_DEPLOYMENT_TARGET = 2.0; }; name = Release; @@ -516,6 +557,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -523,6 +565,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; + DEAD_CODE_STRIPPING = YES; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; @@ -540,7 +583,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SUPPORTED_PLATFORMS = "iphonesimulator iphoneos macosx appletvos appletvsimulator watchsimulator watchos xros xrsimulator"; @@ -576,6 +619,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -583,6 +627,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = YES; CURRENT_PROJECT_VERSION = 1; + DEAD_CODE_STRIPPING = YES; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; @@ -593,7 +638,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SUPPORTED_PLATFORMS = "iphonesimulator iphoneos macosx appletvos appletvsimulator watchsimulator watchos xros xrsimulator"; SWIFT_VERSION = 5.0; diff --git a/Starscream.xcodeproj/xcshareddata/xcschemes/Starscream.xcscheme b/Starscream.xcodeproj/xcshareddata/xcschemes/Starscream.xcscheme index f50707a5..ec7854e1 100644 --- a/Starscream.xcodeproj/xcshareddata/xcschemes/Starscream.xcscheme +++ b/Starscream.xcodeproj/xcshareddata/xcschemes/Starscream.xcscheme @@ -1,6 +1,6 @@ + shouldUseLaunchSchemeArgsEnv = "YES" + codeCoverageEnabled = "YES"> + + + + @@ -44,17 +53,6 @@ - - - - - - - - CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - com.vluxe.$(PRODUCT_NAME:rfc1034identifier) + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/examples/SimpleTest/SimpleTest/ViewController.swift b/examples/SimpleTest/SimpleTest/ViewController.swift index 6a6a4a36..26aaf99d 100644 --- a/examples/SimpleTest/SimpleTest/ViewController.swift +++ b/examples/SimpleTest/SimpleTest/ViewController.swift @@ -30,19 +30,6 @@ class ViewController: UIViewController, WebSocketDelegate { override func viewDidLoad() { super.viewDidLoad() -// let err = server.start(address: "localhost", port: 8080) -// if err != nil { -// print("server didn't start!") -// } -// server.onEvent = { event in -// switch event { -// case .text(let conn, let string): -// let payload = string.data(using: .utf8)! -// conn.write(data: payload, opcode: .textFrame) -// default: -// break -// } -// } //https://echo.websocket.org var request = URLRequest(url: URL(string: "http://localhost:8080")!) //https://localhost:8080 request.timeoutInterval = 5 @@ -52,7 +39,7 @@ class ViewController: UIViewController, WebSocketDelegate { } // MARK: - WebSocketDelegate - func didReceive(event: WebSocketEvent, client: WebSocket) { + func didReceive(event: Starscream.WebSocketEvent, client: Starscream.WebSocketClient) { switch event { case .connected(let headers): isConnected = true @@ -77,6 +64,8 @@ class ViewController: UIViewController, WebSocketDelegate { case .error(let error): isConnected = false handleError(error) + case .peerClosed: + break } } diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 069321f9..764ef4ff 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -2,27 +2,28 @@ default_platform(:ios) update_fastlane + +desc "Run tests" +lane :test do + run_tests( + devices: ["iPhone 14 Pro", "iPad Pro (11-inch) (4th generation)"], + ) +end + platform :ios do desc "Deploy new version" lane :release do - ensure_git_branch - version = version_get_podspec(path: "Starscream.podspec") - changelog = prompt(text: "Changelog: ", multi_line_end_keyword: "END") - - github_token = ENV['GITHUB_TOKEN'] - if !github_token || github_token.empty? - github_token = prompt(text: "Please enter your GitHub token: ") - end + version = version_bump_podspec(path: "Starscream.podspec", version_number: ENV['TAG']) + changelog = changelog_from_git_commits(merge_commit_filtering: "exclude_merges") github_release = set_github_release( repository_name: "daltoniam/Starscream", - api_token: github_token, + api_token: ENV['GITHUB_TOKEN'], name: version, tag_name: version, description: changelog, commitish: "master" ) - sh("git fetch --tags") - pod_push(allow_warnings: true, verbose: true) + pod_push(allow_warnings: false, verbose: true) end end diff --git a/fastlane/README.md b/fastlane/README.md index 58c0dc75..1ccfc536 100644 --- a/fastlane/README.md +++ b/fastlane/README.md @@ -1,29 +1,43 @@ fastlane documentation -================ +---- + # Installation Make sure you have the latest version of the Xcode command line tools installed: -``` +```sh xcode-select --install ``` -Install _fastlane_ using -``` -[sudo] gem install fastlane -NV -``` -or alternatively using `brew cask install fastlane` +For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane) # Available Actions + +### test + +```sh +[bundle exec] fastlane test +``` + +Run tests + +---- + + ## iOS + ### ios release + +```sh +[bundle exec] fastlane ios release ``` -fastlane ios release -``` + Deploy new version ---- -This README.md is auto-generated and will be re-generated every time [fastlane](https://fastlane.tools) is run. -More information about fastlane can be found on [fastlane.tools](https://fastlane.tools). -The documentation of fastlane can be found on [docs.fastlane.tools](https://docs.fastlane.tools). +This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run. + +More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools). + +The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools). diff --git a/release.sh b/release.sh deleted file mode 100755 index 7e244db9..00000000 --- a/release.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -bundle install -bundle exec fastlane release From 76fa39ec307637cff0b319330b85236ce5892483 Mon Sep 17 00:00:00 2001 From: Austin Cherry Date: Sat, 19 Aug 2023 13:09:12 -0500 Subject: [PATCH 13/29] chore: add ruby version --- .ruby-version | 1 + 1 file changed, 1 insertion(+) create mode 100644 .ruby-version diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 00000000..acf9bf09 --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +3.2.2 \ No newline at end of file From dcfffe11144e6d61f6200545d075ba50e9effc3d Mon Sep 17 00:00:00 2001 From: Austin Cherry Date: Sat, 19 Aug 2023 13:13:57 -0500 Subject: [PATCH 14/29] chore: change ruby version --- .ruby-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ruby-version b/.ruby-version index acf9bf09..a4f52a5d 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -3.2.2 \ No newline at end of file +3.2.0 \ No newline at end of file From f8ac424b8e6d05e3ac5e88c4ee3277cdfdc93f8a Mon Sep 17 00:00:00 2001 From: Austin Cherry Date: Sat, 19 Aug 2023 13:16:38 -0500 Subject: [PATCH 15/29] chore: update bundler --- .ruby-version | 2 +- Gemfile.lock | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.ruby-version b/.ruby-version index a4f52a5d..acf9bf09 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -3.2.0 \ No newline at end of file +3.2.2 \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock index efcccf01..4e5ecd60 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -273,6 +273,7 @@ GEM PLATFORMS arm64-darwin-22 + x86_64-darwin-20 DEPENDENCIES cocoapods From 4c7b8817a1ceca4ec52c06f45d3972d6b3a08cfa Mon Sep 17 00:00:00 2001 From: Austin Cherry Date: Sat, 19 Aug 2023 15:24:17 -0500 Subject: [PATCH 16/29] fix: release workflow --- .github/workflows/release.yml | 3 ++- fastlane/Fastfile | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5c5f0dae..d3f80552 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,5 +19,6 @@ jobs: - run: bundle exec fastlane test - run: bundle exec fastlane release env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_TOKEN: ${{ secrets.PAT_GITHUB_TOKEN }} + COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }} TAG: ${{ steps.vars.outputs.tag }} diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 764ef4ff..df1cdf77 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -13,12 +13,12 @@ end platform :ios do desc "Deploy new version" lane :release do - version = version_bump_podspec(path: "Starscream.podspec", version_number: ENV['TAG']) + version = version_bump_podspec(path: "Starscream.podspec", version_number: ENV["TAG"]) changelog = changelog_from_git_commits(merge_commit_filtering: "exclude_merges") github_release = set_github_release( - repository_name: "daltoniam/Starscream", - api_token: ENV['GITHUB_TOKEN'], + repository_name: "daltoniam/starscream", + api_token: ENV["GITHUB_TOKEN"], name: version, tag_name: version, description: changelog, From 7b1e5bb60d9f1ce9fa0c732df54c5f7f74f35645 Mon Sep 17 00:00:00 2001 From: Austin Cherry Date: Sat, 19 Aug 2023 15:30:29 -0500 Subject: [PATCH 17/29] fix: update secret --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d3f80552..12850429 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,6 +19,6 @@ jobs: - run: bundle exec fastlane test - run: bundle exec fastlane release env: - GITHUB_TOKEN: ${{ secrets.PAT_GITHUB_TOKEN }} + GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }} COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }} TAG: ${{ steps.vars.outputs.tag }} From d2a9549ea45018ef6802e3fe3c61490386a0ee8c Mon Sep 17 00:00:00 2001 From: paul-verkada <85518497+paul-verkada@users.noreply.github.com> Date: Sat, 19 Aug 2023 14:09:19 -0700 Subject: [PATCH 18/29] Fix a leak with the TCPTransport (#923) Co-authored-by: Andreas Binnewies --- Sources/Transport/TCPTransport.swift | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Sources/Transport/TCPTransport.swift b/Sources/Transport/TCPTransport.swift index 3f0a1757..27e951c0 100644 --- a/Sources/Transport/TCPTransport.swift +++ b/Sources/Transport/TCPTransport.swift @@ -35,7 +35,11 @@ public class TCPTransport: Transport { private weak var delegate: TransportEventClient? private var isRunning = false private var isTLS = false - + + deinit { + disconnect() + } + public var usingTLS: Bool { return self.isTLS } @@ -85,6 +89,7 @@ public class TCPTransport: Transport { public func disconnect() { isRunning = false connection?.cancel() + connection = nil } public func register(delegate: TransportEventClient) { From d67812c56103f32710b02be25b3aa3029c5f4920 Mon Sep 17 00:00:00 2001 From: Zac West <74188+zacwest@users.noreply.github.com> Date: Sat, 19 Aug 2023 14:09:52 -0700 Subject: [PATCH 19/29] Fix compression when headers don't include window bits (#937) --- Sources/Compression/WSCompression.swift | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Sources/Compression/WSCompression.swift b/Sources/Compression/WSCompression.swift index 21295841..82f96740 100644 --- a/Sources/Compression/WSCompression.swift +++ b/Sources/Compression/WSCompression.swift @@ -44,6 +44,10 @@ public class WSCompression: CompressionHandler { guard let extensionHeader = headers[headerWSExtensionName] else { return } decompressorTakeOver = false compressorTakeOver = false + + // assume defaults unless the headers say otherwise + compressor = Compressor(windowBits: 15) + decompressor = Decompressor(windowBits: 15) let parts = extensionHeader.components(separatedBy: ";") for p in parts { @@ -204,6 +208,11 @@ class Compressor { } func compress(_ data: Data) throws -> Data { + guard !data.isEmpty else { + // For example, PONG has no content + return data + } + var compressed = Data() var res: CInt = 0 data.withUnsafeBytes { (ptr:UnsafePointer) -> Void in From 86998dd144c1215fd326210a541d86621a68dade Mon Sep 17 00:00:00 2001 From: yohei yoshimuta Date: Sun, 20 Aug 2023 06:11:05 +0900 Subject: [PATCH 20/29] Fix connection race when using WSEngine (#930) --- Sources/Engine/WSEngine.swift | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/Sources/Engine/WSEngine.swift b/Sources/Engine/WSEngine.swift index 4dcaea32..4add12a7 100644 --- a/Sources/Engine/WSEngine.swift +++ b/Sources/Engine/WSEngine.swift @@ -38,6 +38,7 @@ FrameCollectorDelegate, HTTPHandlerDelegate { private let writeQueue = DispatchQueue(label: "com.vluxe.starscream.writequeue") private let mutex = DispatchSemaphore(value: 1) private var canSend = false + private var isConnecting = false weak var delegate: EngineDelegate? public var respondToPingWithPong: Bool = true @@ -64,9 +65,10 @@ FrameCollectorDelegate, HTTPHandlerDelegate { public func start(request: URLRequest) { mutex.wait() + let isConnecting = self.isConnecting let isConnected = canSend mutex.signal() - if isConnected { + if isConnecting || isConnected { return } @@ -78,6 +80,9 @@ FrameCollectorDelegate, HTTPHandlerDelegate { guard let url = request.url else { return } + mutex.wait() + self.isConnecting = true + mutex.signal() transport.connect(url: url, timeout: request.timeoutInterval, certificatePinning: certPinner) } @@ -93,6 +98,10 @@ FrameCollectorDelegate, HTTPHandlerDelegate { } public func forceStop() { + mutex.wait() + isConnecting = false + mutex.signal() + transport.disconnect() } @@ -153,6 +162,10 @@ FrameCollectorDelegate, HTTPHandlerDelegate { } } case .cancelled: + mutex.wait() + isConnecting = false + mutex.signal() + broadcast(event: .cancelled) case .peerClosed: broadcast(event: .peerClosed) @@ -169,6 +182,7 @@ FrameCollectorDelegate, HTTPHandlerDelegate { return } mutex.wait() + isConnecting = false didUpgrade = true canSend = true mutex.signal() @@ -241,6 +255,7 @@ FrameCollectorDelegate, HTTPHandlerDelegate { private func reset() { mutex.wait() + isConnecting = false canSend = false didUpgrade = false mutex.signal() From ca9b1225b7afcc578265e59f972f135ae3d94166 Mon Sep 17 00:00:00 2001 From: Mikhail Akopov Date: Sun, 20 Aug 2023 00:12:23 +0300 Subject: [PATCH 21/29] Update SwiftPM section in Readme (#824) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fac1963e..3c38633f 100644 --- a/README.md +++ b/README.md @@ -273,7 +273,7 @@ Once you have your Swift package set up, adding Starscream as a dependency is as ```swift dependencies: [ - .Package(url: "https://github.com/daltoniam/Starscream.git", majorVersion: 4) + .package(url: "https://github.com/daltoniam/Starscream.git", from: "4.0.0") ] ``` From ac6c0fc9da221873e01bd1a0d4818498a71eef33 Mon Sep 17 00:00:00 2001 From: Austin Cherry Date: Sat, 19 Aug 2023 16:19:25 -0500 Subject: [PATCH 22/29] fix: update README --- README.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 3c38633f..77eb91b0 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,8 @@ func didReceive(event: WebSocketEvent, client: WebSocket) { case .error(let error): isConnected = false handleError(error) + case .peerClosed: + break } } ``` @@ -202,10 +204,10 @@ Check out [Get Started](http://cocoapods.org/) tab on [cocoapods.org](http://coc To use Starscream in your project add the following 'Podfile' to your project source 'https://github.com/CocoaPods/Specs.git' - platform :ios, '9.0' + platform :ios, '11.0' use_frameworks! - pod 'Starscream', '~> 4.0.4' + pod 'Starscream', '~> 4.0.6' Then run: @@ -227,7 +229,7 @@ $ brew install carthage To integrate Starscream into your Xcode project using Carthage, specify it in your `Cartfile`: ``` -github "daltoniam/Starscream" >= 4.0.4 +github "daltoniam/Starscream" >= 4.0.6 ``` ### Accio @@ -237,7 +239,7 @@ Check out the [Accio](https://github.com/JamitLabs/Accio) docs on how to add a i Add the following to your Package.swift: ```swift -.package(url: "https://github.com/daltoniam/Starscream.git", .upToNextMajor(from: "4.0.4")), +.package(url: "https://github.com/daltoniam/Starscream.git", .upToNextMajor(from: "4.0.6")), ``` Next, add `Starscream` to your App targets dependencies like so: @@ -290,6 +292,9 @@ If you are running this in an OSX app or on a physical iOS device you will need ## TODOs - [ ] Proxy support +- [ ] Thread safe implementation +- [ ] Better testing/CI +- [ ] SSL Pinning/client auth examples ## License From 7723d1ec4ff32812759ead958fa61ad6ef406de8 Mon Sep 17 00:00:00 2001 From: Austin Cherry Date: Tue, 22 Aug 2023 16:32:08 -0500 Subject: [PATCH 23/29] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 77eb91b0..bf71f14f 100644 --- a/README.md +++ b/README.md @@ -61,8 +61,8 @@ func didReceive(event: WebSocketEvent, client: WebSocket) { case .error(let error): isConnected = false handleError(error) - case .peerClosed: - break + case .peerClosed: + break } } ``` From d3a0b107328e3bc1601dccbfbcd556bd53aed767 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Aug 2023 12:08:38 -0500 Subject: [PATCH 24/29] Bump activesupport from 7.0.7 to 7.0.7.2 (#976) Bumps [activesupport](https://github.com/rails/rails) from 7.0.7 to 7.0.7.2. - [Release notes](https://github.com/rails/rails/releases) - [Changelog](https://github.com/rails/rails/blob/v7.0.7.2/activesupport/CHANGELOG.md) - [Commits](https://github.com/rails/rails/compare/v7.0.7...v7.0.7.2) --- updated-dependencies: - dependency-name: activesupport dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 4e5ecd60..6f447ec4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -3,7 +3,7 @@ GEM specs: CFPropertyList (3.0.6) rexml - activesupport (7.0.7) + activesupport (7.0.7.2) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) @@ -274,6 +274,7 @@ GEM PLATFORMS arm64-darwin-22 x86_64-darwin-20 + x86_64-linux DEPENDENCIES cocoapods From b12442f29c501d5765bd54746cdea3ae8e8ab304 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=BCdiger=20Busche?= Date: Tue, 20 Feb 2024 19:47:38 +0100 Subject: [PATCH 25/29] chore: Update install instructions (#984) Remove Accio instructions, since the project is deprecated. Remove Rouge instructions, since the repo was not updated since 2014. Move SwiftPM instructions up, since it should be the default for new projects. --- README.md | 60 +++++++++++-------------------------------------------- 1 file changed, 12 insertions(+), 48 deletions(-) diff --git a/README.md b/README.md index bf71f14f..a2dd720e 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,6 @@ socket.write(ping: Data()) //example on how to write a ping control frame over t ### write a pong frame - the writePong method is the same as writePing, but sends a pong control frame. ```swift @@ -197,6 +196,18 @@ Starscream works with iOS 8/10.10 or above for CocoaPods/framework support. To u ## Installation +### Swift Package Manager + +The [Swift Package Manager](https://swift.org/package-manager/) is a tool for automating the distribution of Swift code and is integrated into the `swift` compiler. + +Once you have your Swift package set up, adding Starscream as a dependency is as easy as adding it to the `dependencies` value of your `Package.swift`. + +```swift +dependencies: [ + .package(url: "https://github.com/daltoniam/Starscream.git", from: "4.0.6") +] +``` + ### CocoaPods Check out [Get Started](http://cocoapods.org/) tab on [cocoapods.org](http://cocoapods.org/). @@ -232,53 +243,6 @@ To integrate Starscream into your Xcode project using Carthage, specify it in yo github "daltoniam/Starscream" >= 4.0.6 ``` -### Accio - -Check out the [Accio](https://github.com/JamitLabs/Accio) docs on how to add a install. - -Add the following to your Package.swift: - -```swift -.package(url: "https://github.com/daltoniam/Starscream.git", .upToNextMajor(from: "4.0.6")), -``` - -Next, add `Starscream` to your App targets dependencies like so: - -```swift -.target( - name: "App", - dependencies: [ - "Starscream", - ] -), -``` - -Then run `accio update`. - -### Rogue - -First see the [installation docs](https://github.com/acmacalister/Rogue) for how to install Rogue. - -To install Starscream run the command below in the directory you created the rogue file. - -``` -rogue add https://github.com/daltoniam/Starscream -``` - -Next open the `libs` folder and add the `Starscream.xcodeproj` to your Xcode project. Once that is complete, in your "Build Phases" add the `Starscream.framework` to your "Link Binary with Libraries" phase. Make sure to add the `libs` folder to your `.gitignore` file. - -### Swift Package Manager - -The [Swift Package Manager](https://swift.org/package-manager/) is a tool for automating the distribution of Swift code and is integrated into the `swift` compiler. - -Once you have your Swift package set up, adding Starscream as a dependency is as easy as adding it to the `dependencies` value of your `Package.swift`. - -```swift -dependencies: [ - .package(url: "https://github.com/daltoniam/Starscream.git", from: "4.0.0") -] -``` - ### Other Simply grab the framework (either via git submodule or another package manager). From b32c9ab481382c5d8362bbbfbceef0ab4f88187d Mon Sep 17 00:00:00 2001 From: Jonathan Ellis Date: Thu, 7 Mar 2024 18:03:19 +0000 Subject: [PATCH 26/29] Add privacy manifest (#1008) --- Package.swift | 5 +++-- Sources/PrivacyInfo.xcprivacy | 14 ++++++++++++++ Starscream.podspec | 3 +++ Starscream.xcodeproj/project.pbxproj | 6 +++++- 4 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 Sources/PrivacyInfo.xcprivacy diff --git a/Package.swift b/Package.swift index f45b4cbd..8e3be998 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:5.2 +// swift-tools-version:5.3 // // Package.Swift @@ -30,7 +30,8 @@ let package = Package( dependencies: [], targets: [ .target(name: "Starscream", - path: "Sources") + path: "Sources", + resources: [.copy("PrivacyInfo.xcprivacy")]) ] ) diff --git a/Sources/PrivacyInfo.xcprivacy b/Sources/PrivacyInfo.xcprivacy new file mode 100644 index 00000000..2009fb7a --- /dev/null +++ b/Sources/PrivacyInfo.xcprivacy @@ -0,0 +1,14 @@ + + + + + NSPrivacyTracking + + NSPrivacyTrackingDomains + + NSPrivacyCollectedDataTypes + + NSPrivacyAccessedAPITypes + + + diff --git a/Starscream.podspec b/Starscream.podspec index 4b31cb45..85021b12 100644 --- a/Starscream.podspec +++ b/Starscream.podspec @@ -13,4 +13,7 @@ Pod::Spec.new do |s| s.watchos.deployment_target = '2.0' s.source_files = 'Sources/**/*.swift' s.swift_version = '5.0' + s.resource_bundles = { + 'Starscream_Privacy' => ['Sources/PrivacyInfo.xcprivacy'], + } end diff --git a/Starscream.xcodeproj/project.pbxproj b/Starscream.xcodeproj/project.pbxproj index 99b3f6ed..45fd831d 100644 --- a/Starscream.xcodeproj/project.pbxproj +++ b/Starscream.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 53; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -36,6 +36,7 @@ 8A906E3F2208C7E80015057D /* WSCompression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A906E3E2208C7E80015057D /* WSCompression.swift */; }; 8ABD4470224C036A00FB8370 /* Data+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ABD446F224C036A00FB8370 /* Data+Extensions.swift */; }; BBB5ABE8215E2217005B48B6 /* WebSocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBB5ABE4215E2217005B48B6 /* WebSocket.swift */; }; + FC7E667D2B90B3AD00881886 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = FC7E667C2B90B3AD00881886 /* PrivacyInfo.xcprivacy */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -80,6 +81,7 @@ BBB5ABE4215E2217005B48B6 /* WebSocket.swift */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.swift; name = WebSocket.swift; path = Starscream/WebSocket.swift; sourceTree = ""; tabWidth = 4; }; D88EAF811ED4DFD3004FE2C3 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; D88EAF831ED4E7D8004FE2C3 /* CompressionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CompressionTests.swift; sourceTree = ""; }; + FC7E667C2B90B3AD00881886 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -160,6 +162,7 @@ 6B3E79E919D48B7F006071F7 /* Supporting Files */ = { isa = PBXGroup; children = ( + FC7E667C2B90B3AD00881886 /* PrivacyInfo.xcprivacy */, 5C13600C1C473BFE00AA3A01 /* Info.plist */, ); name = "Supporting Files"; @@ -336,6 +339,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + FC7E667D2B90B3AD00881886 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 11c401f4089a2d177c545430418cd736eee9dd16 Mon Sep 17 00:00:00 2001 From: Dylan Date: Thu, 7 Mar 2024 19:05:33 +0100 Subject: [PATCH 27/29] fix: crash as NWEndpoint requires a min target of 12.0 (#998) --- README.md | 2 +- Starscream.podspec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a2dd720e..618716f3 100644 --- a/README.md +++ b/README.md @@ -215,7 +215,7 @@ Check out [Get Started](http://cocoapods.org/) tab on [cocoapods.org](http://coc To use Starscream in your project add the following 'Podfile' to your project source 'https://github.com/CocoaPods/Specs.git' - platform :ios, '11.0' + platform :ios, '12.0' use_frameworks! pod 'Starscream', '~> 4.0.6' diff --git a/Starscream.podspec b/Starscream.podspec index 85021b12..0c36e4e4 100644 --- a/Starscream.podspec +++ b/Starscream.podspec @@ -7,7 +7,7 @@ Pod::Spec.new do |s| s.author = {'Dalton Cherry' => 'http://daltoniam.com', 'Austin Cherry' => 'http://austincherry.me'} s.source = { :git => 'https://github.com/daltoniam/Starscream.git', :tag => "#{s.version}"} s.social_media_url = 'http://twitter.com/daltoniam' - s.ios.deployment_target = '11.0' + s.ios.deployment_target = '12.0' s.osx.deployment_target = '10.13' s.tvos.deployment_target = '12.0' s.watchos.deployment_target = '2.0' From 82d8a0119e4abe374a29c3cc4aa1be002e19770c Mon Sep 17 00:00:00 2001 From: Austin Cherry Date: Thu, 7 Mar 2024 12:10:16 -0600 Subject: [PATCH 28/29] fix: update build setting to recommended --- Starscream.xcodeproj/project.pbxproj | 4 +++- .../xcshareddata/xcschemes/Starscream.xcscheme | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Starscream.xcodeproj/project.pbxproj b/Starscream.xcodeproj/project.pbxproj index 45fd831d..0b7ae404 100644 --- a/Starscream.xcodeproj/project.pbxproj +++ b/Starscream.xcodeproj/project.pbxproj @@ -297,7 +297,7 @@ BuildIndependentTargetsInParallel = YES; LastSwiftMigration = 0700; LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1530; ORGANIZATIONNAME = Vluxe; TargetAttributes = { 335FA1F41F5DF71D00F6D2EC = { @@ -572,6 +572,7 @@ DEAD_CODE_STRIPPING = YES; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -634,6 +635,7 @@ DEAD_CODE_STRIPPING = YES; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; diff --git a/Starscream.xcodeproj/xcshareddata/xcschemes/Starscream.xcscheme b/Starscream.xcodeproj/xcshareddata/xcschemes/Starscream.xcscheme index ec7854e1..139182fc 100644 --- a/Starscream.xcodeproj/xcshareddata/xcschemes/Starscream.xcscheme +++ b/Starscream.xcodeproj/xcshareddata/xcschemes/Starscream.xcscheme @@ -1,6 +1,6 @@ Date: Thu, 7 Mar 2024 12:57:12 -0600 Subject: [PATCH 29/29] chore: update release tooling --- .github/workflows/release.yml | 2 +- Gemfile.lock | 122 ++++++++++++++++++---------------- 2 files changed, 65 insertions(+), 59 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 12850429..3bbbf184 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,7 +9,7 @@ jobs: runs-on: macos-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set Latest Tag id: vars run: echo "tag=$(git describe --tags `git rev-list --tags --max-count=1`)" >> $GITHUB_OUTPUT diff --git a/Gemfile.lock b/Gemfile.lock index 6f447ec4..1272daa4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,44 +1,48 @@ GEM remote: https://rubygems.org/ specs: - CFPropertyList (3.0.6) + CFPropertyList (3.0.7) + base64 + nkf rexml - activesupport (7.0.7.2) + activesupport (6.1.7.7) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) tzinfo (~> 2.0) - addressable (2.8.5) + zeitwerk (~> 2.3) + addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) algoliasearch (1.27.5) httpclient (~> 2.8, >= 2.8.3) json (>= 1.5.1) - artifactory (3.0.15) + artifactory (3.0.17) atomos (0.1.3) - aws-eventstream (1.2.0) - aws-partitions (1.807.0) - aws-sdk-core (3.180.3) - aws-eventstream (~> 1, >= 1.0.2) + aws-eventstream (1.3.0) + aws-partitions (1.895.0) + aws-sdk-core (3.191.3) + aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.651.0) - aws-sigv4 (~> 1.5) + aws-sigv4 (~> 1.8) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.71.0) - aws-sdk-core (~> 3, >= 3.177.0) + aws-sdk-kms (1.77.0) + aws-sdk-core (~> 3, >= 3.191.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.132.1) - aws-sdk-core (~> 3, >= 3.179.0) + aws-sdk-s3 (1.143.0) + aws-sdk-core (~> 3, >= 3.191.0) aws-sdk-kms (~> 1) - aws-sigv4 (~> 1.6) - aws-sigv4 (1.6.0) + aws-sigv4 (~> 1.8) + aws-sigv4 (1.8.0) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) + base64 (0.2.0) claide (1.1.0) - cocoapods (1.12.1) + cocoapods (1.15.2) addressable (~> 2.8) claide (>= 1.0.2, < 2.0) - cocoapods-core (= 1.12.1) + cocoapods-core (= 1.15.2) cocoapods-deintegrate (>= 1.0.3, < 2.0) - cocoapods-downloader (>= 1.6.0, < 2.0) + cocoapods-downloader (>= 2.1, < 3.0) cocoapods-plugins (>= 1.0.0, < 2.0) cocoapods-search (>= 1.0.0, < 2.0) cocoapods-trunk (>= 1.6.0, < 2.0) @@ -50,8 +54,8 @@ GEM molinillo (~> 0.8.0) nap (~> 1.0) ruby-macho (>= 2.3.0, < 3.0) - xcodeproj (>= 1.21.0, < 2.0) - cocoapods-core (1.12.1) + xcodeproj (>= 1.23.0, < 2.0) + cocoapods-core (1.15.2) activesupport (>= 5.0, < 8) addressable (~> 2.8) algoliasearch (~> 1.0) @@ -62,7 +66,7 @@ GEM public_suffix (~> 4.0) typhoeus (~> 1.0) cocoapods-deintegrate (1.0.5) - cocoapods-downloader (1.6.3) + cocoapods-downloader (2.1) cocoapods-plugins (1.0.0) nap cocoapods-search (1.0.1) @@ -74,7 +78,7 @@ GEM colored2 (3.1.2) commander (4.6.0) highline (~> 2.0.0) - concurrent-ruby (1.2.2) + concurrent-ruby (1.2.3) declarative (0.0.20) digest-crc (0.6.5) rake (>= 12.0.0, < 14.0.0) @@ -85,7 +89,7 @@ GEM escape (0.0.4) ethon (0.16.0) ffi (>= 1.15.0) - excon (0.100.0) + excon (0.109.0) faraday (1.10.3) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) @@ -114,8 +118,8 @@ GEM faraday-retry (1.0.3) faraday_middleware (1.2.0) faraday (~> 1.0) - fastimage (2.2.7) - fastlane (2.214.0) + fastimage (2.3.0) + fastlane (2.219.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -134,33 +138,35 @@ GEM gh_inspector (>= 1.1.2, < 2.0.0) google-apis-androidpublisher_v3 (~> 0.3) google-apis-playcustomapp_v1 (~> 0.1) + google-cloud-env (>= 1.6.0, < 2.0.0) google-cloud-storage (~> 1.31) highline (~> 2.0) + http-cookie (~> 1.0.5) json (< 3.0.0) jwt (>= 2.1.0, < 3) mini_magick (>= 4.9.4, < 5.0.0) multipart-post (>= 2.0.0, < 3.0.0) naturally (~> 2.2) - optparse (~> 0.1.1) + optparse (>= 0.1.1) plist (>= 3.1.0, < 4.0.0) rubyzip (>= 2.0.0, < 3.0.0) security (= 0.1.3) simctl (~> 1.6.3) terminal-notifier (>= 2.0.0, < 3.0.0) - terminal-table (>= 1.4.5, < 2.0.0) + terminal-table (~> 3) tty-screen (>= 0.6.3, < 1.0.0) tty-spinner (>= 0.8.0, < 1.0.0) word_wrap (~> 1.0.0) xcodeproj (>= 1.13.0, < 2.0.0) xcpretty (~> 0.3.0) xcpretty-travis-formatter (>= 0.0.3) - ffi (1.15.5) + ffi (1.16.3) fourflusher (2.3.1) fuzzy_match (2.0.4) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.48.0) + google-apis-androidpublisher_v3 (0.54.0) google-apis-core (>= 0.11.0, < 2.a) - google-apis-core (0.11.1) + google-apis-core (0.11.3) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.16.2, < 2.a) httpclient (>= 2.8.1, < 3.a) @@ -168,31 +174,29 @@ GEM representable (~> 3.0) retriable (>= 2.0, < 4.a) rexml - webrick google-apis-iamcredentials_v1 (0.17.0) google-apis-core (>= 0.11.0, < 2.a) google-apis-playcustomapp_v1 (0.13.0) google-apis-core (>= 0.11.0, < 2.a) - google-apis-storage_v1 (0.19.0) - google-apis-core (>= 0.9.0, < 2.a) - google-cloud-core (1.6.0) - google-cloud-env (~> 1.0) + google-apis-storage_v1 (0.29.0) + google-apis-core (>= 0.11.0, < 2.a) + google-cloud-core (1.6.1) + google-cloud-env (>= 1.0, < 3.a) google-cloud-errors (~> 1.0) google-cloud-env (1.6.0) faraday (>= 0.17.3, < 3.0) google-cloud-errors (1.3.1) - google-cloud-storage (1.44.0) + google-cloud-storage (1.45.0) addressable (~> 2.8) digest-crc (~> 0.4) google-apis-iamcredentials_v1 (~> 0.1) - google-apis-storage_v1 (~> 0.19.0) + google-apis-storage_v1 (~> 0.29.0) google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - googleauth (1.7.0) + googleauth (1.8.1) faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) - memoist (~> 0.16) multi_json (~> 1.11) os (>= 0.9, < 2.0) signet (>= 0.16, < 2.a) @@ -200,27 +204,28 @@ GEM http-cookie (1.0.5) domain_name (~> 0.5) httpclient (2.8.3) - i18n (1.14.1) + i18n (1.14.4) concurrent-ruby (~> 1.0) jmespath (1.6.2) - json (2.6.3) - jwt (2.7.1) - memoist (0.16.2) + json (2.7.1) + jwt (2.8.1) + base64 mini_magick (4.12.0) mini_mime (1.1.5) - minitest (5.19.0) + minitest (5.22.2) molinillo (0.8.0) multi_json (1.15.0) - multipart-post (2.3.0) + multipart-post (2.4.0) nanaimo (0.3.0) nap (1.1.0) naturally (2.2.1) netrc (0.11.0) - optparse (0.1.1) + nkf (0.2.0) + optparse (0.4.0) os (1.1.4) - plist (3.7.0) + plist (3.7.1) public_suffix (4.0.7) - rake (13.0.6) + rake (13.1.0) representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) @@ -232,7 +237,7 @@ GEM ruby2_keywords (0.0.5) rubyzip (2.3.2) security (0.1.3) - signet (0.17.0) + signet (0.18.0) addressable (~> 2.8) faraday (>= 0.17.5, < 3.a) jwt (>= 1.5, < 3.0) @@ -241,25 +246,24 @@ GEM CFPropertyList naturally terminal-notifier (2.0.0) - terminal-table (1.8.0) - unicode-display_width (~> 1.1, >= 1.1.1) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) trailblazer-option (0.1.2) tty-cursor (0.7.1) - tty-screen (0.8.1) + tty-screen (0.8.2) tty-spinner (0.9.3) tty-cursor (~> 0.7) - typhoeus (1.4.0) + typhoeus (1.4.1) ethon (>= 0.9.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) uber (0.1.0) unf (0.1.4) unf_ext - unf_ext (0.0.8.2) - unicode-display_width (1.8.0) - webrick (1.8.1) + unf_ext (0.0.9.1) + unicode-display_width (2.5.0) word_wrap (1.0.0) - xcodeproj (1.22.0) + xcodeproj (1.24.0) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) @@ -270,9 +274,11 @@ GEM rouge (~> 2.0.7) xcpretty-travis-formatter (1.0.1) xcpretty (~> 0.2, >= 0.0.7) + zeitwerk (2.6.13) PLATFORMS arm64-darwin-22 + arm64-darwin-23 x86_64-darwin-20 x86_64-linux @@ -281,4 +287,4 @@ DEPENDENCIES fastlane BUNDLED WITH - 2.4.10 + 2.4.19