The Swift Package Index logo.Swift Package Index

Build Information

Successful build of TonConnect, reference 1.0.1 (354279), with Swift 6.4 for macOS (SPM) on 20 Sep 2026 20:21:42 UTC.

Swift 6 data race errors: 0

Build Command

env DEVELOPER_DIR=/Applications/Xcode-27.0.0-Release.Candidate.app xcrun swift build --arch arm64

Build Log

========================================
RunAll
========================================
Builder version: 5.1.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/bbetsey/tonconnect-swift.git
Reference: 1.0.1
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/bbetsey/tonconnect-swift
 * tag               1.0.1      -> FETCH_HEAD
HEAD is now at 3542799 Merge pull request #49 from bbetsey/develop
Cloned https://github.com/bbetsey/tonconnect-swift.git
Revision (git rev-parse @):
35427994b83dbc1842d0a0a5ef63f3ea80dd3487
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/bbetsey/tonconnect-swift.git at 1.0.1
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.4
Building package at path:  $PWD
https://github.com/bbetsey/tonconnect-swift.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-27.0.0-Release.Candidate.app xcrun swift build --arch arm64
Building for debugging...
[Computing dependencies]
[Pre-planning 1 / 560]
[Planning deferred tasks]
[34 / 193] TonConnectNativeEngine
[110 / 193] TonConnect_TonConnectUI
[115 / 193]
[120 / 195] CTweetNacl
[127 / 204]
[130 / 204] CTweetNacl
[131 / 204] TonConnectTransport
[141 / 253]
[146 / 253]
[149 / 253]
[150 / 253]
[154 / 253]
[156 / 253]
[159 / 253]
[162 / 253]
[164 / 253]
[165 / 253]
[176 / 253] TonConnectCore
[190 / 253] TonConnectCore
[201 / 258] TonConnectTransport-product
[201 / 258] TonConnectCore
[210 / 295]
[225 / 295]
[230 / 335] TonConnectJSCoreEngine
[243 / 335]
[255 / 335] TonConnectTestSupport
[267 / 335] TonConnectNativeEngine
[271 / 335]
[275 / 335] TonConnectConformance
[283 / 335] TonConnectJSCoreEngine
[292 / 335] TonConnectConformance-product
[296 / 335] TonConnectConformance
[298 / 336]
[299 / 336] TonConnectJSCoreEngine
[304 / 336] TonConnectSDK
[315 / 338] TonConnectSDK
[316 / 338]
[328 / 338] TonConnectUI
[334 / 338] TonConnectUI
Build complete! (15.69 sec)
Fetching https://github.com/swiftlang/swift-docc-plugin
[1/2345] Fetching swift-docc-plugin
Fetched https://github.com/swiftlang/swift-docc-plugin (1.39s)
Computing version for https://github.com/swiftlang/swift-docc-plugin
Computed https://github.com/swiftlang/swift-docc-plugin at 1.5.0 (4.17s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit
[1/3824] Fetching swift-docc-symbolkit
Fetched https://github.com/swiftlang/swift-docc-symbolkit (1.26s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (2.01s)
Creating working copy for https://github.com/swiftlang/swift-docc-plugin
Working copy of https://github.com/swiftlang/swift-docc-plugin resolved at 1.5.0
Creating working copy for https://github.com/swiftlang/swift-docc-symbolkit
Working copy of https://github.com/swiftlang/swift-docc-symbolkit resolved at 1.0.0
/Users/admin/builder/spi-builder-workspace/Sources/CTweetNacl/tweetnacl.c:410:18: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
  410 |     sel25519(a,b,r);
      |     ~~~~~~~~     ^
/Users/admin/builder/spi-builder-workspace/Sources/CTweetNacl/tweetnacl.c:411:18: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
  411 |     sel25519(c,d,r);
      |     ~~~~~~~~     ^
/Users/admin/builder/spi-builder-workspace/Sources/CTweetNacl/tweetnacl.c:430:18: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
  430 |     sel25519(a,b,r);
      |     ~~~~~~~~     ^
/Users/admin/builder/spi-builder-workspace/Sources/CTweetNacl/tweetnacl.c:431:18: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
  431 |     sel25519(c,d,r);
      |     ~~~~~~~~     ^
/Users/admin/builder/spi-builder-workspace/Sources/CTweetNacl/tweetnacl.c:548:10: warning: implicit conversion loses integer precision: 'u64' (aka 'unsigned long long') to 'int' [-Wshorten-64-to-32]
  548 |   return n;
      |   ~~~~~~ ^
5 warnings generated.
/Users/admin/builder/spi-builder-workspace/Sources/TonConnectJSCoreEngine/Polyfills/EventSourcePolyfill.swift:43:37: warning: 'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
 29 |     public func apply(to context: JSContext) {
 30 |         // The blocks capture self strongly (the TimerPolyfill idiom) — the polyfill lives with the JSContext.
 31 |         let create: @convention(block) (String) -> Int32 = { url in
    |                                                            |- note: 'self' implicitly strongly captured here
    |                                                            `- note: add 'self' as a capture list item to silence
 32 |             guard JSContext.current() != nil else {
 33 |                 fatalError("__nativeESCreate called outside a JSContext")
    :
 41 |                                            sessionConfiguration: self.sessionConfiguration)
 42 |             // [weak self]: the polyfill holds the source via the registry — otherwise a polyfill↔source cycle.
 43 |             source.onOpen = { [weak self] in
    |                                     |- warning: 'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
    |                                     `- note: explicitly assign the capture list item to silence
 44 |                 self?.dispatch(identifier, type: "open", data: "", lastEventId: "")
 45 |             }
/Users/admin/builder/spi-builder-workspace/Sources/TonConnectJSCoreEngine/Polyfills/EventSourcePolyfill.swift:46:40: warning: 'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
 29 |     public func apply(to context: JSContext) {
 30 |         // The blocks capture self strongly (the TimerPolyfill idiom) — the polyfill lives with the JSContext.
 31 |         let create: @convention(block) (String) -> Int32 = { url in
    |                                                            |- note: 'self' implicitly strongly captured here
    |                                                            `- note: add 'self' as a capture list item to silence
 32 |             guard JSContext.current() != nil else {
 33 |                 fatalError("__nativeESCreate called outside a JSContext")
    :
 44 |                 self?.dispatch(identifier, type: "open", data: "", lastEventId: "")
 45 |             }
 46 |             source.onMessage = { [weak self] eventId, data in
    |                                        |- warning: 'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
    |                                        `- note: explicitly assign the capture list item to silence
 47 |                 self?.dispatch(identifier, type: "message", data: data, lastEventId: eventId ?? "")
 48 |             }
/Users/admin/builder/spi-builder-workspace/Sources/TonConnectJSCoreEngine/Polyfills/EventSourcePolyfill.swift:49:38: warning: 'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
 29 |     public func apply(to context: JSContext) {
 30 |         // The blocks capture self strongly (the TimerPolyfill idiom) — the polyfill lives with the JSContext.
 31 |         let create: @convention(block) (String) -> Int32 = { url in
    |                                                            |- note: 'self' implicitly strongly captured here
    |                                                            `- note: add 'self' as a capture list item to silence
 32 |             guard JSContext.current() != nil else {
 33 |                 fatalError("__nativeESCreate called outside a JSContext")
    :
 47 |                 self?.dispatch(identifier, type: "message", data: data, lastEventId: eventId ?? "")
 48 |             }
 49 |             source.onError = { [weak self] error in
    |                                      |- warning: 'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
    |                                      `- note: explicitly assign the capture list item to silence
 50 |                 self?.dispatch(identifier, type: "error",
 51 |                                data: error.map { "\($0)" } ?? "stream closed", lastEventId: "")
[#ImplicitStrongCapture]: <https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture>
/Users/admin/builder/spi-builder-workspace/Sources/TonConnectNativeEngine/NativeEngine.swift:487:13: warning: initialization of immutable value 'store' was never used; consider replacing with assignment to '_' or removing it [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
 485 |         lastWalletEventId = id
 486 |         lock.unlock()
 487 |         let store = store
     |             `- warning: initialization of immutable value 'store' was never used; consider replacing with assignment to '_' or removing it [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
 488 |         persist("update last wallet event id") { try await $0.updateLastWalletEventId(id) }
 489 |         return true
/Users/admin/builder/spi-builder-workspace/Sources/TonConnectNativeEngine/NativeEngine.swift:575:13: warning: initialization of immutable value 'store' was never used; consider replacing with assignment to '_' or removing it [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
 573 |         guard let eventId, acceptWalletEventId(eventId) else { return }
 574 |         eventContinuation.yield(.disconnected)
 575 |         let store = store
     |             `- warning: initialization of immutable value 'store' was never used; consider replacing with assignment to '_' or removing it [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
 576 |         persist("clear the session") { try await $0.clear() } // only our own native key
 577 |         lock.lock()
[#NoUsage]: <https://docs.swift.org/compiler/documentation/diagnostics/no-usage>
/Users/admin/builder/spi-builder-workspace/Sources/TonConnectJSCoreEngine/StorageBridge.swift:33:18: warning: weak variable 'bridge' was never mutated; consider changing to 'let' constant [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\::]8;;https://docs.swift.org/compiler/documentation/diagnostics/weak-mutability\WeakMutability]8;;\]
 31 |     public func install(into context: JSContext) {
 32 |         let storage = self.storage
 33 |         weak var bridge = self.bridge
    |                  `- warning: weak variable 'bridge' was never mutated; consider changing to 'let' constant [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\::]8;;https://docs.swift.org/compiler/documentation/diagnostics/weak-mutability\WeakMutability]8;;\]
 34 |
 35 |         let get: @convention(block) (String) -> JSValue = { key in
[#VariableNeverMutated]: <https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated>
[#WeakMutability]: <https://docs.swift.org/compiler/documentation/diagnostics/weak-mutability>
/Users/admin/builder/spi-builder-workspace/Sources/TonConnectUI/OperationPendingSheet.swift:18:14: warning: 'onChange(of:perform:)' was deprecated in macOS 14.0: Use `onChange` with a two or zero parameter action closure instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 16 |     func body(content: Content) -> some View {
 17 |         content
 18 |             .onChange(of: tonConnect.operation) { operation in
    |              `- warning: 'onChange(of:perform:)' was deprecated in macOS 14.0: Use `onChange` with a two or zero parameter action closure instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 19 |                 isPresented = operation != nil
 20 |             }
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
/Users/admin/builder/spi-builder-workspace/Sources/TonConnectUI/WalletPickerSheet.swift:60:10: warning: 'onChange(of:perform:)' was deprecated in macOS 14.0: Use `onChange` with a two or zero parameter action closure instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 58 |         .presentationDetents([.medium, .large], selection: $detent)
 59 |         .presentationDragIndicator(.hidden)
 60 |         .onChange(of: detent) { newDetent in
    |          `- warning: 'onChange(of:perform:)' was deprecated in macOS 14.0: Use `onChange` with a two or zero parameter action closure instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 61 |             if newDetent != detentTarget { detent = detentTarget }
 62 |         }
/Users/admin/builder/spi-builder-workspace/Sources/TonConnectUI/WalletPickerSheet.swift:65:10: warning: 'onChange(of:perform:)' was deprecated in macOS 14.0: Use `onChange` with a two or zero parameter action closure instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 63 |         .ignoresSafeArea()
 64 |         .onAppear { loader.load() } // lazily, on open
 65 |         .onChange(of: tonConnect.isConnected) { connected in
    |          `- warning: 'onChange(of:perform:)' was deprecated in macOS 14.0: Use `onChange` with a two or zero parameter action closure instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 66 |             if connected { dismiss() } // success — same as the original
 67 |         }
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
Build complete.
{
  "dependencies" : [
    {
      "identity" : "swift-docc-plugin",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/swiftlang/swift-docc-plugin"
    }
  ],
  "manifest_display_name" : "TonConnect",
  "name" : "TonConnect",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "16.0"
    },
    {
      "name" : "macos",
      "version" : "14.0"
    }
  ],
  "products" : [
    {
      "name" : "TonConnectCore",
      "targets" : [
        "TonConnectCore"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "TonConnectConformance",
      "targets" : [
        "TonConnectConformance"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "TonConnectJSCoreEngine",
      "targets" : [
        "TonConnectJSCoreEngine"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "TonConnectTransport",
      "targets" : [
        "TonConnectTransport"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "TonConnectUI",
      "targets" : [
        "TonConnectUI"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "TonConnectSDK",
      "targets" : [
        "TonConnectSDK"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "TonConnectNativeEngine",
      "targets" : [
        "TonConnectNativeEngine"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "TonConnectUITests",
      "module_type" : "SwiftTarget",
      "name" : "TonConnectUITests",
      "path" : "Tests/TonConnectUITests",
      "sources" : [
        "QRConnectTests.swift",
        "WalletWakeLinkTests.swift",
        "WalletsListDecodingTests.swift",
        "WalletsListFilterTests.swift",
        "WalletsListLoaderTests.swift"
      ],
      "target_dependencies" : [
        "TonConnectUI",
        "TonConnectCore"
      ],
      "type" : "test"
    },
    {
      "c99name" : "TonConnectUI",
      "module_type" : "SwiftTarget",
      "name" : "TonConnectUI",
      "path" : "Sources/TonConnectUI",
      "product_memberships" : [
        "TonConnectUI"
      ],
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/TonConnectUI/Resources/Media.xcassets",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/TonConnectUI/WalletsList/Resources/wallets-v2.snapshot.json",
          "rule" : {
            "copy" : {
            }
          }
        }
      ],
      "sources" : [
        "GlassStyling.swift",
        "OperationPendingSheet.swift",
        "PreviewSupport.swift",
        "QRCodeView.swift",
        "TCSpinner.swift",
        "TonConnect+QR.swift",
        "TonConnectButton.swift",
        "WalletPickerSheet.swift",
        "WalletsList/WalletsListEntry.swift",
        "WalletsList/WalletsListLoader.swift"
      ],
      "target_dependencies" : [
        "TonConnectCore"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TonConnectTransportTests",
      "module_type" : "SwiftTarget",
      "name" : "TonConnectTransportTests",
      "path" : "Tests/TonConnectTransportTests",
      "sources" : [
        "NativeEventSourceTests.swift",
        "NativeFetchTests.swift",
        "SSEEventParserTests.swift"
      ],
      "target_dependencies" : [
        "TonConnectTransport",
        "TonConnectTestSupport"
      ],
      "type" : "test"
    },
    {
      "c99name" : "TonConnectTransport",
      "module_type" : "SwiftTarget",
      "name" : "TonConnectTransport",
      "path" : "Sources/TonConnectTransport",
      "product_memberships" : [
        "TonConnectJSCoreEngine",
        "TonConnectTransport",
        "TonConnectSDK",
        "TonConnectNativeEngine"
      ],
      "sources" : [
        "NativeEventSource.swift",
        "NativeFetch.swift",
        "SSEEventParser.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TonConnectTestSupport",
      "module_type" : "SwiftTarget",
      "name" : "TonConnectTestSupport",
      "path" : "Sources/TonConnectTestSupport",
      "sources" : [
        "FakeBridgeURLProtocol.swift"
      ],
      "target_dependencies" : [
        "TonConnectCore"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TonConnectSDK",
      "module_type" : "SwiftTarget",
      "name" : "TonConnectSDK",
      "path" : "Sources/TonConnectSDK",
      "product_memberships" : [
        "TonConnectSDK"
      ],
      "sources" : [
        "DefaultEngineFacade.swift"
      ],
      "target_dependencies" : [
        "TonConnectCore",
        "TonConnectNativeEngine"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TonConnectNativeEngineTests",
      "module_type" : "SwiftTarget",
      "name" : "TonConnectNativeEngineTests",
      "path" : "Tests/TonConnectNativeEngineTests",
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Tests/TonConnectNativeEngineTests/Fixtures/nacl.js",
          "rule" : {
            "copy" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Tests/TonConnectNativeEngineTests/Fixtures/session-crypto-vectors.json",
          "rule" : {
            "copy" : {
            }
          }
        }
      ],
      "sources" : [
        "ConnectUniversalRaceTests.swift",
        "HexCodingTests.swift",
        "LiveBridgeSmokeTests.swift",
        "NativeEngineConnectTests.swift",
        "NativeEngineDeinitTests.swift",
        "NativeEngineFakeBridgeE2ETests.swift",
        "NativeErrorMapperTests.swift",
        "NativeForegroundReconnectTests.swift",
        "NativeSessionStoreTests.swift",
        "RPCEnvelopeTests.swift",
        "ReconnectGatewayTests.swift",
        "SessionBoundaryTests.swift",
        "SessionCryptoRandomSourceTests.swift",
        "SessionCryptoRoundTripTests.swift",
        "SessionCryptoSelfRoundTripTests.swift",
        "SessionCryptoVectorTests.swift"
      ],
      "target_dependencies" : [
        "TonConnectNativeEngine",
        "TonConnectTestSupport",
        "TonConnectConformance"
      ],
      "type" : "test"
    },
    {
      "c99name" : "TonConnectNativeEngine",
      "module_type" : "SwiftTarget",
      "name" : "TonConnectNativeEngine",
      "path" : "Sources/TonConnectNativeEngine",
      "product_memberships" : [
        "TonConnectSDK",
        "TonConnectNativeEngine"
      ],
      "sources" : [
        "BridgeGateway/RPCEnvelope.swift",
        "BridgeGateway/ReconnectClock.swift",
        "BridgeGateway/ReconnectGateway.swift",
        "HexCoding.swift",
        "NativeEngine.swift",
        "NativeErrorMapper.swift",
        "RandomBytesSource.swift",
        "Session/NativeSession.swift",
        "Session/NativeSessionStore.swift",
        "SessionCrypto.swift"
      ],
      "target_dependencies" : [
        "TonConnectCore",
        "CTweetNacl",
        "TonConnectTransport"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TonConnectJSCoreEngineTests",
      "module_type" : "SwiftTarget",
      "name" : "TonConnectJSCoreEngineTests",
      "path" : "Tests/TonConnectJSCoreEngineTests",
      "sources" : [
        "DeinitLeakTests.swift",
        "ExceptionHandlerTests.swift",
        "FakeBridgeE2ETests.swift",
        "ForegroundReconnectTests.swift",
        "GlueSmokeTests.swift",
        "JSCoreEngineConnectTests.swift",
        "ManagedValueLifetimeTests.swift",
        "NetworkPolyfillLoadTests.swift",
        "PolyfillLoadTests.swift",
        "PromiseBridgeTests.swift",
        "SDKSmokeTests.swift",
        "StorageBridgeTests.swift",
        "ThreadSafetyTests.swift"
      ],
      "target_dependencies" : [
        "TonConnectJSCoreEngine",
        "TonConnectTestSupport",
        "TonConnectConformance"
      ],
      "type" : "test"
    },
    {
      "c99name" : "TonConnectJSCoreEngine",
      "module_type" : "SwiftTarget",
      "name" : "TonConnectJSCoreEngine",
      "path" : "Sources/TonConnectJSCoreEngine",
      "product_memberships" : [
        "TonConnectJSCoreEngine"
      ],
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/TonConnectJSCoreEngine/Resources/tonconnect-sdk.bundle.js",
          "rule" : {
            "copy" : {
            }
          }
        }
      ],
      "sources" : [
        "EngineErrorMapper.swift",
        "Errors/JSBridgeError.swift",
        "JSCoreBridge.swift",
        "JSCoreEngine.swift",
        "JSPolyfill.swift",
        "LifecyclePolyfill.swift",
        "Polyfills/AbortControllerPolyfill.swift",
        "Polyfills/Base64Polyfill.swift",
        "Polyfills/ConsolePolyfill.swift",
        "Polyfills/EnvironmentPolyfill.swift",
        "Polyfills/EventSourcePolyfill.swift",
        "Polyfills/FetchPolyfill.swift",
        "Polyfills/SecureRandomPolyfill.swift",
        "Polyfills/TimerPolyfill.swift",
        "PromiseAdapter.swift",
        "StorageBridge.swift"
      ],
      "target_dependencies" : [
        "TonConnectCore",
        "TonConnectTransport"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TonConnectCoreTests",
      "module_type" : "SwiftTarget",
      "name" : "TonConnectCoreTests",
      "path" : "Tests/TonConnectCoreTests",
      "sources" : [
        "ConformanceSuiteTests.swift",
        "DTORoundTripTests.swift",
        "FacadeTests.swift",
        "InMemoryStorageSmokeTests.swift",
        "KeychainSpikeTests.swift",
        "OperationStateMappingTests.swift",
        "StorageParityTests.swift",
        "TonConnectErrorTests.swift",
        "UserFriendlyAddressTests.swift",
        "WalletLinkTests.swift"
      ],
      "target_dependencies" : [
        "TonConnectCore",
        "TonConnectConformance"
      ],
      "type" : "test"
    },
    {
      "c99name" : "TonConnectCore",
      "module_type" : "SwiftTarget",
      "name" : "TonConnectCore",
      "path" : "Sources/TonConnectCore",
      "product_memberships" : [
        "TonConnectCore",
        "TonConnectConformance",
        "TonConnectJSCoreEngine",
        "TonConnectUI",
        "TonConnectSDK",
        "TonConnectNativeEngine"
      ],
      "sources" : [
        "Errors/TonConnectError.swift",
        "Models/Account+UserFriendly.swift",
        "Models/Account.swift",
        "Models/AppRequest.swift",
        "Models/ConnectEvent.swift",
        "Models/ConnectRequest.swift",
        "Models/ConnectionState.swift",
        "Models/OperationState.swift",
        "Models/ReturnStrategy.swift",
        "Models/WalletConnectionSource.swift",
        "Models/WalletManifest.swift",
        "Models/WalletResponse.swift",
        "Storage/InMemoryStorage.swift",
        "Storage/KeychainStorage.swift",
        "Storage/SessionKey.swift",
        "Storage/TonConnectStorage.swift",
        "TonConnect.swift",
        "TonConnectEngine.swift",
        "TonConnectEvent.swift",
        "WalletLink.swift",
        "WalletOpener.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TonConnectConformance",
      "module_type" : "SwiftTarget",
      "name" : "TonConnectConformance",
      "path" : "Sources/TonConnectConformance",
      "product_memberships" : [
        "TonConnectConformance"
      ],
      "sources" : [
        "EngineConformanceSuite.swift",
        "EngineFactory.swift",
        "FakeEngine.swift",
        "StorageConformanceSuite.swift",
        "StorageFactory.swift"
      ],
      "target_dependencies" : [
        "TonConnectCore"
      ],
      "type" : "library"
    },
    {
      "c99name" : "CTweetNacl",
      "module_type" : "ClangTarget",
      "name" : "CTweetNacl",
      "path" : "Sources/CTweetNacl",
      "product_memberships" : [
        "TonConnectSDK",
        "TonConnectNativeEngine"
      ],
      "sources" : [
        "randombytes_shim.c",
        "tweetnacl.c"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.10"
}
Done.