From 02d82adf07e07606405dcf4b0422e147c6cc6b4a Mon Sep 17 00:00:00 2001 From: Erik Little Date: Sun, 17 Sep 2017 11:31:24 -0400 Subject: [PATCH 01/18] Don't use NSDictionary --- Source/SocketIO/Engine/SocketEngine.swift | 4 ++-- Source/SocketIO/Util/SocketExtensions.swift | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Source/SocketIO/Engine/SocketEngine.swift b/Source/SocketIO/Engine/SocketEngine.swift index 9995cb9..2fe64a3 100644 --- a/Source/SocketIO/Engine/SocketEngine.swift +++ b/Source/SocketIO/Engine/SocketEngine.swift @@ -206,7 +206,7 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll private func checkAndHandleEngineError(_ msg: String) { do { - let dict = try msg.toNSDictionary() + let dict = try msg.toDictionary() guard let error = dict["message"] as? String else { return } /* @@ -435,7 +435,7 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll } private func handleOpen(openData: String) { - guard let json = try? openData.toNSDictionary() else { + guard let json = try? openData.toDictionary() else { didError(reason: "Error parsing open packet") return diff --git a/Source/SocketIO/Util/SocketExtensions.swift b/Source/SocketIO/Util/SocketExtensions.swift index ef422c3..3959f6d 100644 --- a/Source/SocketIO/Util/SocketExtensions.swift +++ b/Source/SocketIO/Util/SocketExtensions.swift @@ -111,9 +111,9 @@ extension String { return array } - func toNSDictionary() throws -> NSDictionary { + func toDictionary() throws -> [String: Any] { guard let binData = data(using: .utf16, allowLossyConversion: false) else { return [:] } - guard let json = try JSONSerialization.jsonObject(with: binData, options: .allowFragments) as? NSDictionary else { + guard let json = try JSONSerialization.jsonObject(with: binData, options: .allowFragments) as? [String: Any] else { throw JSONError.notNSDictionary } From dda4a31149876bc748db8daa2d8b9823584c64e5 Mon Sep 17 00:00:00 2001 From: Erik Little Date: Mon, 18 Sep 2017 08:59:58 -0400 Subject: [PATCH 02/18] Remove another NS* use --- Source/SocketIO/Engine/SocketEngineSpec.swift | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/Source/SocketIO/Engine/SocketEngineSpec.swift b/Source/SocketIO/Engine/SocketEngineSpec.swift index 89f068f..0f549db 100644 --- a/Source/SocketIO/Engine/SocketEngineSpec.swift +++ b/Source/SocketIO/Engine/SocketEngineSpec.swift @@ -161,12 +161,7 @@ extension SocketEngineSpec { func createBinaryDataForSend(using data: Data) -> Either { if websocket { - var byteArray = [UInt8](repeating: 0x4, count: 1) - let mutData = NSMutableData(bytes: &byteArray, length: 1) - - mutData.append(data) - - return .left(mutData as Data) + return .left(Data(bytes: [0x4]) + data) } else { return .right("b4" + data.base64EncodedString(options: Data.Base64EncodingOptions(rawValue: 0))) } From e9296fd65ac44a9caef90bd24e1bc7fd9ff81b61 Mon Sep 17 00:00:00 2001 From: Erik Little Date: Tue, 19 Sep 2017 08:54:17 -0400 Subject: [PATCH 03/18] Rework logging protocol to use autoclosure --- Source/SocketIO/Client/SocketIOClient.swift | 27 +++++++++---------- .../SocketIO/Client/SocketIOClientSpec.swift | 2 +- Source/SocketIO/Engine/SocketEngine.swift | 16 +++++------ .../Engine/SocketEnginePollable.swift | 9 +++---- .../Engine/SocketEngineWebsocket.swift | 2 +- Source/SocketIO/Parse/SocketParsable.swift | 8 +++--- Source/SocketIO/Util/SocketLogger.swift | 19 ++++++------- 7 files changed, 39 insertions(+), 44 deletions(-) diff --git a/Source/SocketIO/Client/SocketIOClient.swift b/Source/SocketIO/Client/SocketIOClient.swift index 7ff919a..47d2e2b 100644 --- a/Source/SocketIO/Client/SocketIOClient.swift +++ b/Source/SocketIO/Client/SocketIOClient.swift @@ -153,7 +153,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So // MARK: Methods private func addEngine() { - DefaultSocketLogger.Logger.log("Adding engine", type: SocketIOClient.logType, args: "") + DefaultSocketLogger.Logger.log("Adding engine", type: SocketIOClient.logType) engine?.engineQueue.sync { self.engine?.client = nil @@ -218,7 +218,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So func didDisconnect(reason: String) { guard status != .disconnected else { return } - DefaultSocketLogger.Logger.log("Disconnected: %@", type: SocketIOClient.logType, args: reason) + DefaultSocketLogger.Logger.log("Disconnected: \(reason)", type: SocketIOClient.logType) reconnecting = false status = .disconnected @@ -327,7 +327,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So let packet = SocketPacket.packetFromEmit(data, id: ack ?? -1, nsp: nsp, ack: false) let str = packet.packetString - DefaultSocketLogger.Logger.log("Emitting: %@", type: SocketIOClient.logType, args: str) + DefaultSocketLogger.Logger.log("Emitting: \(str)", type: SocketIOClient.logType) engine?.send(str, withData: packet.binary) } @@ -339,7 +339,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So let packet = SocketPacket.packetFromEmit(items, id: ack, nsp: nsp, ack: true) let str = packet.packetString - DefaultSocketLogger.Logger.log("Emitting Ack: %@", type: SocketIOClient.logType, args: str) + DefaultSocketLogger.Logger.log("Emitting Ack: \(str)", type: SocketIOClient.logType) engine?.send(str, withData: packet.binary) } @@ -378,7 +378,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So } private func _engineDidError(reason: String) { - DefaultSocketLogger.Logger.error("%@", type: SocketIOClient.logType, args: reason) + DefaultSocketLogger.Logger.error("\(reason)", type: SocketIOClient.logType) handleClientEvent(.error, data: [reason]) } @@ -394,7 +394,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So func handleAck(_ ack: Int, data: [Any]) { guard status == .connected else { return } - DefaultSocketLogger.Logger.log("Handling ack: %@ with data: %@", type: SocketIOClient.logType, args: ack, data) + DefaultSocketLogger.Logger.log("Handling ack: \(ack) with data: \(data)", type: SocketIOClient.logType) ackHandlers.executeAck(ack, with: data, onQueue: handleQueue) } @@ -408,8 +408,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So open func handleEvent(_ event: String, data: [Any], isInternalMessage: Bool, withAck ack: Int = -1) { guard status == .connected || isInternalMessage else { return } - DefaultSocketLogger.Logger.log("Handling event: %@ with data: %@", type: SocketIOClient.logType, - args: event, data) + DefaultSocketLogger.Logger.log("Handling event: \(event) with data: \(data)", type: SocketIOClient.logType) anyHandler?(SocketAnyEvent(event: event, items: data)) @@ -459,7 +458,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So /// /// - parameter event: The event to remove handlers for. open func off(_ event: String) { - DefaultSocketLogger.Logger.log("Removing handler for event: %@", type: SocketIOClient.logType, args: event) + DefaultSocketLogger.Logger.log("Removing handler for event: \(event)", type: SocketIOClient.logType) handlers = handlers.filter({ $0.event != event }) } @@ -470,7 +469,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So /// /// - parameter id: The UUID of the handler you wish to remove. open func off(id: UUID) { - DefaultSocketLogger.Logger.log("Removing handler with id: %@", type: SocketIOClient.logType, args: id) + DefaultSocketLogger.Logger.log("Removing handler with id: \(id)", type: SocketIOClient.logType) handlers = handlers.filter({ $0.id != id }) } @@ -482,7 +481,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So /// - returns: A unique id for the handler that can be used to remove it. @discardableResult open func on(_ event: String, callback: @escaping NormalCallback) -> UUID { - DefaultSocketLogger.Logger.log("Adding handler for event: %@", type: SocketIOClient.logType, args: event) + DefaultSocketLogger.Logger.log("Adding handler for event: \(event)", type: SocketIOClient.logType) let handler = SocketEventHandler(event: event, id: UUID(), callback: callback) handlers.append(handler) @@ -505,7 +504,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So /// - returns: A unique id for the handler that can be used to remove it. @discardableResult open func on(clientEvent event: SocketClientEvent, callback: @escaping NormalCallback) -> UUID { - DefaultSocketLogger.Logger.log("Adding handler for event: %@", type: SocketIOClient.logType, args: event) + DefaultSocketLogger.Logger.log("Adding handler for event: \(event)", type: SocketIOClient.logType) let handler = SocketEventHandler(event: event.rawValue, id: UUID(), callback: callback) handlers.append(handler) @@ -530,7 +529,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So /// - returns: A unique id for the handler that can be used to remove it. @discardableResult open func once(_ event: String, callback: @escaping NormalCallback) -> UUID { - DefaultSocketLogger.Logger.log("Adding once handler for event: %@", type: SocketIOClient.logType, args: event) + DefaultSocketLogger.Logger.log("Adding once handler for event: \(event)", type: SocketIOClient.logType) let id = UUID() @@ -556,7 +555,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So /// /// - parameter msg: The message that needs parsing. public func parseEngineMessage(_ msg: String) { - DefaultSocketLogger.Logger.log("Should parse message: %@", type: SocketIOClient.logType, args: msg) + DefaultSocketLogger.Logger.log("Should parse message: \(msg)", type: SocketIOClient.logType) handleQueue.async { self.parseSocketMessage(msg) } } diff --git a/Source/SocketIO/Client/SocketIOClientSpec.swift b/Source/SocketIO/Client/SocketIOClientSpec.swift index d707fbf..f53525f 100644 --- a/Source/SocketIO/Client/SocketIOClientSpec.swift +++ b/Source/SocketIO/Client/SocketIOClientSpec.swift @@ -40,7 +40,7 @@ protocol SocketIOClientSpec : class { extension SocketIOClientSpec { func didError(reason: String) { - DefaultSocketLogger.Logger.error("%@", type: "SocketIOClient", args: reason) + DefaultSocketLogger.Logger.error("\(reason)", type: "SocketIOClient") handleClientEvent(.error, data: [reason]) } diff --git a/Source/SocketIO/Engine/SocketEngine.swift b/Source/SocketIO/Engine/SocketEngine.swift index 2fe64a3..293ca83 100644 --- a/Source/SocketIO/Engine/SocketEngine.swift +++ b/Source/SocketIO/Engine/SocketEngine.swift @@ -255,7 +255,7 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll disconnect(reason: "reconnect") } - DefaultSocketLogger.Logger.log("Starting engine. Server: %@", type: SocketEngine.logType, args: url) + DefaultSocketLogger.Logger.log("Starting engine. Server: \(url)", type: SocketEngine.logType) DefaultSocketLogger.Logger.log("Handshaking", type: SocketEngine.logType) resetEngine() @@ -336,7 +336,7 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll /// Called when an error happens during execution. Causes a disconnection. public func didError(reason: String) { - DefaultSocketLogger.Logger.error("%@", type: SocketEngine.logType, args: reason) + DefaultSocketLogger.Logger.error("\(reason)", type: SocketEngine.logType) client?.engineDidError(reason: reason) disconnect(reason: reason) } @@ -490,7 +490,7 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll /// /// - parameter data: The data to parse. public func parseEngineData(_ data: Data) { - DefaultSocketLogger.Logger.log("Got binary data: %@", type: SocketEngine.logType, args: data) + DefaultSocketLogger.Logger.log("Got binary data: \(data)", type: SocketEngine.logType) client?.parseEngineBinaryData(data.subdata(in: 1.. ()) { guard polling && !closed && !invalidated && !fastUpgrade else { return } - DefaultSocketLogger.Logger.log("Doing polling %@ %@", type: "SocketEnginePolling", - args: req.httpMethod ?? "", req) + DefaultSocketLogger.Logger.log("Doing polling \(req.httpMethod ?? "") \(req)", type: "SocketEnginePolling") session?.dataTask(with: req, completionHandler: callback).resume() } @@ -187,7 +186,7 @@ extension SocketEnginePollable { func parsePollingMessage(_ str: String) { guard str.characters.count != 1 else { return } - DefaultSocketLogger.Logger.log("Got poll message: %@", type: "SocketEnginePolling", args: str) + DefaultSocketLogger.Logger.log("Got poll message: \(str)", type: "SocketEnginePolling") var reader = SocketStringReader(message: str) @@ -209,7 +208,7 @@ extension SocketEnginePollable { /// - parameter withType: The type of message to send. /// - parameter withData: The data associated with this message. public func sendPollMessage(_ message: String, withType type: SocketEnginePacketType, withData datas: [Data]) { - DefaultSocketLogger.Logger.log("Sending poll: %@ as type: %@", type: "SocketEnginePolling", args: message, type.rawValue) + DefaultSocketLogger.Logger.log("Sending poll: \(message) as type: \(type.rawValue)", type: "SocketEnginePolling") postWait.append(String(type.rawValue) + message) diff --git a/Source/SocketIO/Engine/SocketEngineWebsocket.swift b/Source/SocketIO/Engine/SocketEngineWebsocket.swift index 70b885c..e572d96 100644 --- a/Source/SocketIO/Engine/SocketEngineWebsocket.swift +++ b/Source/SocketIO/Engine/SocketEngineWebsocket.swift @@ -54,7 +54,7 @@ extension SocketEngineWebsocket { /// - parameter withType: The type of message to send. /// - parameter withData: The data associated with this message. public func sendWebSocketMessage(_ str: String, withType type: SocketEnginePacketType, withData datas: [Data]) { - DefaultSocketLogger.Logger.log("Sending ws: %@ as type: %@", type: "SocketEngine", args: str, type.rawValue) + DefaultSocketLogger.Logger.log("Sending ws: \(str) as type: \(type.rawValue)", type: "SocketEngineWebSocket") ws?.write(string: "\(type.rawValue)\(str)") diff --git a/Source/SocketIO/Parse/SocketParsable.swift b/Source/SocketIO/Parse/SocketParsable.swift index be82d2d..d99d0c1 100644 --- a/Source/SocketIO/Parse/SocketParsable.swift +++ b/Source/SocketIO/Parse/SocketParsable.swift @@ -63,7 +63,7 @@ extension SocketParsable where Self: SocketIOClientSpec { case .error: handleEvent("error", data: pack.data, isInternalMessage: true, withAck: pack.id) default: - DefaultSocketLogger.Logger.log("Got invalid packet: %@", type: "SocketParser", args: pack.description) + DefaultSocketLogger.Logger.log("Got invalid packet: \(pack.description)", type: "SocketParser") } } @@ -137,16 +137,16 @@ extension SocketParsable where Self: SocketIOClientSpec { func parseSocketMessage(_ message: String) { guard !message.isEmpty else { return } - DefaultSocketLogger.Logger.log("Parsing %@", type: "SocketParser", args: message) + DefaultSocketLogger.Logger.log("Parsing \(message)", type: "SocketParser") do { let packet = try parseString(message) - DefaultSocketLogger.Logger.log("Decoded packet as: %@", type: "SocketParser", args: packet.description) + DefaultSocketLogger.Logger.log("Decoded packet as: \(packet.description)", type: "SocketParser") handlePacket(packet) } catch { - DefaultSocketLogger.Logger.error("\(error): %@", type: "SocketParser", args: message) + DefaultSocketLogger.Logger.error("\(error): \(message)", type: "SocketParser") } } diff --git a/Source/SocketIO/Util/SocketLogger.swift b/Source/SocketIO/Util/SocketLogger.swift index 0b457ae..46e3f1b 100644 --- a/Source/SocketIO/Util/SocketLogger.swift +++ b/Source/SocketIO/Util/SocketLogger.swift @@ -38,34 +38,31 @@ public protocol SocketLogger : class { /// - parameter message: The message being logged. Can include `%@` that will be replaced with `args` /// - parameter type: The type of entity that called for logging. /// - parameter args: Any args that should be inserted into the message. May be left out. - func log(_ message: String, type: String, args: Any...) + func log(_ message: @autoclosure () -> String, type: String) /// Error Messages /// /// - parameter message: The message being logged. Can include `%@` that will be replaced with `args` /// - parameter type: The type of entity that called for logging. /// - parameter args: Any args that should be inserted into the message. May be left out. - func error(_ message: String, type: String, args: Any...) + func error(_ message: @autoclosure () -> String, type: String) } public extension SocketLogger { /// Default implementation. - func log(_ message: String, type: String, args: Any...) { - abstractLog("LOG", message: message, type: type, args: args) + func log(_ message: @autoclosure () -> String, type: String) { + abstractLog("LOG", message: message, type: type) } /// Default implementation. - func error(_ message: String, type: String, args: Any...) { - abstractLog("ERROR", message: message, type: type, args: args) + func error(_ message: @autoclosure () -> String, type: String) { + abstractLog("ERROR", message: message, type: type) } - private func abstractLog(_ logType: String, message: String, type: String, args: [Any]) { + private func abstractLog(_ logType: String, message: @autoclosure () -> String, type: String) { guard log else { return } - let newArgs = args.map({arg -> CVarArg in String(describing: arg)}) - let messageFormat = String(format: message, arguments: newArgs) - - NSLog("\(logType) \(type): %@", messageFormat) + NSLog("\(logType) \(type): %@", message()) } } From cd3eb37ac801185201301937b2fb5113401ff51f Mon Sep 17 00:00:00 2001 From: Erik Date: Sat, 20 May 2017 09:27:01 -0400 Subject: [PATCH 04/18] Initial Swift4 work --- Source/SocketIO/Ack/SocketAckEmitter.swift | 2 ++ Source/SocketIO/Client/SocketAnyEvent.swift | 2 ++ Source/SocketIO/Client/SocketIOClient.swift | 23 +++++++++++++++++++ Source/SocketIO/Engine/SocketEngine.swift | 2 +- .../SocketIO/Util/SocketClientManager.swift | 5 ++++ Source/Starscream | 2 +- 6 files changed, 34 insertions(+), 2 deletions(-) diff --git a/Source/SocketIO/Ack/SocketAckEmitter.swift b/Source/SocketIO/Ack/SocketAckEmitter.swift index ea82ab0..b13e15a 100644 --- a/Source/SocketIO/Ack/SocketAckEmitter.swift +++ b/Source/SocketIO/Ack/SocketAckEmitter.swift @@ -65,6 +65,7 @@ public final class SocketAckEmitter : NSObject { /// Call to ack receiving this event. /// /// - parameter items: An array of items to send when acking. Use `[]` to send nothing. + @objc public func with(_ items: [Any]) { guard ackNum != -1 else { return } @@ -104,6 +105,7 @@ public final class OnAckCallback : NSObject { /// - parameter after: The number of seconds before this emit times out if an ack hasn't been received. /// - parameter callback: The callback called when an ack is received, or when a timeout happens. /// To check for timeout, use `SocketAckStatus`'s `noAck` case. + @objc public func timingOut(after seconds: Double, callback: @escaping AckCallback) { guard let socket = self.socket, ackNumber != -1 else { return } diff --git a/Source/SocketIO/Client/SocketAnyEvent.swift b/Source/SocketIO/Client/SocketAnyEvent.swift index f27bb1c..441e8c5 100644 --- a/Source/SocketIO/Client/SocketAnyEvent.swift +++ b/Source/SocketIO/Client/SocketAnyEvent.swift @@ -29,9 +29,11 @@ public final class SocketAnyEvent : NSObject { // MARK: Properties /// The event name. + @objc public let event: String /// The data items for this event. + @objc public let items: [Any]? /// The description of this event. diff --git a/Source/SocketIO/Client/SocketIOClient.swift b/Source/SocketIO/Client/SocketIOClient.swift index 47d2e2b..11cf734 100644 --- a/Source/SocketIO/Client/SocketIOClient.swift +++ b/Source/SocketIO/Client/SocketIOClient.swift @@ -54,25 +54,31 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So } /// If `true` then every time `connect` is called, a new engine will be created. + @objc public var forceNew = false /// The queue that all interaction with the client should occur on. This is the queue that event handlers are /// called on. + @objc public var handleQueue = DispatchQueue.main /// The namespace for this client. + @objc public var nsp = "/" /// The configuration for this client. public var config: SocketIOClientConfiguration /// If `true`, this client will try and reconnect on any disconnects. + @objc public var reconnects = true /// The number of seconds to wait before attempting to reconnect. + @objc public var reconnectWait = 10 /// The session id of this client. + @objc public var sid: String? { return engine?.sid } @@ -81,6 +87,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So /// /// If changed after calling `init`, `forceNew` must be set to `true`, or it will only connect to the url set in the /// init. + @objc public var socketURL: URL var ackHandlers = SocketAckManager() @@ -141,6 +148,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So /// /// - parameter socketURL: The url of the socket.io server. /// - parameter config: The config for this socket. + @objc public convenience init(socketURL: NSURL, config: NSDictionary?) { self.init(socketURL: socketURL as URL, config: config?.toSocketConfiguration() ?? []) } @@ -163,6 +171,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So } /// Connect to the server. + @objc open func connect() { connect(timeoutAfter: 0, withHandler: nil) } @@ -172,6 +181,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So /// - parameter timeoutAfter: The number of seconds after which if we are not connected we assume the connection /// has failed. Pass 0 to never timeout. /// - parameter withHandler: The handler to call when the client fails to connect. + @objc open func connect(timeoutAfter: Double, withHandler handler: (() -> ())?) { assert(timeoutAfter >= 0, "Invalid timeout: \(timeoutAfter)") @@ -229,6 +239,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So } /// Disconnects the socket. + @objc open func disconnect() { DefaultSocketLogger.Logger.log("Closing socket", type: SocketIOClient.logType) @@ -257,6 +268,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So /// /// - parameter event: The event to send. /// - parameter with: The items to send with this event. May be left out. + @objc open func emit(_ event: String, with items: [Any]) { guard status == .connected else { handleClientEvent(.error, data: ["Tried emitting \(event) when not connected"]) @@ -314,6 +326,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So /// - parameter event: The event to send. /// - parameter with: The items to send with this event. Use `[]` to send nothing. /// - returns: An `OnAckCallback`. You must call the `timingOut(after:)` method before the event will be sent. + @objc open func emitWithAck(_ event: String, with items: [Any]) -> OnAckCallback { return createOnAck([event] + items) } @@ -405,6 +418,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So /// - parameter data: the data associated with this event. /// - parameter isInternalMessage: If `true` event handlers for this event will be called regardless of status. /// - parameter withAck: The ack number for this event. May be left out. + @objc open func handleEvent(_ event: String, data: [Any], isInternalMessage: Bool, withAck ack: Int = -1) { guard status == .connected || isInternalMessage else { return } @@ -422,6 +436,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So } /// Leaves nsp and goes back to the default namespace. + @objc open func leaveNamespace() { if nsp != "/" { engine?.send("1\(nsp)", withData: []) @@ -434,6 +449,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So /// **Do not use this to join the default namespace.** Instead call `leaveNamespace`. /// /// - parameter namespace: The namespace to join. + @objc open func joinNamespace(_ namespace: String) { nsp = namespace @@ -457,6 +473,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So /// If you wish to remove a specific event, call the `off(id:)` with the UUID received from its `on` call. /// /// - parameter event: The event to remove handlers for. + @objc open func off(_ event: String) { DefaultSocketLogger.Logger.log("Removing handler for event: \(event)", type: SocketIOClient.logType) @@ -468,6 +485,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So /// If you want to remove all events for an event, call the off `off(_:)` method with the event name. /// /// - parameter id: The UUID of the handler you wish to remove. + @objc open func off(id: UUID) { DefaultSocketLogger.Logger.log("Removing handler with id: \(id)", type: SocketIOClient.logType) @@ -479,6 +497,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So /// - parameter event: The event name for this handler. /// - parameter callback: The callback that will execute when this event is received. /// - returns: A unique id for the handler that can be used to remove it. + @objc @discardableResult open func on(_ event: String, callback: @escaping NormalCallback) -> UUID { DefaultSocketLogger.Logger.log("Adding handler for event: \(event)", type: SocketIOClient.logType) @@ -527,6 +546,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So /// - parameter event: The event name for this handler. /// - parameter callback: The callback that will execute when this event is received. /// - returns: A unique id for the handler that can be used to remove it. + @objc @discardableResult open func once(_ event: String, callback: @escaping NormalCallback) -> UUID { DefaultSocketLogger.Logger.log("Adding once handler for event: \(event)", type: SocketIOClient.logType) @@ -547,6 +567,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So /// Adds a handler that will be called on every event. /// /// - parameter handler: The callback that will execute whenever an event is received. + @objc open func onAny(_ handler: @escaping (SocketAnyEvent) -> ()) { anyHandler = handler } @@ -570,6 +591,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So /// Tries to reconnect to the server. /// /// This will cause a `disconnect` event to be emitted, as well as an `reconnectAttempt` event. + @objc open func reconnect() { guard !reconnecting else { return } @@ -578,6 +600,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So /// Removes all handlers. /// Can be used after disconnecting to break any potential remaining retain cycles. + @objc open func removeAllHandlers() { handlers.removeAll(keepingCapacity: false) } diff --git a/Source/SocketIO/Engine/SocketEngine.swift b/Source/SocketIO/Engine/SocketEngine.swift index 293ca83..969011b 100644 --- a/Source/SocketIO/Engine/SocketEngine.swift +++ b/Source/SocketIO/Engine/SocketEngine.swift @@ -223,7 +223,7 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll private func handleBase64(message: String) { // binary in base64 string - let noPrefix = message[message.index(message.startIndex, offsetBy: 2).. SocketIOClient? { return sockets.removeValue(forKey: label) @@ -87,6 +90,7 @@ open class SocketClientManager : NSObject { /// /// - parameter socket: The socket to remove. /// - returns: The socket if it was in the manager. + @objc @discardableResult open func removeSocket(_ socket: SocketIOClient) -> SocketIOClient? { var returnSocket: SocketIOClient? @@ -99,6 +103,7 @@ open class SocketClientManager : NSObject { } /// Removes all the sockets in the manager. + @objc open func removeSockets() { sockets.removeAll() } diff --git a/Source/Starscream b/Source/Starscream index f7e28f2..4ae6fe9 160000 --- a/Source/Starscream +++ b/Source/Starscream @@ -1 +1 @@ -Subproject commit f7e28f24ae20898da5804079319da52682bb9212 +Subproject commit 4ae6fe995316a49e7ac4ee0aaba9b3a0ba7f774d From 4b48bdd3e537d5f8aa4f3007cbd265c35ebd8a6e Mon Sep 17 00:00:00 2001 From: Erik Little Date: Tue, 6 Jun 2017 07:52:35 -0400 Subject: [PATCH 05/18] guard creating prefixless data --- Source/SocketIO/Engine/SocketEngine.swift | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Source/SocketIO/Engine/SocketEngine.swift b/Source/SocketIO/Engine/SocketEngine.swift index 969011b..d6994a2 100644 --- a/Source/SocketIO/Engine/SocketEngine.swift +++ b/Source/SocketIO/Engine/SocketEngine.swift @@ -223,7 +223,11 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll private func handleBase64(message: String) { // binary in base64 string - let noPrefix = String(message[message.index(message.startIndex, offsetBy: 2).. Date: Tue, 8 Aug 2017 07:10:06 -0400 Subject: [PATCH 06/18] Update for latest xcode beta --- SocketIO-MacTests/SocketSideEffectTest.swift | 1 + Source/SocketIO/Engine/SocketEngine.swift | 6 +----- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/SocketIO-MacTests/SocketSideEffectTest.swift b/SocketIO-MacTests/SocketSideEffectTest.swift index ab12640..f2e43dd 100644 --- a/SocketIO-MacTests/SocketSideEffectTest.swift +++ b/SocketIO-MacTests/SocketSideEffectTest.swift @@ -8,6 +8,7 @@ import XCTest @testable import SocketIO +@testable import StarscreamSocketIO class SocketSideEffectTest: XCTestCase { func testInitialCurrentAck() { diff --git a/Source/SocketIO/Engine/SocketEngine.swift b/Source/SocketIO/Engine/SocketEngine.swift index d6994a2..2a4e699 100644 --- a/Source/SocketIO/Engine/SocketEngine.swift +++ b/Source/SocketIO/Engine/SocketEngine.swift @@ -223,11 +223,7 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll private func handleBase64(message: String) { // binary in base64 string - guard let noPrefix = String(message[message.index(message.startIndex, offsetBy: 2).. Date: Tue, 8 Aug 2017 16:18:45 -0400 Subject: [PATCH 07/18] Add missing @objc --- SocketIO-MacTests/SocketObjectiveCTest.m | 2 ++ Source/SocketIO/Client/SocketIOClient.swift | 2 ++ 2 files changed, 4 insertions(+) diff --git a/SocketIO-MacTests/SocketObjectiveCTest.m b/SocketIO-MacTests/SocketObjectiveCTest.m index fb4fed3..b9ddc04 100644 --- a/SocketIO-MacTests/SocketObjectiveCTest.m +++ b/SocketIO-MacTests/SocketObjectiveCTest.m @@ -36,6 +36,8 @@ self.socket.nsp = @"/objective-c"; self.socket.reconnects = false; self.socket.reconnectWait = 1; + if (self.socket.status == SocketIOClientStatusConnected) { } + if (self.socket.engine == NULL) { } } - (void)testOnSyntax { diff --git a/Source/SocketIO/Client/SocketIOClient.swift b/Source/SocketIO/Client/SocketIOClient.swift index 11cf734..9875895 100644 --- a/Source/SocketIO/Client/SocketIOClient.swift +++ b/Source/SocketIO/Client/SocketIOClient.swift @@ -36,9 +36,11 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So private static let logType = "SocketIOClient" /// The engine for this client. + @objc public private(set) var engine: SocketEngineSpec? /// The status of this client. + @objc public private(set) var status = SocketIOClientStatus.notConnected { didSet { switch status { From 358e44a43693e4dea5924c00f7cb3dc46ae60489 Mon Sep 17 00:00:00 2001 From: Erik Little Date: Thu, 17 Aug 2017 23:20:16 -0400 Subject: [PATCH 08/18] Update xcodeproj after rebase --- .../project.pbxproj | 40 ++++++++++++++----- .../xcschemes/SocketIO-Mac.xcscheme | 4 +- .../xcschemes/SocketIO-iOS.xcscheme | 2 +- .../xcschemes/SocketIO-tvOS.xcscheme | 4 +- Source/Starscream | 2 +- 5 files changed, 39 insertions(+), 13 deletions(-) diff --git a/Socket.IO-Client-Swift.xcodeproj/project.pbxproj b/Socket.IO-Client-Swift.xcodeproj/project.pbxproj index 73f35a7..6dc4b5c 100644 --- a/Socket.IO-Client-Swift.xcodeproj/project.pbxproj +++ b/Socket.IO-Client-Swift.xcodeproj/project.pbxproj @@ -657,7 +657,7 @@ attributes = { LastSwiftMigration = 0730; LastSwiftUpdateCheck = 0730; - LastUpgradeCheck = 0800; + LastUpgradeCheck = 0900; TargetAttributes = { 572EF2181B51F16C00EEBB58 = { CreatedOnToolsVersion = 6.4; @@ -667,11 +667,11 @@ }; 572EF2371B51F18A00EEBB58 = { CreatedOnToolsVersion = 6.4; - LastSwiftMigration = 0800; + LastSwiftMigration = 0900; }; 572EF2411B51F18A00EEBB58 = { CreatedOnToolsVersion = 6.4; - LastSwiftMigration = 0800; + LastSwiftMigration = 0900; }; }; }; @@ -958,11 +958,19 @@ isa = XCBuildConfiguration; buildSettings = { BITCODE_GENERATION_MODE = bitcode; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "Developer ID Application"; @@ -992,11 +1000,19 @@ isa = XCBuildConfiguration; buildSettings = { BITCODE_GENERATION_MODE = bitcode; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "Developer ID Application"; @@ -1038,7 +1054,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; @@ -1097,7 +1113,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "iPhone Distribution"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; @@ -1285,7 +1301,8 @@ SKIP_INSTALL = YES; SWIFT_INCLUDE_PATHS = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -1342,7 +1359,8 @@ SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_INCLUDE_PATHS = ""; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -1403,7 +1421,8 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -1454,7 +1473,8 @@ PRODUCT_BUNDLE_IDENTIFIER = "io.socket.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; }; name = Release; }; @@ -1476,6 +1496,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; @@ -1535,6 +1556,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "iPhone Distribution"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; diff --git a/Socket.IO-Client-Swift.xcodeproj/xcshareddata/xcschemes/SocketIO-Mac.xcscheme b/Socket.IO-Client-Swift.xcodeproj/xcshareddata/xcschemes/SocketIO-Mac.xcscheme index ea5febe..d533f78 100644 --- a/Socket.IO-Client-Swift.xcodeproj/xcshareddata/xcschemes/SocketIO-Mac.xcscheme +++ b/Socket.IO-Client-Swift.xcodeproj/xcshareddata/xcschemes/SocketIO-Mac.xcscheme @@ -1,6 +1,6 @@ Date: Tue, 29 Aug 2017 17:54:05 -0400 Subject: [PATCH 09/18] Build swift4.0 branch --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index ad25aeb..b744028 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,12 @@ language: objective-c xcode_project: Socket.IO-Client-Swift.xcodeproj # path to your xcodeproj folder xcode_scheme: SocketIO-iOS -osx_image: xcode8.3 +osx_image: xcode9 branches: only: - master - development + - swift4.0 before_install: - brew update - brew outdated xctool || brew upgrade xctool From dc3b1ea8c7ba99ec40a33b908427cd7c2be0017d Mon Sep 17 00:00:00 2001 From: Erik Little Date: Thu, 31 Aug 2017 18:46:12 -0400 Subject: [PATCH 10/18] Just use xcodebuild for swift4.0 branch --- .travis.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index b744028..6284db8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,7 +11,7 @@ before_install: - brew update - brew outdated xctool || brew upgrade xctool script: - - xcodebuild -project Socket.IO-Client-Swift.xcodeproj -scheme SocketIO-Mac build-for-testing -quiet - - xctool -project Socket.IO-Client-Swift.xcodeproj -scheme SocketIO-Mac run-tests --parallelize - - swift build -#script: xcodebuild -project Socket.IO-Client-Swift.xcodeproj -scheme SocketIO-Mac build test + - xcodebuild -project Socket.IO-Client-Swift.xcodeproj -scheme SocketIO-Mac build test +# - xcodebuild -project Socket.IO-Client-Swift.xcodeproj -scheme SocketIO-Mac build-for-testing -quiet +# - xctool -project Socket.IO-Client-Swift.xcodeproj -scheme SocketIO-Mac run-tests --parallelize +# - swift build From dc4c25bff52b22883d06c5913076ce4d4c91dc9c Mon Sep 17 00:00:00 2001 From: Erik Little Date: Thu, 31 Aug 2017 23:45:44 -0400 Subject: [PATCH 11/18] make build quiet --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 6284db8..a85dc68 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,7 +11,7 @@ before_install: - brew update - brew outdated xctool || brew upgrade xctool script: - - xcodebuild -project Socket.IO-Client-Swift.xcodeproj -scheme SocketIO-Mac build test + - xcodebuild -project Socket.IO-Client-Swift.xcodeproj -scheme SocketIO-Mac build test -quiet # - xcodebuild -project Socket.IO-Client-Swift.xcodeproj -scheme SocketIO-Mac build-for-testing -quiet # - xctool -project Socket.IO-Client-Swift.xcodeproj -scheme SocketIO-Mac run-tests --parallelize # - swift build From 04ba1aa1c57d6fc0faa4a616f990676c5eb4b000 Mon Sep 17 00:00:00 2001 From: Erik Little Date: Tue, 19 Sep 2017 20:05:09 -0400 Subject: [PATCH 12/18] Update proj for swift 4 --- Socket.IO-Client-Swift.xcodeproj/project.pbxproj | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Socket.IO-Client-Swift.xcodeproj/project.pbxproj b/Socket.IO-Client-Swift.xcodeproj/project.pbxproj index 6dc4b5c..c54d956 100644 --- a/Socket.IO-Client-Swift.xcodeproj/project.pbxproj +++ b/Socket.IO-Client-Swift.xcodeproj/project.pbxproj @@ -1087,7 +1087,7 @@ SKIP_INSTALL = YES; SWIFT_INCLUDE_PATHS = $SRCROOT/zlib; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -1139,7 +1139,7 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_INCLUDE_PATHS = $SRCROOT/zlib; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -1195,6 +1195,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "io.socket.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -1239,6 +1240,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "io.socket.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; + SWIFT_VERSION = 4.0; VALIDATE_PRODUCT = YES; }; name = Release; @@ -1531,6 +1533,7 @@ SKIP_INSTALL = YES; SWIFT_INCLUDE_PATHS = $SRCROOT/zlib; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = 3; TVOS_DEPLOYMENT_TARGET = 9.0; VERSIONING_SYSTEM = "apple-generic"; @@ -1584,6 +1587,7 @@ SDKROOT = appletvos; SKIP_INSTALL = YES; SWIFT_INCLUDE_PATHS = $SRCROOT/zlib; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = 3; TVOS_DEPLOYMENT_TARGET = 9.0; VALIDATE_PRODUCT = YES; @@ -1640,6 +1644,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "io.socket.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -1684,6 +1689,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "io.socket.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; + SWIFT_VERSION = 4.0; VALIDATE_PRODUCT = YES; }; name = Release; From ad2fb175b3bd5e077d896628c0fb47c60262f23e Mon Sep 17 00:00:00 2001 From: Erik Little Date: Tue, 19 Sep 2017 20:15:47 -0400 Subject: [PATCH 13/18] bump tools versions --- .swift-version | 2 +- Package.swift | 2 ++ Socket.IO-Client-Swift.podspec | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.swift-version b/.swift-version index 8c50098..5186d07 100644 --- a/.swift-version +++ b/.swift-version @@ -1 +1 @@ -3.1 +4.0 diff --git a/Package.swift b/Package.swift index b60d8ec..d4a7332 100644 --- a/Package.swift +++ b/Package.swift @@ -1,3 +1,5 @@ +// swift-tools-version:4.0 + import PackageDescription let package = Package( diff --git a/Socket.IO-Client-Swift.podspec b/Socket.IO-Client-Swift.podspec index ea505d6..eae9b3e 100644 --- a/Socket.IO-Client-Swift.podspec +++ b/Socket.IO-Client-Swift.podspec @@ -21,7 +21,7 @@ Pod::Spec.new do |s| :submodules => true } s.pod_target_xcconfig = { - 'SWIFT_VERSION' => '3.1' + 'SWIFT_VERSION' => '4.0' } s.source_files = "Source/SocketIO/**/*.swift", "Source/SocketIO/*.swift" s.dependency "StarscreamSocketIO", "~> 8.0.5" From 32e0fe312b84a9861da7a57dabf2fcf79586e281 Mon Sep 17 00:00:00 2001 From: Erik Little Date: Tue, 19 Sep 2017 20:36:52 -0400 Subject: [PATCH 14/18] start work on fixing spm --- Package.swift | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Package.swift b/Package.swift index d4a7332..0d547f8 100644 --- a/Package.swift +++ b/Package.swift @@ -5,7 +5,9 @@ import PackageDescription let package = Package( name: "SocketIO", dependencies: [ - .Package(url: "https://github.com/nuclearace/Starscream", majorVersion: 8), + .package(url: "https://github.com/nuclearace/Starscream", from: "8.0.0"), ], - exclude: ["Source/Starscream"] + targets: [ + .target(name: "SocketIO", exclude: ["Sources/Starscream"]) + ] ) From ce8f1523cfc3382233920c61767332562856f7b1 Mon Sep 17 00:00:00 2001 From: Erik Little Date: Tue, 19 Sep 2017 20:50:36 -0400 Subject: [PATCH 15/18] update starscream dev --- Source/Starscream | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Starscream b/Source/Starscream index f7e28f2..3f5f50a 160000 --- a/Source/Starscream +++ b/Source/Starscream @@ -1 +1 @@ -Subproject commit f7e28f24ae20898da5804079319da52682bb9212 +Subproject commit 3f5f50ad159a27fb43cb90b5286c3b2148c2b51e From bf2beb7431ccd553a90ab0a86c6df7ed2a078fd9 Mon Sep 17 00:00:00 2001 From: Erik Little Date: Tue, 19 Sep 2017 21:10:32 -0400 Subject: [PATCH 16/18] see if this fixes spm --- .travis.yml | 2 +- Package.swift | 5 ++++- Source/Starscream | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index a85dc68..46c3a79 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,4 +14,4 @@ script: - xcodebuild -project Socket.IO-Client-Swift.xcodeproj -scheme SocketIO-Mac build test -quiet # - xcodebuild -project Socket.IO-Client-Swift.xcodeproj -scheme SocketIO-Mac build-for-testing -quiet # - xctool -project Socket.IO-Client-Swift.xcodeproj -scheme SocketIO-Mac run-tests --parallelize -# - swift build + - swift build diff --git a/Package.swift b/Package.swift index 0d547f8..84325d1 100644 --- a/Package.swift +++ b/Package.swift @@ -4,10 +4,13 @@ import PackageDescription let package = Package( name: "SocketIO", + products: [ + .library(name: "SocketIO", targets: ["SocketIO"]) + ], dependencies: [ .package(url: "https://github.com/nuclearace/Starscream", from: "8.0.0"), ], targets: [ - .target(name: "SocketIO", exclude: ["Sources/Starscream"]) + .target(name: "SocketIO", dependencies: ["StarscreamSocketIO"], exclude: ["Sources/Starscream"]) ] ) diff --git a/Source/Starscream b/Source/Starscream index 3f5f50a..9ecc44c 160000 --- a/Source/Starscream +++ b/Source/Starscream @@ -1 +1 @@ -Subproject commit 3f5f50ad159a27fb43cb90b5286c3b2148c2b51e +Subproject commit 9ecc44c2da053b1c4ff0ac505fe1d43a793d0b45 From 62d59d7762b11aec87c38081389e2a885f4813ae Mon Sep 17 00:00:00 2001 From: Erik Little Date: Tue, 19 Sep 2017 21:56:42 -0400 Subject: [PATCH 17/18] use .upToNextMajor --- Package.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Package.swift b/Package.swift index 84325d1..7ba98b3 100644 --- a/Package.swift +++ b/Package.swift @@ -8,7 +8,7 @@ let package = Package( .library(name: "SocketIO", targets: ["SocketIO"]) ], dependencies: [ - .package(url: "https://github.com/nuclearace/Starscream", from: "8.0.0"), + .package(url: "https://github.com/nuclearace/Starscream", from: .upToNextMajor(from: "8.0.0")), ], targets: [ .target(name: "SocketIO", dependencies: ["StarscreamSocketIO"], exclude: ["Sources/Starscream"]) From 9be3184f2a39f0f48703b9dab680e328e9a14bc8 Mon Sep 17 00:00:00 2001 From: Erik Little Date: Wed, 20 Sep 2017 07:04:45 -0400 Subject: [PATCH 18/18] Fix manifest --- Package.swift | 2 +- Source/Starscream | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Package.swift b/Package.swift index 7ba98b3..a782647 100644 --- a/Package.swift +++ b/Package.swift @@ -8,7 +8,7 @@ let package = Package( .library(name: "SocketIO", targets: ["SocketIO"]) ], dependencies: [ - .package(url: "https://github.com/nuclearace/Starscream", from: .upToNextMajor(from: "8.0.0")), + .package(url: "https://github.com/nuclearace/Starscream", .upToNextMajor(from: "8.0.0")), ], targets: [ .target(name: "SocketIO", dependencies: ["StarscreamSocketIO"], exclude: ["Sources/Starscream"]) diff --git a/Source/Starscream b/Source/Starscream index 9ecc44c..f7e28f2 160000 --- a/Source/Starscream +++ b/Source/Starscream @@ -1 +1 @@ -Subproject commit 9ecc44c2da053b1c4ff0ac505fe1d43a793d0b45 +Subproject commit f7e28f24ae20898da5804079319da52682bb9212