react-native-klarna-inapp-sdk 2.3.15 → 2.4.0

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.
Files changed (62) hide show
  1. package/README.md +1 -0
  2. package/android/src/main/java/com/klarna/mobile/sdk/reactnative/KlarnaMobileSDKPackage.java +2 -4
  3. package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/event/KlarnaEventHandlerEventsUtil.java +62 -3
  4. package/android/src/main/java/com/klarna/mobile/sdk/reactnative/common/util/ArgumentsUtil.java +40 -0
  5. package/android/src/main/java/com/klarna/mobile/sdk/reactnative/signin/KlarnaSignInData.java +15 -0
  6. package/android/src/main/java/com/klarna/mobile/sdk/reactnative/signin/KlarnaSignInEventsMapper.java +40 -0
  7. package/android/src/main/java/com/klarna/mobile/sdk/reactnative/signin/KlarnaSignInModuleImpl.java +124 -0
  8. package/android/src/newarch/java/com/klarna/mobile/sdk/reactnative/spec/RNKlarnaSignInModuleSpec.java +65 -0
  9. package/android/src/oldarch/java/com/klarna/mobile/sdk/reactnative/spec/RNKlarnaSignInModuleSpec.java +39 -0
  10. package/android/src/test/java/com/klarna/mobile/sdk/reactnative/KlarnaMobileSDKPackageTest.java +5 -4
  11. package/ios/Sources/signIn/KlarnaSignInData.h +25 -0
  12. package/ios/Sources/signIn/KlarnaSignInData.mm +21 -0
  13. package/ios/Sources/signIn/KlarnaSignInEventsMapper.h +18 -0
  14. package/ios/Sources/signIn/KlarnaSignInEventsMapper.m +54 -0
  15. package/ios/Sources/signIn/KlarnaSignInModule.h +26 -0
  16. package/ios/Sources/signIn/KlarnaSignInModuleImpl.h +37 -0
  17. package/ios/Sources/signIn/KlarnaSignInModuleImpl.mm +244 -0
  18. package/ios/Sources/signIn/newarch/KlarnaSignInModule.mm +75 -0
  19. package/ios/Sources/signIn/oldarch/KlarnaSignInModule.mm +72 -0
  20. package/lib/commonjs/KlarnaSignInSDK.js +80 -0
  21. package/lib/commonjs/KlarnaSignInSDK.js.map +1 -0
  22. package/lib/commonjs/index.js +11 -0
  23. package/lib/commonjs/index.js.map +1 -1
  24. package/lib/commonjs/specs/NativeKlarnaSignIn.js +10 -0
  25. package/lib/commonjs/specs/NativeKlarnaSignIn.js.map +1 -0
  26. package/lib/commonjs/types/common/KlarnaEnvironment.js +13 -0
  27. package/lib/commonjs/types/common/KlarnaEnvironment.js.map +1 -0
  28. package/lib/commonjs/types/common/KlarnaRegion.js +14 -0
  29. package/lib/commonjs/types/common/KlarnaRegion.js.map +1 -0
  30. package/lib/module/KlarnaSignInSDK.js +72 -0
  31. package/lib/module/KlarnaSignInSDK.js.map +1 -0
  32. package/lib/module/index.js +1 -0
  33. package/lib/module/index.js.map +1 -1
  34. package/lib/module/specs/NativeKlarnaSignIn.js +3 -0
  35. package/lib/module/specs/NativeKlarnaSignIn.js.map +1 -0
  36. package/lib/module/types/common/KlarnaEnvironment.js +6 -0
  37. package/lib/module/types/common/KlarnaEnvironment.js.map +1 -0
  38. package/lib/module/types/common/KlarnaRegion.js +7 -0
  39. package/lib/module/types/common/KlarnaRegion.js.map +1 -0
  40. package/lib/typescript/KlarnaSignInSDK.d.ts +19 -0
  41. package/lib/typescript/KlarnaSignInSDK.d.ts.map +1 -0
  42. package/lib/typescript/index.d.ts +1 -0
  43. package/lib/typescript/index.d.ts.map +1 -1
  44. package/lib/typescript/specs/NativeKlarnaSignIn.d.ts +10 -0
  45. package/lib/typescript/specs/NativeKlarnaSignIn.d.ts.map +1 -0
  46. package/lib/typescript/types/common/KlarnaEnvironment.d.ts +5 -0
  47. package/lib/typescript/types/common/KlarnaEnvironment.d.ts.map +1 -0
  48. package/lib/typescript/types/common/KlarnaMobileSDKError.d.ts +4 -0
  49. package/lib/typescript/types/common/KlarnaMobileSDKError.d.ts.map +1 -1
  50. package/lib/typescript/types/common/KlarnaProductEvent.d.ts +1 -0
  51. package/lib/typescript/types/common/KlarnaProductEvent.d.ts.map +1 -1
  52. package/lib/typescript/types/common/KlarnaRegion.d.ts +6 -0
  53. package/lib/typescript/types/common/KlarnaRegion.d.ts.map +1 -0
  54. package/package.json +1 -1
  55. package/react-native-klarna-inapp-sdk.podspec +1 -1
  56. package/src/KlarnaSignInSDK.tsx +122 -0
  57. package/src/index.tsx +1 -0
  58. package/src/specs/NativeKlarnaSignIn.ts +25 -0
  59. package/src/types/common/KlarnaEnvironment.ts +4 -0
  60. package/src/types/common/KlarnaMobileSDKError.ts +2 -0
  61. package/src/types/common/KlarnaProductEvent.ts +1 -0
  62. package/src/types/common/KlarnaRegion.ts +5 -0
@@ -0,0 +1,37 @@
1
+ //
2
+ // KlarnaSignInEventsHandler.h
3
+ // react-native-klarna-inapp-sdk
4
+ //
5
+ // Created by Jorge Palacio on 2025-02-26.
6
+ //
7
+
8
+ #import <Foundation/Foundation.h>
9
+ #import <React/RCTBridgeModule.h>
10
+
11
+ NS_ASSUME_NONNULL_BEGIN
12
+
13
+ @interface KlarnaSignInModuleImp: NSObject
14
+
15
+ - (void)dispose:(NSString *)instanceId
16
+ resolver:(RCTPromiseResolveBlock)resolve
17
+ rejecter:(RCTPromiseRejectBlock)reject;
18
+
19
+ -(void)initWith:(NSString *)instanceId
20
+ environment: (NSString *)environment
21
+ region: (NSString *)region
22
+ returnUrl: (NSString *) returnUrl
23
+ resolver:(RCTPromiseResolveBlock)resolve
24
+ rejecter:(RCTPromiseRejectBlock)reject;
25
+
26
+ -(void)signInWith:(NSString *)instanceId
27
+ clientId:(NSString *)clientId
28
+ scope:(NSString *)scope
29
+ market:(NSString *)market
30
+ locale:(NSString *)locale
31
+ tokenizationId:(NSString *)tokenizationId
32
+ resolver:(RCTPromiseResolveBlock)resolve
33
+ rejecter:(RCTPromiseRejectBlock)reject;
34
+
35
+ @end
36
+
37
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,244 @@
1
+ //
2
+ // KlarnaSignInEventsHandler.m
3
+ // react-native-klarna-inapp-sdk
4
+ //
5
+ // Created by Jorge Palacio on 2025-02-26.
6
+ //
7
+
8
+ #import "KlarnaSignInModuleImpl.h"
9
+ #import "../common/RNMobileSDKUtils.h"
10
+ #import <AuthenticationServices/AuthenticationServices.h>
11
+ #import "KlarnaMobileSDK/KlarnaMobileSDK-Swift.h"
12
+ #import <React/RCTLog.h>
13
+ #import "KlarnaSignInData.h"
14
+ #import "KlarnaSignInEventsMapper.h"
15
+
16
+ @interface KlarnaSignInModuleImp()<KlarnaEventHandler, ASWebAuthenticationPresentationContextProviding>
17
+
18
+ @property (nonatomic, strong) NSMutableDictionary<NSString *, KlarnaSignInData *> *signInSDKs;
19
+
20
+ - (KlarnaEnvironment *)environmentFrom: (NSString *)value;
21
+ - (KlarnaRegion *)regionFrom: (NSString *)value;
22
+ - (void)rejectWithInvalidiOSVersionSupported:(RCTPromiseRejectBlock) rejectBlock;
23
+ - (KlarnaSignInData *)getInstanceFromComponent: (id <KlarnaComponent> _Nonnull)component;
24
+
25
+ @end
26
+
27
+ @implementation KlarnaSignInModuleImp
28
+
29
+ - (id)init {
30
+ self = [super init];
31
+ _signInSDKs = [NSMutableDictionary new];
32
+ return self;
33
+ }
34
+
35
+ - (KlarnaEnvironment *)environmentFrom: (NSString *)value {
36
+ KlarnaEnvironment *env = KlarnaEnvironment.production;
37
+ if ([value isEqualToString:@"playground"]) {
38
+ env = KlarnaEnvironment.playground;
39
+ }
40
+ if ([value isEqualToString:@"staging"]) {
41
+ env = KlarnaEnvironment.staging;
42
+ }
43
+ if ([value isEqualToString:@"production"]) {
44
+ env = KlarnaEnvironment.production;
45
+ }
46
+
47
+ return env;
48
+ }
49
+
50
+ - (KlarnaRegion *)regionFrom: (NSString *)value {
51
+ KlarnaRegion *reg = KlarnaRegion.eu;
52
+ if ([value isEqualToString:@"eu"]) {
53
+ reg = KlarnaRegion.eu;
54
+ }
55
+
56
+ if ([value isEqualToString:@"na"]) {
57
+ reg = KlarnaRegion.na;
58
+ }
59
+
60
+ if ([value isEqualToString:@"oc"]) {
61
+ reg = KlarnaRegion.oc;
62
+ }
63
+
64
+ return reg;
65
+ }
66
+
67
+ - (KlarnaSignInData *)getInstanceFromComponent:(id<KlarnaComponent>)component {
68
+ for (NSString *key in _signInSDKs) {
69
+ KlarnaSignInData *data = _signInSDKs[key];
70
+ if (data.sdkInstance == component) {
71
+ return data;
72
+ }
73
+ }
74
+ return nil;
75
+ }
76
+
77
+ // MARK: - Module public Methods
78
+
79
+ - (void)dispose:(NSString *)instanceId
80
+ resolver:(RCTPromiseResolveBlock)resolve
81
+ rejecter:(RCTPromiseRejectBlock)reject {
82
+ KlarnaSignInData *signInData = _signInSDKs[instanceId];
83
+ if (signInData != nil) {
84
+ [_signInSDKs removeObjectForKey:instanceId];
85
+ resolve(nil);
86
+ }
87
+ }
88
+
89
+ - (void)initWith:(NSString *)instanceId
90
+ environment: (NSString *)environment
91
+ region: (NSString *)region
92
+ returnUrl: (NSString *)returnUrl
93
+ resolver:(RCTPromiseResolveBlock)resolve
94
+ rejecter:(RCTPromiseRejectBlock)reject {
95
+ KlarnaEnvironment * env = [self environmentFrom: environment];
96
+ KlarnaRegion * reg = [self regionFrom: region];
97
+ NSURL *url = [NSURL URLWithString: returnUrl];
98
+ if (url != nil && url.scheme != nil) {
99
+ if (@available(iOS 13.0, *)) {
100
+ KlarnaSignInSDK *signInInstance = [[KlarnaSignInSDK alloc] initWithEnvironment: env
101
+ region: reg
102
+ returnUrl: url
103
+ eventHandler: self];
104
+ KlarnaSignInData *data = [[KlarnaSignInData alloc] initWith: instanceId sdkInstance: signInInstance];
105
+ [_signInSDKs setObject: data forKey: instanceId];
106
+ resolve(nil);
107
+ } else {
108
+ [self rejectWithInvalidiOSVersionSupported: reject];
109
+ }
110
+ } else {
111
+ [self rejectWithInvalidURL: reject];
112
+ }
113
+ }
114
+
115
+ - (void)signInWith:(NSString *)instanceId
116
+ clientId:(NSString *)clientId
117
+ scope:(NSString *)scope
118
+ market:(NSString *)market
119
+ locale:(NSString *)locale
120
+ tokenizationId:(NSString *)tokenizationId
121
+ resolver:(RCTPromiseResolveBlock)resolve
122
+ rejecter:(RCTPromiseRejectBlock)reject {
123
+ if (@available(iOS 13.0, *)) {
124
+ KlarnaSignInData *signInData = [_signInSDKs objectForKey: instanceId];
125
+ if (signInData == nil) {
126
+ RCTLog(@"No instance found for the given instanceId");
127
+ reject(@"RNKlarnaSignIn", @"No instance found to initiate signIn, Init function must be called prior to this one.", nil);
128
+ } else {
129
+ signInData.resolver = resolve;
130
+ signInData.rejecter = reject;
131
+ [signInData.sdkInstance signInClientId: clientId
132
+ scope: scope
133
+ market: market
134
+ locale: locale
135
+ tokenizationId: tokenizationId
136
+ presentationContext: self];
137
+ }
138
+ } else {
139
+ [self rejectWithInvalidiOSVersionSupported: reject];
140
+ }
141
+ }
142
+
143
+ - (void)rejectWithInvalidiOSVersionSupported:(RCTPromiseRejectBlock) rejectBlock {
144
+ NSString *msg = @"KlarnaSignIn is supported from iOS version 13.0";
145
+ rejectBlock(@"RNKlarnaSignIn", msg, nil);
146
+ }
147
+
148
+ - (void)rejectWithInvalidURL:(RCTPromiseRejectBlock) rejectBlock {
149
+ NSString *msg = @"Invalid or null return URL.";
150
+ NSError *errorEvent = [NSError errorWithDomain:@"com.klarnamobilesdk" code: 0001 userInfo: @{
151
+ @"name": @"KlarnaSignInInvalidReturnUrl",
152
+ @"message": msg,
153
+ @"isFatal": @"true"
154
+ }];
155
+ rejectBlock(@"", msg, errorEvent);
156
+ }
157
+
158
+ // MARK: - KlarnaEventHandler Methods
159
+
160
+ - (void)klarnaComponent:(id <KlarnaComponent> _Nonnull)klarnaComponent dispatchedEvent:(KlarnaProductEvent * _Nonnull)event {
161
+ KlarnaSignInData *signInData = [self getInstanceFromComponent: klarnaComponent];
162
+ if (signInData == nil) {
163
+ RCTLog(@"No instance found for the given component");
164
+ return;
165
+ }
166
+ if (signInData.resolver == nil) {
167
+ RCTLog(@"Missing 'resolver' callback prop.");
168
+ return;
169
+ }
170
+ NSMutableDictionary<NSString *, id> *resolvedEvent = [NSMutableDictionary dictionaryWithDictionary: @{
171
+ @"action": [KlarnaSignInEventsMapper mapSignInEventName: event.action],
172
+ @"sessionId": event.sessionId,
173
+ }];
174
+ NSMutableDictionary *updatedParams = [NSMutableDictionary new];
175
+ [[event getParams] enumerateKeysAndObjectsUsingBlock:^(NSString * _Nonnull key, NSString * _Nonnull obj, BOOL * _Nonnull stop) {
176
+ NSString *updatedKey = [KlarnaSignInEventsMapper mapSignInParamName: key];
177
+ [updatedParams setValue: obj forKey: updatedKey];
178
+ }];
179
+ if ([updatedParams count] > 0) {
180
+ [resolvedEvent setValue: updatedParams forKey: @"params"];
181
+ }
182
+ signInData.resolver(resolvedEvent);
183
+ }
184
+
185
+ - (void)klarnaComponent:(id <KlarnaComponent> _Nonnull)klarnaComponent encounteredError:(KlarnaError * _Nonnull)error {
186
+ if (!error.isFatal) {
187
+ NSArray *allowedNonFatalErrors = @[@"KlarnaSignInAlreadyInProgress", @"KlarnaSignInAuthorizationFailed"];
188
+ if (![allowedNonFatalErrors containsObject: error.name]) {
189
+ return;
190
+ }
191
+ }
192
+ KlarnaSignInData *signInData = [self getInstanceFromComponent: klarnaComponent];
193
+ if (signInData == nil) {
194
+ RCTLog(@"No instance found for the given component");
195
+ } else {
196
+ if (signInData.rejecter == nil) {
197
+ RCTLog(@"Missing 'rejecter' callback prop.");
198
+ } else {
199
+ NSMutableDictionary<NSString *, id> *infoDict = [NSMutableDictionary dictionaryWithDictionary: @{
200
+ @"name": [KlarnaSignInEventsMapper mapSignInErrorName: error.name],
201
+ @"message": error.message,
202
+ @"isFatal": error.isFatal ? @"true" : @"false",
203
+ @"sessionId": error.sessionId,
204
+ }];
205
+ NSDictionary *params = [error getParams];
206
+ if ([params count] > 0) {
207
+ [infoDict setValue: params forKey: @"params"];
208
+ }
209
+ NSError *errorEvent = [NSError errorWithDomain:@"com.klarnamobilesdk" code: 0001 userInfo: infoDict];
210
+ signInData.rejecter(@"", error.message, errorEvent);
211
+ }
212
+ }
213
+ }
214
+
215
+ // MARK: - ASWebAuthenticationPresentationContextProviding
216
+
217
+ - (ASPresentationAnchor)presentationAnchorForWebAuthenticationSession:(ASWebAuthenticationSession *)session {
218
+ UIWindowScene *windowScene = (UIWindowScene *)[[[UIApplication sharedApplication].connectedScenes objectsPassingTest:^BOOL(UIScene * _Nonnull obj, BOOL * _Nonnull stop) {
219
+ if(obj.activationState == UISceneActivationStateForegroundActive) {
220
+ *stop = YES; // Stop after finding the first match
221
+ return YES;
222
+ }
223
+ return NO;
224
+ }] allObjects].firstObject;
225
+
226
+ if (windowScene != nil) {
227
+ if (@available(iOS 15.0, *)) {
228
+ return windowScene.keyWindow;
229
+ } else {
230
+ UIWindow *currentTopWindow = windowScene.windows.firstObject;
231
+ if (currentTopWindow != nil) {
232
+ return currentTopWindow;
233
+ }
234
+ }
235
+
236
+ return [[UIWindow alloc] initWithWindowScene: windowScene];
237
+ }
238
+
239
+ // This Shouldn't execute app crashes!!!
240
+ // Windows can't be created in a bg thread. Hence the crash.
241
+ return nil;
242
+ }
243
+
244
+ @end
@@ -0,0 +1,75 @@
1
+ //
2
+ // KlarnaSignInSDK.m
3
+ // RNKlarnaMobileSDK
4
+ //
5
+ // Created by Jorge Palacio on 2025-02-20.
6
+ // Copyright © 2025 Facebook. All rights reserved.
7
+ //
8
+ #ifdef RCT_NEW_ARCH_ENABLED
9
+
10
+ #import "KlarnaSignInModule.h"
11
+ #import "KlarnaSignInModuleImpl.h"
12
+
13
+ @interface KlarnaSignInModule()
14
+
15
+ @property (strong, nonatomic) KlarnaSignInModuleImp *signInModule;
16
+
17
+ @end
18
+
19
+ @implementation KlarnaSignInModule
20
+
21
+ RCT_EXPORT_MODULE(RNKlarnaSignIn);
22
+
23
+ - (id)init {
24
+ self = [super init];
25
+ _signInModule = [KlarnaSignInModuleImp new];
26
+ return self;
27
+ }
28
+
29
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params {
30
+ return std::make_shared<facebook::react::NativeKlarnaSignInSpecJSI>(params);
31
+ }
32
+
33
+ - (void)dispose:(NSString *)instanceId
34
+ resolve:(RCTPromiseResolveBlock)resolve
35
+ reject:(RCTPromiseRejectBlock)reject {
36
+ [self.signInModule dispose:instanceId
37
+ resolver:resolve
38
+ rejecter:reject];
39
+ }
40
+
41
+ - (void)init:(NSString *)instanceId
42
+ environment:(NSString *)environment
43
+ region:(NSString *)region
44
+ returnUrl:(NSString *)returnUrl
45
+ resolve:(RCTPromiseResolveBlock)resolve
46
+ reject:(RCTPromiseRejectBlock)reject {
47
+ [self.signInModule initWith: instanceId
48
+ environment: environment
49
+ region: region
50
+ returnUrl: returnUrl
51
+ resolver: resolve
52
+ rejecter: reject];
53
+ }
54
+
55
+ - (void)signIn:(NSString *)instanceId
56
+ clientId:(NSString *)clientId
57
+ scope:(NSString *)scope
58
+ market:(NSString *)market
59
+ locale:(NSString *)locale
60
+ tokenizationId:(NSString *)tokenizationId
61
+ resolve:(RCTPromiseResolveBlock)resolve
62
+ reject:(RCTPromiseRejectBlock)reject {
63
+ [self.signInModule signInWith: instanceId
64
+ clientId: clientId
65
+ scope: scope
66
+ market: market
67
+ locale: locale
68
+ tokenizationId: tokenizationId
69
+ resolver: resolve
70
+ rejecter: reject];
71
+ }
72
+
73
+ @end
74
+
75
+ #endif
@@ -0,0 +1,72 @@
1
+ //
2
+ // KlarnaSignInSDK.m
3
+ // RNKlarnaMobileSDK
4
+ //
5
+ // Created by Jorge Palacio on 2025-02-20.
6
+ // Copyright © 2025 Facebook. All rights reserved.
7
+ //
8
+
9
+ #if !RCT_NEW_ARCH_ENABLED
10
+
11
+ #import "KlarnaSignInModule.h"
12
+ #import "KlarnaSignInModuleImpl.h"
13
+
14
+ @interface KlarnaSignInModule()
15
+
16
+ @property (strong, nonatomic) KlarnaSignInModuleImp *signInModule;
17
+
18
+ @end
19
+
20
+ @implementation KlarnaSignInModule
21
+
22
+ RCT_EXPORT_MODULE(RNKlarnaSignIn); // This should match the turbo module specification.
23
+
24
+ - (id)init {
25
+ self = [super init];
26
+ _signInModule = [KlarnaSignInModuleImp new];
27
+ return self;
28
+ }
29
+
30
+ RCT_EXPORT_METHOD(dispose:(NSString *)instanceId
31
+ resolver:(RCTPromiseResolveBlock)resolve
32
+ rejecter:(RCTPromiseRejectBlock)reject) {
33
+ [self.signInModule dispose: instanceId
34
+ resolver: resolve
35
+ rejecter: reject];
36
+ }
37
+
38
+ RCT_EXPORT_METHOD(init:(NSString *)instanceId
39
+ environment:(NSString *)environment
40
+ region:(NSString *)region
41
+ returnUrl:(NSString *) returnUrl
42
+ resolve:(RCTPromiseResolveBlock)resolve
43
+ reject:(RCTPromiseRejectBlock)reject) {
44
+ [self.signInModule initWith: instanceId
45
+ environment: environment
46
+ region: region
47
+ returnUrl: returnUrl
48
+ resolver: resolve
49
+ rejecter: reject];
50
+ }
51
+
52
+ RCT_EXPORT_METHOD(signIn:(NSString *)instanceId
53
+ clientId:(NSString *)clientId
54
+ scope:(NSString *)scope
55
+ market:(NSString *)market
56
+ locale:(NSString *)locale
57
+ tokenizationId:(NSString *)tokenizationId
58
+ resolver:(RCTPromiseResolveBlock)resolve
59
+ rejecter:(RCTPromiseRejectBlock)reject) {
60
+ [self.signInModule signInWith: instanceId
61
+ clientId: clientId
62
+ scope: scope
63
+ market: market
64
+ locale: locale
65
+ tokenizationId: tokenizationId
66
+ resolver: resolve
67
+ rejecter: reject];
68
+ }
69
+
70
+ @end
71
+
72
+ #endif
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.KlarnaSignInSDK = void 0;
7
+ var _NativeKlarnaSignIn = _interopRequireDefault(require("./specs/NativeKlarnaSignIn"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ // declare a class that receive the KlarnaSignInProps in the initializer and expose a method to sign in
10
+ class KlarnaSignInSDK {
11
+ constructor(props, instanceId) {
12
+ this.environment = props.environment;
13
+ this.region = props.region;
14
+ this.returnUrl = props.returnUrl;
15
+ this.instanceId = instanceId;
16
+ }
17
+ static async createInstance(props) {
18
+ if (props.returnUrl.trim() === '') {
19
+ return new Promise((_, reject) => {
20
+ const sdkError = {
21
+ isFatal: true,
22
+ message: 'Invalid or null return URL',
23
+ name: 'KlarnaSignInMissingReturnUrl'
24
+ };
25
+ reject(sdkError);
26
+ });
27
+ }
28
+ return new Promise((resolve, reject) => {
29
+ let instanceId = Math.random().toString(36).substring(2, 15);
30
+ _NativeKlarnaSignIn.default.init(instanceId, props.environment, props.region, props.returnUrl).then(_ => {
31
+ resolve(new KlarnaSignInSDK(props, instanceId));
32
+ }).catch(error => {
33
+ const errorInfo = error.userInfo;
34
+ const sdkError = {
35
+ isFatal: errorInfo.isFatal,
36
+ message: errorInfo.message,
37
+ name: errorInfo.name,
38
+ sessionId: errorInfo.sessionId,
39
+ params: errorInfo.params
40
+ };
41
+ reject(sdkError);
42
+ });
43
+ });
44
+ }
45
+ dispose() {
46
+ return _NativeKlarnaSignIn.default.dispose(this.instanceId);
47
+ }
48
+ signIn(clientId, scope, market, locale, tokenizationId) {
49
+ const scopes = scope.split(' ');
50
+ const tokenizationScopes = ['payment:customer_not_present', 'payment:customer_present'];
51
+ const isTokenizationScopeIncluded = tokenizationScopes.some(value => scopes.includes(value));
52
+ if (isTokenizationScopeIncluded && (!tokenizationId || tokenizationId.trim() === '')) {
53
+ return new Promise((_, reject) => {
54
+ const sdkError = {
55
+ isFatal: false,
56
+ message: `Found ${tokenizationScopes} in scope but tokenizationId is empty.`,
57
+ name: 'KlarnaSignInMissingTokenizationId'
58
+ };
59
+ reject(sdkError);
60
+ });
61
+ }
62
+ return new Promise((resolve, reject) => {
63
+ _NativeKlarnaSignIn.default.signIn(this.instanceId, clientId, scope, market, locale, tokenizationId).then(result => {
64
+ resolve(result);
65
+ }).catch(error => {
66
+ const errorInfo = error.userInfo;
67
+ const sdkError = {
68
+ isFatal: errorInfo.isFatal,
69
+ message: errorInfo.message,
70
+ name: errorInfo.name,
71
+ sessionId: errorInfo.sessionId,
72
+ params: errorInfo.params
73
+ };
74
+ reject(sdkError);
75
+ });
76
+ });
77
+ }
78
+ }
79
+ exports.KlarnaSignInSDK = KlarnaSignInSDK;
80
+ //# sourceMappingURL=KlarnaSignInSDK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_NativeKlarnaSignIn","_interopRequireDefault","require","obj","__esModule","default","KlarnaSignInSDK","constructor","props","instanceId","environment","region","returnUrl","createInstance","trim","Promise","_","reject","sdkError","isFatal","message","name","resolve","Math","random","toString","substring","RNKlarnaSignIn","init","then","catch","error","errorInfo","userInfo","sessionId","params","dispose","signIn","clientId","scope","market","locale","tokenizationId","scopes","split","tokenizationScopes","isTokenizationScopeIncluded","some","value","includes","result","exports"],"sourceRoot":"../../src","sources":["KlarnaSignInSDK.tsx"],"mappings":"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"}
@@ -36,4 +36,15 @@ Object.keys(_KlarnaCheckoutView).forEach(function (key) {
36
36
  }
37
37
  });
38
38
  });
39
+ var _KlarnaSignInSDK = require("./KlarnaSignInSDK");
40
+ Object.keys(_KlarnaSignInSDK).forEach(function (key) {
41
+ if (key === "default" || key === "__esModule") return;
42
+ if (key in exports && exports[key] === _KlarnaSignInSDK[key]) return;
43
+ Object.defineProperty(exports, key, {
44
+ enumerable: true,
45
+ get: function () {
46
+ return _KlarnaSignInSDK[key];
47
+ }
48
+ });
49
+ });
39
50
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_KlarnaPaymentView","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_KlarnaStandaloneWebView","_KlarnaCheckoutView"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,kBAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,kBAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,kBAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,wBAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,wBAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,wBAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,wBAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,mBAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,mBAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,mBAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,mBAAA,CAAAN,GAAA;IAAA;EAAA;AAAA"}
1
+ {"version":3,"names":["_KlarnaPaymentView","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_KlarnaStandaloneWebView","_KlarnaCheckoutView","_KlarnaSignInSDK"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,kBAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,kBAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,kBAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,wBAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,wBAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,wBAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,wBAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,mBAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,mBAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,mBAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,mBAAA,CAAAN,GAAA;IAAA;EAAA;AAAA;AACA,IAAAO,gBAAA,GAAAX,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAS,gBAAA,EAAAR,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAO,gBAAA,CAAAP,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAG,gBAAA,CAAAP,GAAA;IAAA;EAAA;AAAA"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactNative = require("react-native");
8
+ var _default = _reactNative.TurboModuleRegistry.getEnforcing('RNKlarnaSignIn');
9
+ exports.default = _default;
10
+ //# sourceMappingURL=NativeKlarnaSignIn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_default","TurboModuleRegistry","getEnforcing","exports","default"],"sourceRoot":"../../../src","sources":["specs/NativeKlarnaSignIn.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAuBpCC,gCAAmB,CAACC,YAAY,CAAO,gBAAgB,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAJ,QAAA"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.KlarnaEnvironment = void 0;
7
+ let KlarnaEnvironment = /*#__PURE__*/function (KlarnaEnvironment) {
8
+ KlarnaEnvironment["Playground"] = "playground";
9
+ KlarnaEnvironment["Production"] = "production";
10
+ return KlarnaEnvironment;
11
+ }({});
12
+ exports.KlarnaEnvironment = KlarnaEnvironment;
13
+ //# sourceMappingURL=KlarnaEnvironment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["KlarnaEnvironment","exports"],"sourceRoot":"../../../../src","sources":["types/common/KlarnaEnvironment.ts"],"mappings":";;;;;;IAAYA,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAAAC,OAAA,CAAAD,iBAAA,GAAAA,iBAAA"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.KlarnaRegion = void 0;
7
+ let KlarnaRegion = /*#__PURE__*/function (KlarnaRegion) {
8
+ KlarnaRegion["EU"] = "eu";
9
+ KlarnaRegion["NA"] = "na";
10
+ KlarnaRegion["OC"] = "oc";
11
+ return KlarnaRegion;
12
+ }({});
13
+ exports.KlarnaRegion = KlarnaRegion;
14
+ //# sourceMappingURL=KlarnaRegion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["KlarnaRegion","exports"],"sourceRoot":"../../../../src","sources":["types/common/KlarnaRegion.ts"],"mappings":";;;;;;IAAYA,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;AAAAC,OAAA,CAAAD,YAAA,GAAAA,YAAA"}
@@ -0,0 +1,72 @@
1
+ import RNKlarnaSignIn from './specs/NativeKlarnaSignIn';
2
+ // declare a class that receive the KlarnaSignInProps in the initializer and expose a method to sign in
3
+ export class KlarnaSignInSDK {
4
+ constructor(props, instanceId) {
5
+ this.environment = props.environment;
6
+ this.region = props.region;
7
+ this.returnUrl = props.returnUrl;
8
+ this.instanceId = instanceId;
9
+ }
10
+ static async createInstance(props) {
11
+ if (props.returnUrl.trim() === '') {
12
+ return new Promise((_, reject) => {
13
+ const sdkError = {
14
+ isFatal: true,
15
+ message: 'Invalid or null return URL',
16
+ name: 'KlarnaSignInMissingReturnUrl'
17
+ };
18
+ reject(sdkError);
19
+ });
20
+ }
21
+ return new Promise((resolve, reject) => {
22
+ let instanceId = Math.random().toString(36).substring(2, 15);
23
+ RNKlarnaSignIn.init(instanceId, props.environment, props.region, props.returnUrl).then(_ => {
24
+ resolve(new KlarnaSignInSDK(props, instanceId));
25
+ }).catch(error => {
26
+ const errorInfo = error.userInfo;
27
+ const sdkError = {
28
+ isFatal: errorInfo.isFatal,
29
+ message: errorInfo.message,
30
+ name: errorInfo.name,
31
+ sessionId: errorInfo.sessionId,
32
+ params: errorInfo.params
33
+ };
34
+ reject(sdkError);
35
+ });
36
+ });
37
+ }
38
+ dispose() {
39
+ return RNKlarnaSignIn.dispose(this.instanceId);
40
+ }
41
+ signIn(clientId, scope, market, locale, tokenizationId) {
42
+ const scopes = scope.split(' ');
43
+ const tokenizationScopes = ['payment:customer_not_present', 'payment:customer_present'];
44
+ const isTokenizationScopeIncluded = tokenizationScopes.some(value => scopes.includes(value));
45
+ if (isTokenizationScopeIncluded && (!tokenizationId || tokenizationId.trim() === '')) {
46
+ return new Promise((_, reject) => {
47
+ const sdkError = {
48
+ isFatal: false,
49
+ message: `Found ${tokenizationScopes} in scope but tokenizationId is empty.`,
50
+ name: 'KlarnaSignInMissingTokenizationId'
51
+ };
52
+ reject(sdkError);
53
+ });
54
+ }
55
+ return new Promise((resolve, reject) => {
56
+ RNKlarnaSignIn.signIn(this.instanceId, clientId, scope, market, locale, tokenizationId).then(result => {
57
+ resolve(result);
58
+ }).catch(error => {
59
+ const errorInfo = error.userInfo;
60
+ const sdkError = {
61
+ isFatal: errorInfo.isFatal,
62
+ message: errorInfo.message,
63
+ name: errorInfo.name,
64
+ sessionId: errorInfo.sessionId,
65
+ params: errorInfo.params
66
+ };
67
+ reject(sdkError);
68
+ });
69
+ });
70
+ }
71
+ }
72
+ //# sourceMappingURL=KlarnaSignInSDK.js.map