@pyrocancode/react-native-vk-auth 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +302 -0
- package/android/build.gradle +155 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +4 -0
- package/android/src/main/java/com/vkauth/VkAuthModule.kt +72 -0
- package/android/src/main/java/com/vkauth/VkAuthPackage.kt +23 -0
- package/android/src/main/java/com/vkauth/vkid/AuthDelegate.kt +123 -0
- package/android/src/main/java/com/vkauth/vkid/InitDelegate.kt +13 -0
- package/android/src/main/java/com/vkauth/vkid/JSSilentTokenExchanger.kt +33 -0
- package/android/src/main/java/com/vkauth/vkid/SuperAppKitInitUtils.kt +75 -0
- package/android/src/main/java/com/vkauth/vkid/dto/AcessToken.kt +19 -0
- package/android/src/main/java/com/vkauth/vkid/dto/DtoExt.kt +24 -0
- package/android/src/main/java/com/vkauth/vkid/dto/SilentAuthInfo.kt +22 -0
- package/android/src/main/java/com/vkauth/vkid/dto/Token.kt +15 -0
- package/android/src/main/java/com/vkauth/vkid/dto/UserSession.kt +28 -0
- package/android/src/main/java/com/vkauth/vkid/jsinput/App.kt +17 -0
- package/android/src/main/java/com/vkauth/vkid/jsinput/Credentials.kt +17 -0
- package/android/src/main/java/com/vkauth/vkid/jsinput/Links.kt +19 -0
- package/android/src/main/java/com/vkauth/vkid/jsinput/Mode.kt +13 -0
- package/android/src/main/java/com/vkauth/vkid/jsinput/VKID.kt +21 -0
- package/android/src/main/java/com/vkauth/vkid/jstutils/JsCbSender.kt +16 -0
- package/android/src/main/java/com/vkauth/vkid/jstutils/JsOutputParam.kt +7 -0
- package/android/src/main/java/com/vkauth/vkid/onetapbutton/OneTapButtonManager.kt +169 -0
- package/android/src/main/res/drawable/ic_launcher.xml +2 -0
- package/android/src/main/res/values/strings.xml +5 -0
- package/ios/Event.swift +70 -0
- package/ios/RCTDomain.swift +26 -0
- package/ios/VkAuth-Bridging-Header.h +3 -0
- package/ios/VkAuth.m +60 -0
- package/ios/VkAuth.swift +180 -0
- package/ios/VkAuth.xcodeproj/project.pbxproj +315 -0
- package/package.json +128 -0
- package/react-native-vk-auth.podspec +35 -0
- package/src/index.tsx +331 -0
package/ios/Event.swift
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import OSLog
|
|
3
|
+
|
|
4
|
+
@_implementationOnly import VKSDK
|
|
5
|
+
|
|
6
|
+
extension VkAuth {
|
|
7
|
+
func send(event: Event) {
|
|
8
|
+
self.sendEvent(withName: event.name, body: event.body)
|
|
9
|
+
os_log("Sent react event", type: .info, event.description)
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
protocol RCTEvent {
|
|
14
|
+
var name: String { get }
|
|
15
|
+
var body: Any { get }
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
struct Event {
|
|
19
|
+
var name: String { self.event.name }
|
|
20
|
+
var body: Any { self.event.body }
|
|
21
|
+
|
|
22
|
+
private let event: RCTEvent
|
|
23
|
+
|
|
24
|
+
private init(_ event: RCTEvent) {
|
|
25
|
+
self.event = event
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// MARK: - Accessors
|
|
29
|
+
|
|
30
|
+
static let onLogout = Self(OnLogout())
|
|
31
|
+
|
|
32
|
+
static func onAuth(userSession: VKID.UserSession) -> Self {
|
|
33
|
+
.init(OnAuth(userSession: userSession))
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
static func onSilentDataReceive(silentToken: VKID.SilentToken) -> Self {
|
|
37
|
+
.init(OnSilentDataReceive(silentToken: silentToken))
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
extension Event: CustomStringConvertible {
|
|
42
|
+
var description: String {
|
|
43
|
+
"Event: name - \(name), body - \(body)"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
extension Event {
|
|
48
|
+
private struct OnLogout: RCTEvent {
|
|
49
|
+
let name = "onLogout"
|
|
50
|
+
let body: Any = ()
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
private struct OnAuth: RCTEvent {
|
|
54
|
+
let name = "onAuth"
|
|
55
|
+
let body: Any
|
|
56
|
+
|
|
57
|
+
init(userSession: VKID.UserSession) {
|
|
58
|
+
self.body = userSession.dictionary
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
private struct OnSilentDataReceive: RCTEvent {
|
|
63
|
+
let name = "onSilentDataReceive"
|
|
64
|
+
let body: Any
|
|
65
|
+
|
|
66
|
+
init(silentToken: VKID.SilentToken) {
|
|
67
|
+
self.body = ["token": ["value": silentToken.token.value], "uuid": silentToken.uuid]
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
|
|
3
|
+
@_implementationOnly import VKSDK
|
|
4
|
+
|
|
5
|
+
protocol RCTDomain {
|
|
6
|
+
var dictionary: [String: Any?] { get }
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
extension VKID.Profile: RCTDomain {
|
|
10
|
+
#warning("Use value instead of description for userID")
|
|
11
|
+
var dictionary: [String : Any?] {
|
|
12
|
+
[
|
|
13
|
+
"userID": ["value": self.id.description],
|
|
14
|
+
"firstName": self.name?.firstName,
|
|
15
|
+
"lastName": self.name?.lastName,
|
|
16
|
+
"phone": self.phoneMask,
|
|
17
|
+
"photo200": self.image?.url?.absoluteString
|
|
18
|
+
]
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
extension VKID.UserSession: RCTDomain {
|
|
23
|
+
var dictionary: [String : Any?] {
|
|
24
|
+
["type": self.authorized == nil ? "authenticated" : "authorized"]
|
|
25
|
+
}
|
|
26
|
+
}
|
package/ios/VkAuth.m
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
#import <React/RCTBridgeModule.h>
|
|
2
|
+
#import <React/RCTViewManager.h>
|
|
3
|
+
#import <React/RCTEventEmitter.h>
|
|
4
|
+
|
|
5
|
+
@interface RCT_EXTERN_MODULE(VkAuth, NSObject)
|
|
6
|
+
|
|
7
|
+
#pragma mark - SDK
|
|
8
|
+
|
|
9
|
+
RCT_EXTERN_METHOD(initialize:(NSDictionary *)app vkid:(NSDictionary *)vkid)
|
|
10
|
+
RCT_EXTERN_METHOD(openURL:(NSString *)url)
|
|
11
|
+
|
|
12
|
+
#pragma mark - Auth
|
|
13
|
+
|
|
14
|
+
RCT_EXTERN_METHOD(getUserSessions:(RCTPromiseResolveBlock)resolve
|
|
15
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
16
|
+
|
|
17
|
+
RCT_EXTERN_METHOD(getUserProfile:(RCTPromiseResolveBlock)resolve
|
|
18
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
19
|
+
|
|
20
|
+
RCT_EXTERN_METHOD(startAuth)
|
|
21
|
+
|
|
22
|
+
RCT_EXTERN_METHOD(closeAuth)
|
|
23
|
+
|
|
24
|
+
RCT_EXTERN_METHOD(logout)
|
|
25
|
+
|
|
26
|
+
RCT_EXTERN_METHOD(accessTokenChangedSuccess:(NSString *)token userId:(NSNumber * _Nonnull)userId)
|
|
27
|
+
|
|
28
|
+
RCT_EXTERN_METHOD(accessTokenChangedFailed:(NSDictionary *)error)
|
|
29
|
+
|
|
30
|
+
#pragma mark - Events
|
|
31
|
+
|
|
32
|
+
RCT_EXTERN_METHOD(supportedEvents)
|
|
33
|
+
|
|
34
|
+
RCT_EXTERN_METHOD(addListener:)
|
|
35
|
+
|
|
36
|
+
RCT_EXTERN_METHOD(removeListeners:)
|
|
37
|
+
|
|
38
|
+
#pragma mark - Utility
|
|
39
|
+
|
|
40
|
+
+ (BOOL)requiresMainQueueSetup {
|
|
41
|
+
return YES;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
- (dispatch_queue_t)methodQueue {
|
|
45
|
+
return dispatch_get_main_queue();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@end
|
|
49
|
+
|
|
50
|
+
@interface RCT_EXTERN_MODULE(RTCVkOneTapButton, RCTViewManager)
|
|
51
|
+
|
|
52
|
+
+ (BOOL)requiresMainQueueSetup {
|
|
53
|
+
return YES;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
- (dispatch_queue_t)methodQueue {
|
|
57
|
+
return dispatch_get_main_queue();
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@end
|
package/ios/VkAuth.swift
ADDED
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import UIKit
|
|
2
|
+
import OSLog
|
|
3
|
+
|
|
4
|
+
@_implementationOnly import VKSDK
|
|
5
|
+
|
|
6
|
+
@objc(VkAuth)
|
|
7
|
+
final class VkAuth: RCTEventEmitter {
|
|
8
|
+
private static var _sharedSDK: VKSDK.VK.Type2<App, VKID>? // DO NOT USE THIS DIRECTLY
|
|
9
|
+
fileprivate static var _sharedSuperappKit: VkAuth?
|
|
10
|
+
|
|
11
|
+
fileprivate static var sharedSDK: VKSDK.VK.Type2<App, VKID> {
|
|
12
|
+
guard let _shared = Self._sharedSDK else {
|
|
13
|
+
fatalError("VKSDK is not initialized. Call initialize(_:vkid:) method before using VkAuth.")
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return _shared
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
private var activeAuthCompletion: ((Result<VKSDK.VKID.AccessToken, Error>) -> Void)?
|
|
20
|
+
|
|
21
|
+
@objc(initialize:vkid:)
|
|
22
|
+
func initialize(_ app: NSDictionary, vkid: NSDictionary) {
|
|
23
|
+
guard
|
|
24
|
+
let credentials = app["credentials"] as? [String: Any],
|
|
25
|
+
let clientId = credentials["clientId"] as? String,
|
|
26
|
+
let clientSecret = credentials["clientSecret"] as? String
|
|
27
|
+
else {
|
|
28
|
+
os_log("Incorrect credentials format", type: .error)
|
|
29
|
+
return
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
do {
|
|
33
|
+
Self._sharedSDK = try VK {
|
|
34
|
+
App(credentials: .init(clientId: clientId, clientSecret: clientSecret))
|
|
35
|
+
VKID()
|
|
36
|
+
}
|
|
37
|
+
Self._sharedSuperappKit = self
|
|
38
|
+
} catch {
|
|
39
|
+
os_log("VKSDK initialization failed", type: .error, error.localizedDescription)
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@objc(openURL:)
|
|
44
|
+
func openURL(_ url: String) {
|
|
45
|
+
guard let url = URL(string: url) else {
|
|
46
|
+
return
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
try? Self.sharedSDK.open(url: url)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// MARK: - Auth
|
|
53
|
+
|
|
54
|
+
@objc func startAuth() {
|
|
55
|
+
let flow = VKID.AuthFlow.exchanging(tokenExchanger: .custom(weak: self))
|
|
56
|
+
let authController = VKID.AuthController(flow: flow, delegate: self)
|
|
57
|
+
|
|
58
|
+
let viewController = try! Self.sharedSDK.vkid.ui(for: authController).uiViewController()
|
|
59
|
+
UIApplication.shared.keyWindow?.rootViewController?.present(viewController, animated: true)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
@objc func closeAuth() {
|
|
63
|
+
UIApplication.shared.keyWindow?.rootViewController?.dismiss(animated: true)
|
|
64
|
+
os_log("Authorization closed", type: .info)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@objc func logout() {
|
|
68
|
+
guard let userSession = Self.sharedSDK.vkid.userSessions.first else {
|
|
69
|
+
return
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
userSession.authorized?.logout { [weak self] _ in
|
|
73
|
+
self?.send(event: .onLogout)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
os_log("Logout user session", type: .info, "\(userSession)")
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@objc(getUserSessions:rejecter:)
|
|
80
|
+
func getUserSessions(
|
|
81
|
+
resolver resolve: RCTPromiseResolveBlock,
|
|
82
|
+
rejecter reject: RCTPromiseRejectBlock
|
|
83
|
+
) {
|
|
84
|
+
resolve(Self.sharedSDK.vkid.userSessions.map(\.dictionary))
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
@objc(getUserProfile:rejecter:)
|
|
88
|
+
func getUserProfile(
|
|
89
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
90
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
91
|
+
) {
|
|
92
|
+
guard let authorized = Self.sharedSDK.vkid.userSessions.first?.authorized else {
|
|
93
|
+
reject(nil, nil, nil)
|
|
94
|
+
return
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
authorized.requestProfile { result in
|
|
98
|
+
do {
|
|
99
|
+
let profile = try result.get()
|
|
100
|
+
resolve(profile.dictionary)
|
|
101
|
+
} catch {
|
|
102
|
+
reject(nil, nil, nil)
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
extension VkAuth: TokenExchanging {
|
|
109
|
+
func exchange(silentToken: VKSDK.VKID.SilentToken, completion: @escaping (Result<VKSDK.VKID.AccessToken, Error>) -> Void) {
|
|
110
|
+
self.activeAuthCompletion = completion
|
|
111
|
+
self.send(event: .onSilentDataReceive(silentToken: silentToken))
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
@objc(accessTokenChangedSuccess:userId:)
|
|
115
|
+
func accessTokenChangedSuccess(_ token: String, userId: NSNumber) {
|
|
116
|
+
let accessToken = VKID.AccessToken(.init(token), userID: .init(userId.uint64Value))
|
|
117
|
+
self.activeAuthCompletion?(.success(accessToken))
|
|
118
|
+
self.activeAuthCompletion = nil
|
|
119
|
+
|
|
120
|
+
os_log("Token exchange succeeded", type: .info)
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
@objc(accessTokenChangedFailed:)
|
|
124
|
+
func accessTokenChangedFailed(_ error: NSDictionary) {
|
|
125
|
+
let reactError = NSError(domain: "React Native", code: -9999, userInfo: error as! [String : Any])
|
|
126
|
+
self.activeAuthCompletion?(.failure(reactError))
|
|
127
|
+
self.activeAuthCompletion = nil
|
|
128
|
+
|
|
129
|
+
os_log("Token exchange failed", type: .error, reactError.localizedDescription)
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
extension VkAuth: VKIDFlowDelegate {
|
|
134
|
+
func vkid(_ vkid: VKSDK.VKID.Module, didCompleteAuthWith result: Result<VKSDK.VKID.UserSession, Error>) {
|
|
135
|
+
do {
|
|
136
|
+
self.send(event: .onAuth(userSession: try result.get()))
|
|
137
|
+
} catch {
|
|
138
|
+
os_log("Authorization failed", type: .error, error.localizedDescription)
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
@objc(RTCVkOneTapButton)
|
|
144
|
+
final class OneTapButtonManager: RCTViewManager {
|
|
145
|
+
override func view() -> UIView! {
|
|
146
|
+
guard let sharedSuperappKit = VkAuth._sharedSuperappKit else {
|
|
147
|
+
fatalError("VkAuth is not initialized. Call initialize(_:vkid:) method before using VkAuth.")
|
|
148
|
+
return UIView()
|
|
149
|
+
}
|
|
150
|
+
var authPresenter: VKSDK.UIKitPresenter = .newUIWindow
|
|
151
|
+
if let root = UIApplication.shared.keyWindow?.rootViewController {
|
|
152
|
+
authPresenter = .uiViewController(root)
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
let flow = VKID.AuthFlow.exchanging(tokenExchanger: .custom(weak: sharedSuperappKit))
|
|
156
|
+
let authController = VKID.AuthController(flow: flow, delegate: sharedSuperappKit)
|
|
157
|
+
|
|
158
|
+
let button = VKID.OneTapButton(
|
|
159
|
+
mode: .default,
|
|
160
|
+
controllerConfiguration: .authController(
|
|
161
|
+
authController,
|
|
162
|
+
presenter: authPresenter
|
|
163
|
+
)
|
|
164
|
+
)
|
|
165
|
+
|
|
166
|
+
guard let buttonView = try? VkAuth.sharedSDK.vkid.ui(for: button).uiView() else {
|
|
167
|
+
fatalError("OneTapButton configuration problem")
|
|
168
|
+
return UIView()
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
return buttonView
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
extension VkAuth {
|
|
176
|
+
@objc(supportedEvents)
|
|
177
|
+
override func supportedEvents() -> [String] {
|
|
178
|
+
["onLogout", "onAuth", "onSilentDataReceive"]
|
|
179
|
+
}
|
|
180
|
+
}
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
// !$*UTF8*$!
|
|
2
|
+
{
|
|
3
|
+
archiveVersion = 1;
|
|
4
|
+
classes = {
|
|
5
|
+
};
|
|
6
|
+
objectVersion = 46;
|
|
7
|
+
objects = {
|
|
8
|
+
|
|
9
|
+
/* Begin PBXBuildFile section */
|
|
10
|
+
5185357329A78C4B00197F67 /* Event.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5185357229A78C4B00197F67 /* Event.swift */; };
|
|
11
|
+
5185357929A78D1700197F67 /* RCTDomain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5185357829A78D1700197F67 /* RCTDomain.swift */; };
|
|
12
|
+
F4FF95D7245B92E800C19C63 /* VkAuth.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4FF95D6245B92E800C19C63 /* VkAuth.swift */; };
|
|
13
|
+
/* End PBXBuildFile section */
|
|
14
|
+
|
|
15
|
+
/* Begin PBXCopyFilesBuildPhase section */
|
|
16
|
+
58B511D91A9E6C8500147676 /* CopyFiles */ = {
|
|
17
|
+
isa = PBXCopyFilesBuildPhase;
|
|
18
|
+
buildActionMask = 2147483647;
|
|
19
|
+
dstPath = "include/$(PRODUCT_NAME)";
|
|
20
|
+
dstSubfolderSpec = 16;
|
|
21
|
+
files = (
|
|
22
|
+
);
|
|
23
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
24
|
+
};
|
|
25
|
+
/* End PBXCopyFilesBuildPhase section */
|
|
26
|
+
|
|
27
|
+
/* Begin PBXFileReference section */
|
|
28
|
+
134814201AA4EA6300B7C361 /* libVkAuth.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libVkAuth.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
29
|
+
5185357229A78C4B00197F67 /* Event.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Event.swift; sourceTree = "<group>"; };
|
|
30
|
+
5185357829A78D1700197F67 /* RCTDomain.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RCTDomain.swift; sourceTree = "<group>"; };
|
|
31
|
+
B3E7B5891CC2AC0600A0062D /* VkAuth.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VkAuth.m; sourceTree = "<group>"; };
|
|
32
|
+
F4FF95D5245B92E700C19C63 /* VkAuth-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "VkAuth-Bridging-Header.h"; sourceTree = "<group>"; };
|
|
33
|
+
F4FF95D6245B92E800C19C63 /* VkAuth.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VkAuth.swift; sourceTree = "<group>"; };
|
|
34
|
+
/* End PBXFileReference section */
|
|
35
|
+
|
|
36
|
+
/* Begin PBXFrameworksBuildPhase section */
|
|
37
|
+
58B511D81A9E6C8500147676 /* Frameworks */ = {
|
|
38
|
+
isa = PBXFrameworksBuildPhase;
|
|
39
|
+
buildActionMask = 2147483647;
|
|
40
|
+
files = (
|
|
41
|
+
);
|
|
42
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
43
|
+
};
|
|
44
|
+
/* End PBXFrameworksBuildPhase section */
|
|
45
|
+
|
|
46
|
+
/* Begin PBXGroup section */
|
|
47
|
+
134814211AA4EA7D00B7C361 /* Products */ = {
|
|
48
|
+
isa = PBXGroup;
|
|
49
|
+
children = (
|
|
50
|
+
134814201AA4EA6300B7C361 /* libVkAuth.a */,
|
|
51
|
+
);
|
|
52
|
+
name = Products;
|
|
53
|
+
sourceTree = "<group>";
|
|
54
|
+
};
|
|
55
|
+
58B511D21A9E6C8500147676 = {
|
|
56
|
+
isa = PBXGroup;
|
|
57
|
+
children = (
|
|
58
|
+
5185357829A78D1700197F67 /* RCTDomain.swift */,
|
|
59
|
+
5185357229A78C4B00197F67 /* Event.swift */,
|
|
60
|
+
F4FF95D6245B92E800C19C63 /* VkAuth.swift */,
|
|
61
|
+
B3E7B5891CC2AC0600A0062D /* VkAuth.m */,
|
|
62
|
+
F4FF95D5245B92E700C19C63 /* VkAuth-Bridging-Header.h */,
|
|
63
|
+
134814211AA4EA7D00B7C361 /* Products */,
|
|
64
|
+
);
|
|
65
|
+
sourceTree = "<group>";
|
|
66
|
+
};
|
|
67
|
+
/* End PBXGroup section */
|
|
68
|
+
|
|
69
|
+
/* Begin PBXNativeTarget section */
|
|
70
|
+
58B511DA1A9E6C8500147676 /* VkAuth */ = {
|
|
71
|
+
isa = PBXNativeTarget;
|
|
72
|
+
buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "VkAuth" */;
|
|
73
|
+
buildPhases = (
|
|
74
|
+
EF0329E3550686ECA9D43A45 /* [CP] Check Pods Manifest.lock */,
|
|
75
|
+
58B511D71A9E6C8500147676 /* Sources */,
|
|
76
|
+
58B511D81A9E6C8500147676 /* Frameworks */,
|
|
77
|
+
58B511D91A9E6C8500147676 /* CopyFiles */,
|
|
78
|
+
);
|
|
79
|
+
buildRules = (
|
|
80
|
+
);
|
|
81
|
+
dependencies = (
|
|
82
|
+
);
|
|
83
|
+
name = VkAuth;
|
|
84
|
+
productName = RCTDataManager;
|
|
85
|
+
productReference = 134814201AA4EA6300B7C361 /* libVkAuth.a */;
|
|
86
|
+
productType = "com.apple.product-type.library.static";
|
|
87
|
+
};
|
|
88
|
+
/* End PBXNativeTarget section */
|
|
89
|
+
|
|
90
|
+
/* Begin PBXProject section */
|
|
91
|
+
58B511D31A9E6C8500147676 /* Project object */ = {
|
|
92
|
+
isa = PBXProject;
|
|
93
|
+
attributes = {
|
|
94
|
+
LastUpgradeCheck = 0920;
|
|
95
|
+
ORGANIZATIONNAME = Facebook;
|
|
96
|
+
TargetAttributes = {
|
|
97
|
+
58B511DA1A9E6C8500147676 = {
|
|
98
|
+
CreatedOnToolsVersion = 6.1.1;
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "VkAuth" */;
|
|
103
|
+
compatibilityVersion = "Xcode 3.2";
|
|
104
|
+
developmentRegion = English;
|
|
105
|
+
hasScannedForEncodings = 0;
|
|
106
|
+
knownRegions = (
|
|
107
|
+
English,
|
|
108
|
+
en,
|
|
109
|
+
);
|
|
110
|
+
mainGroup = 58B511D21A9E6C8500147676;
|
|
111
|
+
productRefGroup = 58B511D21A9E6C8500147676;
|
|
112
|
+
projectDirPath = "";
|
|
113
|
+
projectRoot = "";
|
|
114
|
+
targets = (
|
|
115
|
+
58B511DA1A9E6C8500147676 /* VkAuth */,
|
|
116
|
+
);
|
|
117
|
+
};
|
|
118
|
+
/* End PBXProject section */
|
|
119
|
+
|
|
120
|
+
/* Begin PBXShellScriptBuildPhase section */
|
|
121
|
+
EF0329E3550686ECA9D43A45 /* [CP] Check Pods Manifest.lock */ = {
|
|
122
|
+
isa = PBXShellScriptBuildPhase;
|
|
123
|
+
buildActionMask = 2147483647;
|
|
124
|
+
files = (
|
|
125
|
+
);
|
|
126
|
+
inputFileListPaths = (
|
|
127
|
+
);
|
|
128
|
+
inputPaths = (
|
|
129
|
+
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
|
130
|
+
"${PODS_ROOT}/Manifest.lock",
|
|
131
|
+
);
|
|
132
|
+
name = "[CP] Check Pods Manifest.lock";
|
|
133
|
+
outputFileListPaths = (
|
|
134
|
+
);
|
|
135
|
+
outputPaths = (
|
|
136
|
+
"$(DERIVED_FILE_DIR)/Pods-VkAuth-checkManifestLockResult.txt",
|
|
137
|
+
);
|
|
138
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
139
|
+
shellPath = /bin/sh;
|
|
140
|
+
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
|
141
|
+
showEnvVarsInLog = 0;
|
|
142
|
+
};
|
|
143
|
+
/* End PBXShellScriptBuildPhase section */
|
|
144
|
+
|
|
145
|
+
/* Begin PBXSourcesBuildPhase section */
|
|
146
|
+
58B511D71A9E6C8500147676 /* Sources */ = {
|
|
147
|
+
isa = PBXSourcesBuildPhase;
|
|
148
|
+
buildActionMask = 2147483647;
|
|
149
|
+
files = (
|
|
150
|
+
5185357929A78D1700197F67 /* RCTDomain.swift in Sources */,
|
|
151
|
+
5185357329A78C4B00197F67 /* Event.swift in Sources */,
|
|
152
|
+
F4FF95D7245B92E800C19C63 /* VkAuth.swift in Sources */,
|
|
153
|
+
);
|
|
154
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
155
|
+
};
|
|
156
|
+
/* End PBXSourcesBuildPhase section */
|
|
157
|
+
|
|
158
|
+
/* Begin XCBuildConfiguration section */
|
|
159
|
+
58B511ED1A9E6C8500147676 /* Debug */ = {
|
|
160
|
+
isa = XCBuildConfiguration;
|
|
161
|
+
buildSettings = {
|
|
162
|
+
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
163
|
+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
|
164
|
+
CLANG_CXX_LIBRARY = "libc++";
|
|
165
|
+
CLANG_ENABLE_MODULES = YES;
|
|
166
|
+
CLANG_ENABLE_OBJC_ARC = YES;
|
|
167
|
+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
168
|
+
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
169
|
+
CLANG_WARN_COMMA = YES;
|
|
170
|
+
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
171
|
+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
172
|
+
CLANG_WARN_EMPTY_BODY = YES;
|
|
173
|
+
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
174
|
+
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
175
|
+
CLANG_WARN_INT_CONVERSION = YES;
|
|
176
|
+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
177
|
+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
178
|
+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
179
|
+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
180
|
+
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
181
|
+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
182
|
+
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
183
|
+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
184
|
+
COPY_PHASE_STRIP = NO;
|
|
185
|
+
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
186
|
+
ENABLE_TESTABILITY = YES;
|
|
187
|
+
"EXCLUDED_ARCHS[sdk=*]" = arm64;
|
|
188
|
+
GCC_C_LANGUAGE_STANDARD = gnu99;
|
|
189
|
+
GCC_DYNAMIC_NO_PIC = NO;
|
|
190
|
+
GCC_NO_COMMON_BLOCKS = YES;
|
|
191
|
+
GCC_OPTIMIZATION_LEVEL = 0;
|
|
192
|
+
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
193
|
+
"DEBUG=1",
|
|
194
|
+
"$(inherited)",
|
|
195
|
+
);
|
|
196
|
+
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
|
197
|
+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
198
|
+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
199
|
+
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
200
|
+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
201
|
+
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
202
|
+
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
203
|
+
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
|
204
|
+
MTL_ENABLE_DEBUG_INFO = YES;
|
|
205
|
+
ONLY_ACTIVE_ARCH = YES;
|
|
206
|
+
SDKROOT = iphoneos;
|
|
207
|
+
};
|
|
208
|
+
name = Debug;
|
|
209
|
+
};
|
|
210
|
+
58B511EE1A9E6C8500147676 /* Release */ = {
|
|
211
|
+
isa = XCBuildConfiguration;
|
|
212
|
+
buildSettings = {
|
|
213
|
+
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
214
|
+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
|
215
|
+
CLANG_CXX_LIBRARY = "libc++";
|
|
216
|
+
CLANG_ENABLE_MODULES = YES;
|
|
217
|
+
CLANG_ENABLE_OBJC_ARC = YES;
|
|
218
|
+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
219
|
+
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
220
|
+
CLANG_WARN_COMMA = YES;
|
|
221
|
+
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
222
|
+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
223
|
+
CLANG_WARN_EMPTY_BODY = YES;
|
|
224
|
+
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
225
|
+
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
226
|
+
CLANG_WARN_INT_CONVERSION = YES;
|
|
227
|
+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
228
|
+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
229
|
+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
230
|
+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
231
|
+
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
232
|
+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
233
|
+
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
234
|
+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
235
|
+
COPY_PHASE_STRIP = YES;
|
|
236
|
+
ENABLE_NS_ASSERTIONS = NO;
|
|
237
|
+
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
238
|
+
"EXCLUDED_ARCHS[sdk=*]" = arm64;
|
|
239
|
+
GCC_C_LANGUAGE_STANDARD = gnu99;
|
|
240
|
+
GCC_NO_COMMON_BLOCKS = YES;
|
|
241
|
+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
242
|
+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
243
|
+
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
244
|
+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
245
|
+
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
246
|
+
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
247
|
+
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
|
248
|
+
MTL_ENABLE_DEBUG_INFO = NO;
|
|
249
|
+
SDKROOT = iphoneos;
|
|
250
|
+
VALIDATE_PRODUCT = YES;
|
|
251
|
+
};
|
|
252
|
+
name = Release;
|
|
253
|
+
};
|
|
254
|
+
58B511F01A9E6C8500147676 /* Debug */ = {
|
|
255
|
+
isa = XCBuildConfiguration;
|
|
256
|
+
buildSettings = {
|
|
257
|
+
HEADER_SEARCH_PATHS = (
|
|
258
|
+
"$(inherited)",
|
|
259
|
+
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
|
260
|
+
"$(SRCROOT)/../../../React/**",
|
|
261
|
+
"$(SRCROOT)/../../react-native/React/**",
|
|
262
|
+
);
|
|
263
|
+
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
|
264
|
+
OTHER_LDFLAGS = "-ObjC";
|
|
265
|
+
PRODUCT_NAME = VkAuth;
|
|
266
|
+
SKIP_INSTALL = YES;
|
|
267
|
+
SWIFT_OBJC_BRIDGING_HEADER = "VkAuth-Bridging-Header.h";
|
|
268
|
+
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
|
269
|
+
SWIFT_VERSION = 5.0;
|
|
270
|
+
};
|
|
271
|
+
name = Debug;
|
|
272
|
+
};
|
|
273
|
+
58B511F11A9E6C8500147676 /* Release */ = {
|
|
274
|
+
isa = XCBuildConfiguration;
|
|
275
|
+
buildSettings = {
|
|
276
|
+
HEADER_SEARCH_PATHS = (
|
|
277
|
+
"$(inherited)",
|
|
278
|
+
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
|
279
|
+
"$(SRCROOT)/../../../React/**",
|
|
280
|
+
"$(SRCROOT)/../../react-native/React/**",
|
|
281
|
+
);
|
|
282
|
+
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
|
283
|
+
OTHER_LDFLAGS = "-ObjC";
|
|
284
|
+
PRODUCT_NAME = VkAuth;
|
|
285
|
+
SKIP_INSTALL = YES;
|
|
286
|
+
SWIFT_OBJC_BRIDGING_HEADER = "VkAuth-Bridging-Header.h";
|
|
287
|
+
SWIFT_VERSION = 5.0;
|
|
288
|
+
};
|
|
289
|
+
name = Release;
|
|
290
|
+
};
|
|
291
|
+
/* End XCBuildConfiguration section */
|
|
292
|
+
|
|
293
|
+
/* Begin XCConfigurationList section */
|
|
294
|
+
58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "VkAuth" */ = {
|
|
295
|
+
isa = XCConfigurationList;
|
|
296
|
+
buildConfigurations = (
|
|
297
|
+
58B511ED1A9E6C8500147676 /* Debug */,
|
|
298
|
+
58B511EE1A9E6C8500147676 /* Release */,
|
|
299
|
+
);
|
|
300
|
+
defaultConfigurationIsVisible = 0;
|
|
301
|
+
defaultConfigurationName = Release;
|
|
302
|
+
};
|
|
303
|
+
58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "VkAuth" */ = {
|
|
304
|
+
isa = XCConfigurationList;
|
|
305
|
+
buildConfigurations = (
|
|
306
|
+
58B511F01A9E6C8500147676 /* Debug */,
|
|
307
|
+
58B511F11A9E6C8500147676 /* Release */,
|
|
308
|
+
);
|
|
309
|
+
defaultConfigurationIsVisible = 0;
|
|
310
|
+
defaultConfigurationName = Release;
|
|
311
|
+
};
|
|
312
|
+
/* End XCConfigurationList section */
|
|
313
|
+
};
|
|
314
|
+
rootObject = 58B511D31A9E6C8500147676 /* Project object */;
|
|
315
|
+
}
|