├── Icon.png ├── Assets.sketch ├── screenshot.png ├── Xcode mini ├── Assets.xcassets │ ├── Contents.json │ ├── iTunesArtwork@1x.png │ ├── iTunesArtwork@2x.png │ ├── iTunesArtwork@3x.png │ ├── Hammer.imageset │ │ ├── hammer.png │ │ ├── hammer@2x.png │ │ ├── hammer@3x.png │ │ └── Contents.json │ └── AppIcon.appiconset │ │ ├── Icon-App-20x20@1x.png │ │ ├── Icon-App-20x20@2x.png │ │ ├── Icon-App-20x20@3x.png │ │ ├── Icon-App-29x29@1x.png │ │ ├── Icon-App-29x29@2x.png │ │ ├── Icon-App-29x29@3x.png │ │ ├── Icon-App-40x40@1x.png │ │ ├── Icon-App-40x40@2x.png │ │ ├── Icon-App-40x40@3x.png │ │ ├── Icon-App-57x57@1x.png │ │ ├── Icon-App-57x57@2x.png │ │ ├── Icon-App-60x60@2x.png │ │ ├── Icon-App-60x60@3x.png │ │ ├── Icon-App-72x72@1x.png │ │ ├── Icon-App-72x72@2x.png │ │ ├── Icon-App-76x76@1x.png │ │ ├── Icon-App-76x76@2x.png │ │ ├── ItunesArtwork@2x.png │ │ ├── Icon-Small-50x50@1x.png │ │ ├── Icon-Small-50x50@2x.png │ │ ├── Icon-App-83.5x83.5@2x.png │ │ └── Contents.json ├── Core │ ├── Models │ │ ├── Result │ │ │ ├── Result.swift │ │ │ ├── Output.swift │ │ │ ├── AnnotationLocation.swift │ │ │ ├── Annotation.swift │ │ │ └── AnnotationType.swift │ │ └── Compilation │ │ │ ├── Compilation.swift │ │ │ ├── Run.swift │ │ │ └── SwiftToolchain.swift │ └── Extensions.swift ├── WebSockets │ ├── WebSocketManagerDelegate.swift │ └── WebSocketManager.swift ├── AppDelegate.swift ├── Info.plist ├── ViewController.swift └── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard ├── README.md ├── Podfile.lock ├── Podfile ├── .gitignore └── Xcode mini.xcodeproj └── project.pbxproj /Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Icon.png -------------------------------------------------------------------------------- /Assets.sketch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Assets.sketch -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/screenshot.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/iTunesArtwork@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/iTunesArtwork@1x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/iTunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/iTunesArtwork@2x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/iTunesArtwork@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/iTunesArtwork@3x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/Hammer.imageset/hammer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/Hammer.imageset/hammer.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/Hammer.imageset/hammer@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/Hammer.imageset/hammer@2x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/Hammer.imageset/hammer@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/Hammer.imageset/hammer@3x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Xcode mini 2 | 3 | Edit and compile Swift on your iOS device 4 | 5 | ![Xcode mini](screenshot.png) 6 | 7 | 8 | P.S. All this is only experiment and I have no connection to Apple -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-Small-50x50@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-Small-50x50@1x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-Small-50x50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-Small-50x50@2x.png -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fassko/xcode-mini/HEAD/Xcode mini/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /Xcode mini/Core/Models/Result/Result.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Result.swift 3 | // 4 | // 5 | // Created by Kristaps Grinbergs on 21/11/2018. 6 | // 7 | 8 | import Foundation 9 | 10 | struct Result: Codable { 11 | let output: Output 12 | } 13 | -------------------------------------------------------------------------------- /Xcode mini/Core/Models/Compilation/Compilation.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Compilation.swift 3 | // Native Swift Editor 4 | // 5 | // Created by Kristaps Grinbergs on 21/11/2018. 6 | // Copyright © 2018 fassko. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct Compilation: Codable { 12 | let run: Run 13 | } 14 | -------------------------------------------------------------------------------- /Xcode mini/Core/Models/Compilation/Run.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Run.swift 3 | // Xcode mini 4 | // 5 | // Created by Kristaps Grinbergs on 15/04/2020. 6 | // Copyright © 2020 fassko. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct Run: Codable { 12 | let toolchain: SwiftToolchain 13 | let value: String 14 | } 15 | -------------------------------------------------------------------------------- /Xcode mini/Core/Models/Result/Output.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Output.swift 3 | // Xcode mini 4 | // 5 | // Created by Kristaps Grinbergs on 15/04/2020. 6 | // Copyright © 2020 fassko. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct Output: Codable { 12 | let value: String 13 | let annotations: [Annotation] 14 | } 15 | -------------------------------------------------------------------------------- /Xcode mini/Core/Models/Result/AnnotationLocation.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnnotationLocation.swift 3 | // Xcode mini 4 | // 5 | // Created by Kristaps Grinbergs on 15/04/2020. 6 | // Copyright © 2020 fassko. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct AnnotationLocation: Codable { 12 | let row: Int 13 | let column: Int 14 | } 15 | -------------------------------------------------------------------------------- /Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Starscream (3.0.6) 3 | 4 | DEPENDENCIES: 5 | - Starscream 6 | 7 | SPEC REPOS: 8 | https://github.com/CocoaPods/Specs.git: 9 | - Starscream 10 | 11 | SPEC CHECKSUMS: 12 | Starscream: ef3ece99d765eeccb67de105bfa143f929026cf5 13 | 14 | PODFILE CHECKSUM: 6abe5b3bdb679a256e02211f3287fd1b1b49bad2 15 | 16 | COCOAPODS: 1.9.1 17 | -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | platform :ios, '12.0' 2 | 3 | target 'Xcode mini' do 4 | use_frameworks! 5 | 6 | pod 'Starscream' 7 | 8 | post_install do |installer| 9 | installer.pods_project.build_configurations.each do |config| 10 | config.build_settings.delete('CODE_SIGNING_ALLOWED') 11 | config.build_settings.delete('CODE_SIGNING_REQUIRED') 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /Xcode mini/Core/Models/Result/Annotation.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Annotation.swift 3 | // Xcode mini 4 | // 5 | // Created by Kristaps Grinbergs on 15/04/2020. 6 | // Copyright © 2020 fassko. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct Annotation: Codable { 12 | let type: AnnotationType 13 | let location: AnnotationLocation 14 | let description: String 15 | } 16 | -------------------------------------------------------------------------------- /Xcode mini/Core/Models/Result/AnnotationType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnnotationType.swift 3 | // Xcode mini 4 | // 5 | // Created by Kristaps Grinbergs on 15/04/2020. 6 | // Copyright © 2020 fassko. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | enum AnnotationType: String, Codable { 12 | case error = "error" 13 | case warning = "warning" 14 | case notice = "notice" 15 | } 16 | -------------------------------------------------------------------------------- /Xcode mini/WebSockets/WebSocketManagerDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WebSocketManagerDelegate.swift 3 | // Xcode mini 4 | // 5 | // Created by Kristaps Grinbergs on 15/04/2020. 6 | // Copyright © 2020 fassko. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | protocol WebSocketManagerDelegate { 12 | func didConnect() 13 | func didReceive(text: String, annotations: [Annotation]) 14 | } 15 | -------------------------------------------------------------------------------- /Xcode mini/Core/Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Extensions.swift 3 | // Native Swift Editor 4 | // 5 | // Created by Kristaps Grinbergs on 22/11/2018. 6 | // Copyright © 2018 fassko. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | extension UIAlertController { 13 | func addActions(_ actions: [UIAlertAction]) { 14 | actions.forEach { 15 | addAction($0) 16 | } 17 | } 18 | } 19 | 20 | extension UITextView { 21 | func clear() { 22 | text = "" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/Hammer.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "hammer.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "hammer@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "hammer@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Xcode mini/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // Native Swift Editor 4 | // 5 | // Created by Kristaps Grinbergs on 21/11/2018. 6 | // Copyright © 2018 fassko. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | var window: UIWindow? 14 | 15 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 16 | return true 17 | } 18 | } 19 | 20 | -------------------------------------------------------------------------------- /Xcode mini/Core/Models/Compilation/SwiftToolchain.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SwiftToolchain.swift 3 | // Xcode mini 4 | // 5 | // Created by Kristaps Grinbergs on 15/04/2020. 6 | // Copyright © 2020 fassko. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | enum SwiftToolchain: String, RawRepresentable, Codable, CustomStringConvertible, CaseIterable { 12 | case swift5_1 = "5.1-RELEASE" 13 | 14 | var value: String { 15 | return rawValue 16 | } 17 | 18 | var description: String { 19 | let dashIndex = value.firstIndex(of: "-") ?? value.endIndex 20 | return String(value[.. 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleDisplayName 8 | Xcode mini 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | NSAppTransportSecurity 30 | 31 | NSAllowsArbitraryLoads 32 | 33 | 34 | UIRequiredDeviceCapabilities 35 | 36 | armv7 37 | 38 | UISupportedInterfaceOrientations 39 | 40 | UIInterfaceOrientationPortrait 41 | 42 | UISupportedInterfaceOrientations~ipad 43 | 44 | UIInterfaceOrientationPortrait 45 | UIInterfaceOrientationPortraitUpsideDown 46 | UIInterfaceOrientationLandscapeLeft 47 | UIInterfaceOrientationLandscapeRight 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /Xcode mini/WebSockets/WebSocketManager.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WebSocketManager.swift 3 | // Xcode mini 4 | // 5 | // Created by Kristaps Grinbergs on 15/04/2020. 6 | // Copyright © 2020 fassko. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class WebSocketManager: NSObject, URLSessionWebSocketDelegate { 12 | private var webSocketTask: URLSessionWebSocketTask? 13 | private let delegate: WebSocketManagerDelegate? 14 | 15 | init(delegate: WebSocketManagerDelegate) { 16 | self.delegate = delegate 17 | } 18 | 19 | func connect() { 20 | let webSocketQueue = OperationQueue() 21 | let session = URLSession(configuration: .default, delegate: self, delegateQueue: webSocketQueue) 22 | 23 | webSocketTask = session.webSocketTask(with: URL(string: "ws://online.swiftplayground.run/terminal")!) 24 | webSocketTask?.resume() 25 | } 26 | 27 | func send(text: String, _ completion: ((Error?) -> Void)? = nil) { 28 | webSocketTask?.send(.string(text)) { error in 29 | if let error = error { 30 | completion?(error) 31 | } else { 32 | completion?(nil) 33 | } 34 | } 35 | } 36 | 37 | func receiveMessage() { 38 | webSocketTask?.receive { [weak self] result in 39 | switch result { 40 | case .success(let message): 41 | switch message { 42 | case .string(let text): 43 | do { 44 | guard let data = text.data(using: .utf8) else { return } 45 | let result = try JSONDecoder().decode(Result.self, from: data) 46 | 47 | DispatchQueue.main.async { 48 | self?.delegate?.didReceive(text: result.output.value, annotations: result.output.annotations) 49 | } 50 | } catch { 51 | print(error) 52 | } 53 | case .data(let data): 54 | print("Received data: \(data)") 55 | @unknown default: 56 | fatalError("Unknown case") 57 | } 58 | case .failure(let error): 59 | print("Error in receiving message: \(error)") 60 | } 61 | 62 | self?.receiveMessage() 63 | } 64 | } 65 | 66 | func urlSession(_ session: URLSession, webSocketTask: URLSessionWebSocketTask, didOpenWithProtocol protocol: String?) { 67 | receiveMessage() 68 | 69 | DispatchQueue.main.async { [weak self] in 70 | self?.delegate?.didConnect() 71 | } 72 | } 73 | 74 | func urlSession(_ session: URLSession, webSocketTask: URLSessionWebSocketTask, didCloseWith closeCode: URLSessionWebSocketTask.CloseCode, reason: Data?) { 75 | print("WebSocket closed") 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /Xcode mini/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // Native Swift Editor 4 | // 5 | // Created by Kristaps Grinbergs on 21/11/2018. 6 | // Copyright © 2018 fassko. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | import Sourceful 12 | 13 | class ViewController: UIViewController { 14 | 15 | @IBOutlet weak var syntaxTextView: SyntaxTextView! 16 | @IBOutlet weak var resultTextView: TextView! 17 | @IBOutlet weak var compileIcon: UIBarButtonItem! 18 | @IBOutlet weak var swiftVersionButton: UIBarButtonItem! 19 | 20 | private var webSocketManager: WebSocketManager? 21 | 22 | private var swiftVersion: SwiftToolchain! = SwiftToolchain.latestVersion { 23 | didSet { 24 | swiftVersionButton.title = "Swift \(String(describing: swiftVersion.description))" 25 | } 26 | } 27 | 28 | override func viewDidLoad() { 29 | super.viewDidLoad() 30 | 31 | webSocketManager = WebSocketManager(delegate: self) 32 | webSocketManager?.connect() 33 | 34 | syntaxTextView.theme = DefaultSourceCodeTheme() 35 | syntaxTextView.delegate = self 36 | } 37 | } 38 | 39 | extension ViewController: WebSocketManagerDelegate { 40 | func didConnect() { 41 | compileIcon.isEnabled = true 42 | } 43 | 44 | func didReceive(text: String, annotations: [Annotation]) { 45 | resultTextView.text = text 46 | resultTextView.textColor = annotations.isEmpty ? .white : .red 47 | syntaxTextView.contentTextView.resignFirstResponder() 48 | } 49 | } 50 | 51 | extension ViewController { 52 | @IBAction func compile(_ sender: Any) { 53 | resultTextView.clear() 54 | 55 | let run = Run(toolchain: swiftVersion, value: syntaxTextView.text) 56 | let compilation = Compilation(run: run) 57 | 58 | do { 59 | let jsonData = try JSONEncoder().encode(compilation) 60 | guard let jsonString = String(data: jsonData, encoding: .utf8) else { 61 | return 62 | } 63 | webSocketManager?.send(text: jsonString) 64 | } catch { 65 | print("Can't encode") 66 | } 67 | } 68 | 69 | @IBAction func changeSwiftVersion(_ sender: UIBarButtonItem) { 70 | let swiftVersionAlert = UIAlertController(title: nil, 71 | message: "Choose Swift toolchain version", 72 | preferredStyle: .actionSheet) 73 | 74 | let alertActions = SwiftToolchain.allCases.map { version in 75 | UIAlertAction(title: version.description, style: .default) { [weak self] _ in 76 | self?.swiftVersion = version 77 | } 78 | } 79 | swiftVersionAlert.addActions(alertActions) 80 | 81 | present(swiftVersionAlert, animated: true, completion: nil) 82 | } 83 | } 84 | 85 | extension ViewController: SyntaxTextViewDelegate { 86 | func lexerForSource(_ source: String) -> Lexer { 87 | SwiftLexer() 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /Xcode mini/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /Xcode mini/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "57x57", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-57x57@1x.png", 49 | "scale" : "1x" 50 | }, 51 | { 52 | "size" : "57x57", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-57x57@2x.png", 55 | "scale" : "2x" 56 | }, 57 | { 58 | "size" : "60x60", 59 | "idiom" : "iphone", 60 | "filename" : "Icon-App-60x60@2x.png", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "size" : "60x60", 65 | "idiom" : "iphone", 66 | "filename" : "Icon-App-60x60@3x.png", 67 | "scale" : "3x" 68 | }, 69 | { 70 | "size" : "20x20", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-20x20@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "20x20", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-20x20@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "29x29", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-29x29@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "29x29", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-29x29@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "40x40", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-40x40@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "40x40", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-40x40@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "50x50", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-Small-50x50@1x.png", 109 | "scale" : "1x" 110 | }, 111 | { 112 | "size" : "50x50", 113 | "idiom" : "ipad", 114 | "filename" : "Icon-Small-50x50@2x.png", 115 | "scale" : "2x" 116 | }, 117 | { 118 | "size" : "72x72", 119 | "idiom" : "ipad", 120 | "filename" : "Icon-App-72x72@1x.png", 121 | "scale" : "1x" 122 | }, 123 | { 124 | "size" : "72x72", 125 | "idiom" : "ipad", 126 | "filename" : "Icon-App-72x72@2x.png", 127 | "scale" : "2x" 128 | }, 129 | { 130 | "size" : "76x76", 131 | "idiom" : "ipad", 132 | "filename" : "Icon-App-76x76@1x.png", 133 | "scale" : "1x" 134 | }, 135 | { 136 | "size" : "76x76", 137 | "idiom" : "ipad", 138 | "filename" : "Icon-App-76x76@2x.png", 139 | "scale" : "2x" 140 | }, 141 | { 142 | "size" : "83.5x83.5", 143 | "idiom" : "ipad", 144 | "filename" : "Icon-App-83.5x83.5@2x.png", 145 | "scale" : "2x" 146 | }, 147 | { 148 | "size" : "1024x1024", 149 | "idiom" : "ios-marketing", 150 | "filename" : "ItunesArtwork@2x.png", 151 | "scale" : "1x" 152 | } 153 | ], 154 | "info" : { 155 | "version" : 1, 156 | "author" : "xcode" 157 | } 158 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.gitignore.io/api/swift,xcode,cocoapods 3 | # Edit at https://www.gitignore.io/?templates=swift,xcode,cocoapods 4 | 5 | ### CocoaPods ### 6 | ## CocoaPods GitIgnore Template 7 | 8 | # CocoaPods - Only use to conserve bandwidth / Save time on Pushing 9 | # - Also handy if you have a large number of dependant pods 10 | # - AS PER https://guides.cocoapods.org/using/using-cocoapods.html NEVER IGNORE THE LOCK FILE 11 | Pods/ 12 | 13 | ### Swift ### 14 | # Xcode 15 | # 16 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 17 | 18 | ## Build generated 19 | build/ 20 | DerivedData/ 21 | 22 | ## Various settings 23 | *.pbxuser 24 | !default.pbxuser 25 | *.mode1v3 26 | !default.mode1v3 27 | *.mode2v3 28 | !default.mode2v3 29 | *.perspectivev3 30 | !default.perspectivev3 31 | xcuserdata/ 32 | 33 | ## Other 34 | *.moved-aside 35 | *.xccheckout 36 | *.xcscmblueprint 37 | 38 | ## Obj-C/Swift specific 39 | *.hmap 40 | *.ipa 41 | *.dSYM.zip 42 | *.dSYM 43 | 44 | ## Playgrounds 45 | timeline.xctimeline 46 | playground.xcworkspace 47 | 48 | # Swift Package Manager 49 | # 50 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. 51 | # Packages/ 52 | # Package.pins 53 | # Package.resolved 54 | .build/ 55 | 56 | # CocoaPods 57 | # 58 | # We recommend against adding the Pods directory to your .gitignore. However 59 | # you should judge for yourself, the pros and cons are mentioned at: 60 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 61 | # 62 | # Pods/ 63 | # 64 | # Add this line if you want to avoid checking in source code from the Xcode workspace 65 | # *.xcworkspace 66 | 67 | # Carthage 68 | # 69 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 70 | # Carthage/Checkouts 71 | 72 | Carthage/Build 73 | 74 | # fastlane 75 | # 76 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 77 | # screenshots whenever they are needed. 78 | # For more information about the recommended setup visit: 79 | # https://docs.fastlane.tools/best-practices/source-control/#source-control 80 | 81 | fastlane/report.xml 82 | fastlane/Preview.html 83 | fastlane/screenshots/**/*.png 84 | fastlane/test_output 85 | 86 | # Code Injection 87 | # 88 | # After new code Injection tools there's a generated folder /iOSInjectionProject 89 | # https://github.com/johnno1962/injectionforxcode 90 | 91 | iOSInjectionProject/ 92 | 93 | ### Xcode ### 94 | # Xcode 95 | # 96 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 97 | 98 | ## Build generated 99 | 100 | ## Various settings 101 | 102 | ## Other 103 | 104 | ## Obj-C/Swift specific 105 | 106 | ## Playgrounds 107 | 108 | # Swift Package Manager 109 | # 110 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. 111 | # Packages/ 112 | # Package.pins 113 | # Package.resolved 114 | 115 | # CocoaPods 116 | # 117 | # We recommend against adding the Pods directory to your .gitignore. However 118 | # you should judge for yourself, the pros and cons are mentioned at: 119 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 120 | # 121 | # Pods/ 122 | # 123 | # Add this line if you want to avoid checking in source code from the Xcode workspace 124 | # *.xcworkspace 125 | 126 | # Carthage 127 | # 128 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 129 | # Carthage/Checkouts 130 | 131 | 132 | # fastlane 133 | # 134 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 135 | # screenshots whenever they are needed. 136 | # For more information about the recommended setup visit: 137 | # https://docs.fastlane.tools/best-practices/source-control/#source-control 138 | 139 | 140 | # Code Injection 141 | # 142 | # After new code Injection tools there's a generated folder /iOSInjectionProject 143 | # https://github.com/johnno1962/injectionforxcode 144 | 145 | 146 | 147 | ### Xcode Patch ### 148 | *.xcodeproj/* 149 | !*.xcodeproj/project.pbxproj 150 | !*.xcodeproj/xcshareddata/ 151 | !*.xcworkspace/contents.xcworkspacedata 152 | /*.gcno 153 | **/xcshareddata/WorkspaceSettings.xcsettings 154 | 155 | # End of https://www.gitignore.io/api/swift,xcode,cocoapods 156 | -------------------------------------------------------------------------------- /Xcode mini/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | import Foundation 24 | print("test") 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /Xcode mini.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 52; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 63026F702445D8F70096F852 /* Sourceful in Frameworks */ = {isa = PBXBuildFile; productRef = 63026F6F2445D8F70096F852 /* Sourceful */; }; 11 | 6378A9262447056700438A17 /* Output.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6378A9252447056700438A17 /* Output.swift */; }; 12 | 6378A9282447057500438A17 /* AnnotationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6378A9272447057500438A17 /* AnnotationType.swift */; }; 13 | 6378A92A2447058300438A17 /* AnnotationLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6378A9292447058300438A17 /* AnnotationLocation.swift */; }; 14 | 6378A92C2447059900438A17 /* Annotation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6378A92B2447059900438A17 /* Annotation.swift */; }; 15 | 6378A931244705E000438A17 /* SwiftToolchain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6378A930244705E000438A17 /* SwiftToolchain.swift */; }; 16 | 6378A933244705EC00438A17 /* Run.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6378A932244705EC00438A17 /* Run.swift */; }; 17 | 6378A9352447188E00438A17 /* WebSocketManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6378A9342447188E00438A17 /* WebSocketManager.swift */; }; 18 | 6378A938244718A400438A17 /* WebSocketManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6378A937244718A400438A17 /* WebSocketManagerDelegate.swift */; }; 19 | 638D30FB21A75B3E00031B54 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638D30F021A75B3E00031B54 /* ViewController.swift */; }; 20 | 638D30FC21A75B3E00031B54 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638D30F121A75B3E00031B54 /* Result.swift */; }; 21 | 638D30FD21A75B3E00031B54 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 638D30F221A75B3E00031B54 /* Assets.xcassets */; }; 22 | 638D310021A75B3E00031B54 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638D30F721A75B3E00031B54 /* Extensions.swift */; }; 23 | 638D310121A75B3E00031B54 /* Compilation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638D30F821A75B3E00031B54 /* Compilation.swift */; }; 24 | 638D310221A75B3E00031B54 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638D30F921A75B3E00031B54 /* AppDelegate.swift */; }; 25 | 638D310421A75CF400031B54 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 638D30F321A75B3E00031B54 /* LaunchScreen.storyboard */; }; 26 | 638D310521A75CF400031B54 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 638D30F521A75B3E00031B54 /* Main.storyboard */; }; 27 | /* End PBXBuildFile section */ 28 | 29 | /* Begin PBXFileReference section */ 30 | 6378A9252447056700438A17 /* Output.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Output.swift; sourceTree = ""; }; 31 | 6378A9272447057500438A17 /* AnnotationType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnotationType.swift; sourceTree = ""; }; 32 | 6378A9292447058300438A17 /* AnnotationLocation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnotationLocation.swift; sourceTree = ""; }; 33 | 6378A92B2447059900438A17 /* Annotation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Annotation.swift; sourceTree = ""; }; 34 | 6378A930244705E000438A17 /* SwiftToolchain.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftToolchain.swift; sourceTree = ""; }; 35 | 6378A932244705EC00438A17 /* Run.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Run.swift; sourceTree = ""; }; 36 | 6378A9342447188E00438A17 /* WebSocketManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSocketManager.swift; sourceTree = ""; }; 37 | 6378A937244718A400438A17 /* WebSocketManagerDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSocketManagerDelegate.swift; sourceTree = ""; }; 38 | 63890ED121A5C3E0004DF8A2 /* Xcode mini.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Xcode mini.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 39 | 638D30F021A75B3E00031B54 /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 40 | 638D30F121A75B3E00031B54 /* Result.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Result.swift; sourceTree = ""; }; 41 | 638D30F221A75B3E00031B54 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 42 | 638D30F421A75B3E00031B54 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 43 | 638D30F621A75B3E00031B54 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 44 | 638D30F721A75B3E00031B54 /* Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; 45 | 638D30F821A75B3E00031B54 /* Compilation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Compilation.swift; sourceTree = ""; }; 46 | 638D30F921A75B3E00031B54 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 47 | 638D30FA21A75B3E00031B54 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 48 | /* End PBXFileReference section */ 49 | 50 | /* Begin PBXFrameworksBuildPhase section */ 51 | 63890ECE21A5C3E0004DF8A2 /* Frameworks */ = { 52 | isa = PBXFrameworksBuildPhase; 53 | buildActionMask = 2147483647; 54 | files = ( 55 | 63026F702445D8F70096F852 /* Sourceful in Frameworks */, 56 | ); 57 | runOnlyForDeploymentPostprocessing = 0; 58 | }; 59 | /* End PBXFrameworksBuildPhase section */ 60 | 61 | /* Begin PBXGroup section */ 62 | 6378A9242447055900438A17 /* Models */ = { 63 | isa = PBXGroup; 64 | children = ( 65 | 6378A92F244705D600438A17 /* Compilation */, 66 | 6378A92E244705CF00438A17 /* Result */, 67 | ); 68 | path = Models; 69 | sourceTree = ""; 70 | }; 71 | 6378A92D244705A900438A17 /* Core */ = { 72 | isa = PBXGroup; 73 | children = ( 74 | 638D30F721A75B3E00031B54 /* Extensions.swift */, 75 | 6378A9242447055900438A17 /* Models */, 76 | ); 77 | path = Core; 78 | sourceTree = ""; 79 | }; 80 | 6378A92E244705CF00438A17 /* Result */ = { 81 | isa = PBXGroup; 82 | children = ( 83 | 638D30F121A75B3E00031B54 /* Result.swift */, 84 | 6378A9252447056700438A17 /* Output.swift */, 85 | 6378A9272447057500438A17 /* AnnotationType.swift */, 86 | 6378A9292447058300438A17 /* AnnotationLocation.swift */, 87 | 6378A92B2447059900438A17 /* Annotation.swift */, 88 | ); 89 | path = Result; 90 | sourceTree = ""; 91 | }; 92 | 6378A92F244705D600438A17 /* Compilation */ = { 93 | isa = PBXGroup; 94 | children = ( 95 | 638D30F821A75B3E00031B54 /* Compilation.swift */, 96 | 6378A930244705E000438A17 /* SwiftToolchain.swift */, 97 | 6378A932244705EC00438A17 /* Run.swift */, 98 | ); 99 | path = Compilation; 100 | sourceTree = ""; 101 | }; 102 | 6378A939244718AF00438A17 /* WebSockets */ = { 103 | isa = PBXGroup; 104 | children = ( 105 | 6378A937244718A400438A17 /* WebSocketManagerDelegate.swift */, 106 | 6378A9342447188E00438A17 /* WebSocketManager.swift */, 107 | ); 108 | path = WebSockets; 109 | sourceTree = ""; 110 | }; 111 | 63890EC821A5C3E0004DF8A2 = { 112 | isa = PBXGroup; 113 | children = ( 114 | 638D30EF21A75B3E00031B54 /* Xcode mini */, 115 | 63890ED221A5C3E0004DF8A2 /* Products */, 116 | CCD621A5BA9D9A70DCA9464B /* Pods */, 117 | ); 118 | sourceTree = ""; 119 | }; 120 | 63890ED221A5C3E0004DF8A2 /* Products */ = { 121 | isa = PBXGroup; 122 | children = ( 123 | 63890ED121A5C3E0004DF8A2 /* Xcode mini.app */, 124 | ); 125 | name = Products; 126 | sourceTree = ""; 127 | }; 128 | 638D30EF21A75B3E00031B54 /* Xcode mini */ = { 129 | isa = PBXGroup; 130 | children = ( 131 | 638D30F921A75B3E00031B54 /* AppDelegate.swift */, 132 | 6378A92D244705A900438A17 /* Core */, 133 | 638D30F021A75B3E00031B54 /* ViewController.swift */, 134 | 6378A939244718AF00438A17 /* WebSockets */, 135 | 638D30F221A75B3E00031B54 /* Assets.xcassets */, 136 | 638D30F321A75B3E00031B54 /* LaunchScreen.storyboard */, 137 | 638D30F521A75B3E00031B54 /* Main.storyboard */, 138 | 638D30FA21A75B3E00031B54 /* Info.plist */, 139 | ); 140 | path = "Xcode mini"; 141 | sourceTree = ""; 142 | }; 143 | CCD621A5BA9D9A70DCA9464B /* Pods */ = { 144 | isa = PBXGroup; 145 | children = ( 146 | ); 147 | path = Pods; 148 | sourceTree = ""; 149 | }; 150 | /* End PBXGroup section */ 151 | 152 | /* Begin PBXNativeTarget section */ 153 | 63890ED021A5C3E0004DF8A2 /* Xcode mini */ = { 154 | isa = PBXNativeTarget; 155 | buildConfigurationList = 63890EE321A5C3E1004DF8A2 /* Build configuration list for PBXNativeTarget "Xcode mini" */; 156 | buildPhases = ( 157 | 63890ECD21A5C3E0004DF8A2 /* Sources */, 158 | 63890ECE21A5C3E0004DF8A2 /* Frameworks */, 159 | 63890ECF21A5C3E0004DF8A2 /* Resources */, 160 | ); 161 | buildRules = ( 162 | ); 163 | dependencies = ( 164 | ); 165 | name = "Xcode mini"; 166 | packageProductDependencies = ( 167 | 63026F6F2445D8F70096F852 /* Sourceful */, 168 | ); 169 | productName = "Xcode mini"; 170 | productReference = 63890ED121A5C3E0004DF8A2 /* Xcode mini.app */; 171 | productType = "com.apple.product-type.application"; 172 | }; 173 | /* End PBXNativeTarget section */ 174 | 175 | /* Begin PBXProject section */ 176 | 63890EC921A5C3E0004DF8A2 /* Project object */ = { 177 | isa = PBXProject; 178 | attributes = { 179 | LastSwiftUpdateCheck = 1010; 180 | LastUpgradeCheck = 1010; 181 | ORGANIZATIONNAME = fassko; 182 | TargetAttributes = { 183 | 63890ED021A5C3E0004DF8A2 = { 184 | CreatedOnToolsVersion = 10.1; 185 | }; 186 | }; 187 | }; 188 | buildConfigurationList = 63890ECC21A5C3E0004DF8A2 /* Build configuration list for PBXProject "Xcode mini" */; 189 | compatibilityVersion = "Xcode 9.3"; 190 | developmentRegion = en; 191 | hasScannedForEncodings = 0; 192 | knownRegions = ( 193 | en, 194 | Base, 195 | ); 196 | mainGroup = 63890EC821A5C3E0004DF8A2; 197 | packageReferences = ( 198 | 63026F6E2445D8F70096F852 /* XCRemoteSwiftPackageReference "Sourceful" */, 199 | ); 200 | productRefGroup = 63890ED221A5C3E0004DF8A2 /* Products */; 201 | projectDirPath = ""; 202 | projectRoot = ""; 203 | targets = ( 204 | 63890ED021A5C3E0004DF8A2 /* Xcode mini */, 205 | ); 206 | }; 207 | /* End PBXProject section */ 208 | 209 | /* Begin PBXResourcesBuildPhase section */ 210 | 63890ECF21A5C3E0004DF8A2 /* Resources */ = { 211 | isa = PBXResourcesBuildPhase; 212 | buildActionMask = 2147483647; 213 | files = ( 214 | 638D310421A75CF400031B54 /* LaunchScreen.storyboard in Resources */, 215 | 638D310521A75CF400031B54 /* Main.storyboard in Resources */, 216 | 638D30FD21A75B3E00031B54 /* Assets.xcassets in Resources */, 217 | ); 218 | runOnlyForDeploymentPostprocessing = 0; 219 | }; 220 | /* End PBXResourcesBuildPhase section */ 221 | 222 | /* Begin PBXSourcesBuildPhase section */ 223 | 63890ECD21A5C3E0004DF8A2 /* Sources */ = { 224 | isa = PBXSourcesBuildPhase; 225 | buildActionMask = 2147483647; 226 | files = ( 227 | 6378A9282447057500438A17 /* AnnotationType.swift in Sources */, 228 | 638D30FC21A75B3E00031B54 /* Result.swift in Sources */, 229 | 638D310021A75B3E00031B54 /* Extensions.swift in Sources */, 230 | 6378A938244718A400438A17 /* WebSocketManagerDelegate.swift in Sources */, 231 | 638D30FB21A75B3E00031B54 /* ViewController.swift in Sources */, 232 | 638D310221A75B3E00031B54 /* AppDelegate.swift in Sources */, 233 | 6378A931244705E000438A17 /* SwiftToolchain.swift in Sources */, 234 | 6378A9262447056700438A17 /* Output.swift in Sources */, 235 | 638D310121A75B3E00031B54 /* Compilation.swift in Sources */, 236 | 6378A92C2447059900438A17 /* Annotation.swift in Sources */, 237 | 6378A933244705EC00438A17 /* Run.swift in Sources */, 238 | 6378A92A2447058300438A17 /* AnnotationLocation.swift in Sources */, 239 | 6378A9352447188E00438A17 /* WebSocketManager.swift in Sources */, 240 | ); 241 | runOnlyForDeploymentPostprocessing = 0; 242 | }; 243 | /* End PBXSourcesBuildPhase section */ 244 | 245 | /* Begin PBXVariantGroup section */ 246 | 638D30F321A75B3E00031B54 /* LaunchScreen.storyboard */ = { 247 | isa = PBXVariantGroup; 248 | children = ( 249 | 638D30F421A75B3E00031B54 /* Base */, 250 | ); 251 | name = LaunchScreen.storyboard; 252 | sourceTree = ""; 253 | }; 254 | 638D30F521A75B3E00031B54 /* Main.storyboard */ = { 255 | isa = PBXVariantGroup; 256 | children = ( 257 | 638D30F621A75B3E00031B54 /* Base */, 258 | ); 259 | name = Main.storyboard; 260 | sourceTree = ""; 261 | }; 262 | /* End PBXVariantGroup section */ 263 | 264 | /* Begin XCBuildConfiguration section */ 265 | 63890EE121A5C3E1004DF8A2 /* Debug */ = { 266 | isa = XCBuildConfiguration; 267 | buildSettings = { 268 | ALWAYS_SEARCH_USER_PATHS = NO; 269 | CLANG_ANALYZER_NONNULL = YES; 270 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 271 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 272 | CLANG_CXX_LIBRARY = "libc++"; 273 | CLANG_ENABLE_MODULES = YES; 274 | CLANG_ENABLE_OBJC_ARC = YES; 275 | CLANG_ENABLE_OBJC_WEAK = YES; 276 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 277 | CLANG_WARN_BOOL_CONVERSION = YES; 278 | CLANG_WARN_COMMA = YES; 279 | CLANG_WARN_CONSTANT_CONVERSION = YES; 280 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 281 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 282 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 283 | CLANG_WARN_EMPTY_BODY = YES; 284 | CLANG_WARN_ENUM_CONVERSION = YES; 285 | CLANG_WARN_INFINITE_RECURSION = YES; 286 | CLANG_WARN_INT_CONVERSION = YES; 287 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 288 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 289 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 290 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 291 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 292 | CLANG_WARN_STRICT_PROTOTYPES = YES; 293 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 294 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 295 | CLANG_WARN_UNREACHABLE_CODE = YES; 296 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 297 | CODE_SIGN_IDENTITY = "iPhone Developer"; 298 | COPY_PHASE_STRIP = NO; 299 | DEBUG_INFORMATION_FORMAT = dwarf; 300 | ENABLE_STRICT_OBJC_MSGSEND = YES; 301 | ENABLE_TESTABILITY = YES; 302 | GCC_C_LANGUAGE_STANDARD = gnu11; 303 | GCC_DYNAMIC_NO_PIC = NO; 304 | GCC_NO_COMMON_BLOCKS = YES; 305 | GCC_OPTIMIZATION_LEVEL = 0; 306 | GCC_PREPROCESSOR_DEFINITIONS = ( 307 | "DEBUG=1", 308 | "$(inherited)", 309 | ); 310 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 311 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 312 | GCC_WARN_UNDECLARED_SELECTOR = YES; 313 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 314 | GCC_WARN_UNUSED_FUNCTION = YES; 315 | GCC_WARN_UNUSED_VARIABLE = YES; 316 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 317 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 318 | MTL_FAST_MATH = YES; 319 | ONLY_ACTIVE_ARCH = YES; 320 | SDKROOT = iphoneos; 321 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 322 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 323 | SWIFT_VERSION = 5.0; 324 | }; 325 | name = Debug; 326 | }; 327 | 63890EE221A5C3E1004DF8A2 /* Release */ = { 328 | isa = XCBuildConfiguration; 329 | buildSettings = { 330 | ALWAYS_SEARCH_USER_PATHS = NO; 331 | CLANG_ANALYZER_NONNULL = YES; 332 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 333 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 334 | CLANG_CXX_LIBRARY = "libc++"; 335 | CLANG_ENABLE_MODULES = YES; 336 | CLANG_ENABLE_OBJC_ARC = YES; 337 | CLANG_ENABLE_OBJC_WEAK = YES; 338 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 339 | CLANG_WARN_BOOL_CONVERSION = YES; 340 | CLANG_WARN_COMMA = YES; 341 | CLANG_WARN_CONSTANT_CONVERSION = YES; 342 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 343 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 344 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 345 | CLANG_WARN_EMPTY_BODY = YES; 346 | CLANG_WARN_ENUM_CONVERSION = YES; 347 | CLANG_WARN_INFINITE_RECURSION = YES; 348 | CLANG_WARN_INT_CONVERSION = YES; 349 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 350 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 351 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 352 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 353 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 354 | CLANG_WARN_STRICT_PROTOTYPES = YES; 355 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 356 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 357 | CLANG_WARN_UNREACHABLE_CODE = YES; 358 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 359 | CODE_SIGN_IDENTITY = "iPhone Developer"; 360 | COPY_PHASE_STRIP = NO; 361 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 362 | ENABLE_NS_ASSERTIONS = NO; 363 | ENABLE_STRICT_OBJC_MSGSEND = YES; 364 | GCC_C_LANGUAGE_STANDARD = gnu11; 365 | GCC_NO_COMMON_BLOCKS = YES; 366 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 367 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 368 | GCC_WARN_UNDECLARED_SELECTOR = YES; 369 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 370 | GCC_WARN_UNUSED_FUNCTION = YES; 371 | GCC_WARN_UNUSED_VARIABLE = YES; 372 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 373 | MTL_ENABLE_DEBUG_INFO = NO; 374 | MTL_FAST_MATH = YES; 375 | SDKROOT = iphoneos; 376 | SWIFT_COMPILATION_MODE = wholemodule; 377 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 378 | SWIFT_VERSION = 5.0; 379 | VALIDATE_PRODUCT = YES; 380 | }; 381 | name = Release; 382 | }; 383 | 63890EE421A5C3E1004DF8A2 /* Debug */ = { 384 | isa = XCBuildConfiguration; 385 | buildSettings = { 386 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 387 | CODE_SIGN_STYLE = Automatic; 388 | DEVELOPMENT_TEAM = 3SGNZQGS68; 389 | INFOPLIST_FILE = "$(SRCROOT)/Xcode mini/Info.plist"; 390 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 391 | LD_RUNPATH_SEARCH_PATHS = ( 392 | "$(inherited)", 393 | "@executable_path/Frameworks", 394 | ); 395 | PRODUCT_BUNDLE_IDENTIFIER = "com.fassko.Xcode-mini"; 396 | PRODUCT_NAME = "$(TARGET_NAME)"; 397 | SWIFT_VERSION = 5.0; 398 | TARGETED_DEVICE_FAMILY = "1,2"; 399 | }; 400 | name = Debug; 401 | }; 402 | 63890EE521A5C3E1004DF8A2 /* Release */ = { 403 | isa = XCBuildConfiguration; 404 | buildSettings = { 405 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 406 | CODE_SIGN_STYLE = Automatic; 407 | DEVELOPMENT_TEAM = 3SGNZQGS68; 408 | INFOPLIST_FILE = "$(SRCROOT)/Xcode mini/Info.plist"; 409 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 410 | LD_RUNPATH_SEARCH_PATHS = ( 411 | "$(inherited)", 412 | "@executable_path/Frameworks", 413 | ); 414 | PRODUCT_BUNDLE_IDENTIFIER = "com.fassko.Xcode-mini"; 415 | PRODUCT_NAME = "$(TARGET_NAME)"; 416 | SWIFT_VERSION = 5.0; 417 | TARGETED_DEVICE_FAMILY = "1,2"; 418 | }; 419 | name = Release; 420 | }; 421 | /* End XCBuildConfiguration section */ 422 | 423 | /* Begin XCConfigurationList section */ 424 | 63890ECC21A5C3E0004DF8A2 /* Build configuration list for PBXProject "Xcode mini" */ = { 425 | isa = XCConfigurationList; 426 | buildConfigurations = ( 427 | 63890EE121A5C3E1004DF8A2 /* Debug */, 428 | 63890EE221A5C3E1004DF8A2 /* Release */, 429 | ); 430 | defaultConfigurationIsVisible = 0; 431 | defaultConfigurationName = Release; 432 | }; 433 | 63890EE321A5C3E1004DF8A2 /* Build configuration list for PBXNativeTarget "Xcode mini" */ = { 434 | isa = XCConfigurationList; 435 | buildConfigurations = ( 436 | 63890EE421A5C3E1004DF8A2 /* Debug */, 437 | 63890EE521A5C3E1004DF8A2 /* Release */, 438 | ); 439 | defaultConfigurationIsVisible = 0; 440 | defaultConfigurationName = Release; 441 | }; 442 | /* End XCConfigurationList section */ 443 | 444 | /* Begin XCRemoteSwiftPackageReference section */ 445 | 63026F6E2445D8F70096F852 /* XCRemoteSwiftPackageReference "Sourceful" */ = { 446 | isa = XCRemoteSwiftPackageReference; 447 | repositoryURL = "https://github.com/twostraws/Sourceful"; 448 | requirement = { 449 | kind = upToNextMajorVersion; 450 | minimumVersion = 0.3.0; 451 | }; 452 | }; 453 | /* End XCRemoteSwiftPackageReference section */ 454 | 455 | /* Begin XCSwiftPackageProductDependency section */ 456 | 63026F6F2445D8F70096F852 /* Sourceful */ = { 457 | isa = XCSwiftPackageProductDependency; 458 | package = 63026F6E2445D8F70096F852 /* XCRemoteSwiftPackageReference "Sourceful" */; 459 | productName = Sourceful; 460 | }; 461 | /* End XCSwiftPackageProductDependency section */ 462 | }; 463 | rootObject = 63890EC921A5C3E0004DF8A2 /* Project object */; 464 | } 465 | --------------------------------------------------------------------------------