@primer-io/react-native 0.12.5 → 0.15.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.
Files changed (55) hide show
  1. package/android/build.gradle +2 -2
  2. package/android/gradle.properties +1 -1
  3. package/android/src/main/java/com/primerioreactnative/PrimerRN.kt +191 -152
  4. package/android/src/main/java/com/primerioreactnative/PrimerRNEventListener.kt +131 -86
  5. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerErrorRN.kt +3 -2
  6. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerEventsRN.kt +11 -0
  7. package/android/src/main/java/com/primerioreactnative/utils/ErrorHelper.kt +11 -0
  8. package/android/src/main/java/com/primerioreactnative/utils/PrimerImplementedRNCallbacks.kt +14 -0
  9. package/ios/DataModels/PrimerErrorRN.swift +32 -2
  10. package/ios/RNTPrimer.m +43 -0
  11. package/ios/RNTPrimer.swift +394 -0
  12. package/ios/ReactNative-Bridging-Header.h +1 -9
  13. package/ios/ReactNative.xcodeproj/project.pbxproj +44 -0
  14. package/lib/commonjs/Primer.js +221 -209
  15. package/lib/commonjs/Primer.js.map +1 -1
  16. package/lib/commonjs/RNPrimer.js +145 -0
  17. package/lib/commonjs/RNPrimer.js.map +1 -0
  18. package/lib/commonjs/index.js +1 -0
  19. package/lib/commonjs/index.js.map +1 -1
  20. package/lib/commonjs/models/primer-intent.js.map +1 -1
  21. package/lib/commonjs/models/utils/redirectScheme.js +4 -0
  22. package/lib/commonjs/models/utils/redirectScheme.js.map +1 -0
  23. package/lib/module/Primer.js +203 -209
  24. package/lib/module/Primer.js.map +1 -1
  25. package/lib/module/RNPrimer.js +136 -0
  26. package/lib/module/RNPrimer.js.map +1 -0
  27. package/lib/module/index.js +2 -1
  28. package/lib/module/index.js.map +1 -1
  29. package/lib/module/models/primer-intent.js.map +1 -1
  30. package/lib/module/models/utils/redirectScheme.js +2 -0
  31. package/lib/module/models/utils/redirectScheme.js.map +1 -0
  32. package/lib/typescript/Primer.d.ts +13 -0
  33. package/lib/typescript/RNPrimer.d.ts +24 -0
  34. package/lib/typescript/models/primer-callbacks.d.ts +7 -10
  35. package/lib/typescript/models/primer-config.d.ts +16 -13
  36. package/lib/typescript/models/primer-intent.d.ts +1 -1
  37. package/lib/typescript/models/primer-request.d.ts +2 -12
  38. package/lib/typescript/models/primer-settings.d.ts +3 -5
  39. package/lib/typescript/models/primer.d.ts +4 -4
  40. package/lib/typescript/models/utils/redirectScheme.d.ts +3 -0
  41. package/package.json +4 -1
  42. package/primer-io-react-native.podspec +2 -3
  43. package/src/Primer.ts +227 -177
  44. package/src/RNPrimer.ts +170 -0
  45. package/src/index.tsx +1 -0
  46. package/src/models/primer-callbacks.ts +9 -32
  47. package/src/models/primer-config.ts +23 -21
  48. package/src/models/primer-intent.ts +1 -1
  49. package/src/models/primer-request.ts +2 -16
  50. package/src/models/primer-settings.ts +3 -5
  51. package/src/models/primer.ts +5 -5
  52. package/src/models/utils/redirectScheme.ts +5 -0
  53. package/ios/PrimerRN+PrimerDelegate.swift +0 -147
  54. package/ios/PrimerRN.swift +0 -166
  55. package/ios/ReactNative.m +0 -34
@@ -5,230 +5,242 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.PrimerNativeMapping = void 0;
7
7
 
8
- var _reactNative = require("react-native");
8
+ var _RNPrimer = _interopRequireDefault(require("./RNPrimer"));
9
9
 
10
- var _utils = require("./utils");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
11
 
12
- const {
13
- PrimerRN: NativeModule
14
- } = _reactNative.NativeModules;
15
- const PrimerNativeMapping = {
16
- showUniversalCheckout(token, config) {
17
- configureIntent({
18
- vault: false,
19
- paymentMethod: 'Any'
20
- });
21
- configure(config);
22
- NativeModule.initialize(token);
23
- },
12
+ const resumeHandler = {
13
+ handleNewClientToken: async clientToken => {
14
+ try {
15
+ await _RNPrimer.default.handleNewClientToken(clientToken);
16
+ } catch (err) {
17
+ let primerError;
18
+
19
+ if (err instanceof Error) {
20
+ primerError = {
21
+ errorId: "react-native-bridge",
22
+ errorDescription: err.message
23
+ };
24
+ } else {
25
+ primerError = {
26
+ errorId: "react-native-bridge",
27
+ errorDescription: "unknown error"
28
+ };
29
+ }
24
30
 
25
- showVaultManager(token, config) {
26
- configureIntent({
27
- vault: true,
28
- paymentMethod: 'Any'
29
- });
30
- configure(config);
31
- NativeModule.initialize(token);
31
+ await _RNPrimer.default.handleError(primerError);
32
+ }
32
33
  },
34
+ handleError: async err => {
35
+ try {
36
+ const primerError = {
37
+ errorId: "react-native",
38
+ errorDescription: err.message
39
+ };
40
+ await _RNPrimer.default.handleError(primerError);
41
+ } catch (err) {
42
+ let primerError;
43
+
44
+ if (err instanceof Error) {
45
+ primerError = {
46
+ errorId: "react-native-bridge",
47
+ errorDescription: err.message
48
+ };
49
+ } else {
50
+ primerError = {
51
+ errorId: "react-native-bridge",
52
+ errorDescription: "unknown error"
53
+ };
54
+ }
33
55
 
34
- showPaymentMethod(token, intent, config) {
35
- configureIntent(intent);
36
- configure(config);
37
- NativeModule.initialize(token);
56
+ await _RNPrimer.default.handleError(primerError);
57
+ }
38
58
  },
59
+ handleSuccess: async () => {
60
+ try {
61
+ await _RNPrimer.default.handleSuccess();
62
+ } catch (err) {
63
+ let primerError;
64
+
65
+ if (err instanceof Error) {
66
+ primerError = {
67
+ errorId: "react-native-bridge",
68
+ errorDescription: err.message
69
+ };
70
+ } else {
71
+ primerError = {
72
+ errorId: "react-native-bridge",
73
+ errorDescription: "unknown error"
74
+ };
75
+ }
39
76
 
40
- // todo: refactor
41
- // fetchSavedPaymentInstruments(token: String, config: PrimerConfig): void {
42
- // configure(config);
43
- // NativeModule.fetchSavedPaymentInstruments(token);
44
- // },
45
- dispose() {
46
- NativeModule.dispose();
77
+ await _RNPrimer.default.handleError(primerError);
78
+ }
47
79
  }
48
-
49
80
  };
50
- exports.PrimerNativeMapping = PrimerNativeMapping;
81
+ const PrimerNativeMapping = {
82
+ showUniversalCheckout(clientToken, config) {
83
+ _RNPrimer.default.removeAllListeners();
84
+
85
+ if (config.settings || config.theme) {
86
+ _RNPrimer.default.configure(config.settings || null, config.theme || null);
87
+
88
+ let implementedRNCallbacks = {
89
+ // isClientTokenCallbackImplemented: (config.onClientTokenCallback !== undefined),
90
+ isTokenAddedToVaultImplemented: config.onTokenAddedToVault !== undefined,
91
+ isOnResumeSuccessImplemented: config.onResumeSuccess !== undefined,
92
+ isOnResumeErrorImplemented: config.onError !== undefined,
93
+ isOnCheckoutDismissedImplemented: config.onDismiss !== undefined,
94
+ isCheckoutFailedImplemented: config.onError !== undefined,
95
+ isClientSessionActionsImplemented: config.onClientSessionActions !== undefined
96
+ };
97
+
98
+ _RNPrimer.default.setImplementedRNCallbacks(implementedRNCallbacks).then(() => {
99
+ _RNPrimer.default.addListener('onClientSessionActions', data => {
100
+ const clientSessionActions = data;
101
+
102
+ if (config.onClientSessionActions) {
103
+ config.onClientSessionActions(clientSessionActions, resumeHandler);
104
+ }
105
+ });
51
106
 
52
- function configure(config) {
53
- configureTheme(config.theme);
54
- configureSettings(config.settings);
55
- configureOnVaultSuccess(config.onTokenAddedToVault);
56
- configureOnDismiss(config.onDismiss);
57
- configureOnError(config.onError);
58
- configureOnTokenizeSuccess(config.onTokenizeSuccess);
59
- configureOnClientSessionActions(config.onClientSessionActions);
60
- configureOnResumeSuccess(config.onResumeSuccess);
61
- }
62
-
63
- function configureSettings(settings = {}) {
64
- const data = JSON.stringify(settings);
65
- NativeModule.configureSettings(data);
66
- }
67
-
68
- function configureTheme(theme = {}) {
69
- const data = JSON.stringify(theme);
70
- NativeModule.configureTheme(data);
71
- }
72
-
73
- function configureIntent(intent = {
74
- vault: false,
75
- paymentMethod: 'Any'
76
- }) {
77
- const data = JSON.stringify(intent);
78
- NativeModule.configureIntent(data);
79
- }
80
-
81
- function resume(request) {
82
- const data = JSON.stringify(request);
83
- NativeModule.resume(data);
84
- }
85
-
86
- function configureOnTokenizeSuccess(callback = (_, __) => {}) {
87
- NativeModule.configureOnTokenizeSuccess(data => {
88
- try {
89
- const parsedData = JSON.parse(data);
90
- callback(parsedData, {
91
- handleError: error => resume({
92
- error,
93
- token: null
94
- }),
95
- handleSuccess: () => resume({
96
- error: null,
97
- token: null
98
- }),
99
- handleNewClientToken: token => resume({
100
- error: null,
101
- token
102
- }),
103
- // deprecated
104
- resumeWithError: error => resume({
105
- error,
106
- token: null
107
- }),
108
- resumeWithSuccess: token => resume({
109
- error: null,
110
- token
111
- })
112
- });
113
- } catch (e) {
114
- console.log('failed to parse json', e);
115
- }
116
- });
117
- }
118
-
119
- function actionResume(request) {
120
- const data = JSON.stringify(request);
121
- NativeModule.actionResume(data);
122
- }
123
- /**
124
- * Call @method configureOnClientSessionActions on the native bridge, passing
125
- * in a callback that the native side will call every time a client session
126
- * action is triggered.
127
- */
128
-
129
-
130
- function configureOnClientSessionActions(callback) // defined by integrating developer.
131
- {
132
- NativeModule.configureOnClientSessionActions(data => {
133
- try {
134
- // parse the client session action JSON string.
135
- const parsedData = JSON.parse(data);
136
-
137
- if (!callback) {
138
- /**
139
- * if @param callback is undefined immediately call the native bridge
140
- * and resume with null values. This will resume the SDK flow without
141
- * triggering extra configuration API fetch calls.
142
- */
143
- actionResume({
144
- error: null,
145
- token: null
107
+ _RNPrimer.default.addListener('onTokenizeSuccessCallback', data => {
108
+ const paymentInstrumentToken = data;
109
+
110
+ if (config.onTokenizeSuccess) {
111
+ config.onTokenizeSuccess(paymentInstrumentToken, resumeHandler);
112
+ }
146
113
  });
147
- } else {
148
- /**
149
- * send the parsed data back to the developer through the defined callback.
150
- * The developer will determine how to resume the flow using one of the provided
151
- * resume handlers.
152
- */
153
- callback(parsedData, {
154
- handleError: error => actionResume({
155
- error,
156
- token: null
157
- }),
158
- handleSuccess: () => actionResume({
159
- error: null,
160
- token: null
161
- }),
162
- handleNewClientToken: token => actionResume({
163
- error: null,
164
- token
165
- }),
166
- // deprecated, remove in next major version update.
167
- resumeWithError: error => actionResume({
168
- error,
169
- token: null
170
- }),
171
- resumeWithSuccess: token => actionResume({
172
- error: null,
173
- token
174
- })
114
+
115
+ _RNPrimer.default.addListener('onResumeSuccess', data => {
116
+ const resumeToken = data.resumeToken;
117
+
118
+ if (config.onResumeSuccess) {
119
+ config.onResumeSuccess(resumeToken, resumeHandler);
120
+ }
175
121
  });
176
- } // reset the client session action callback (native bridge callbacks are disposed once they're invoked).
177
122
 
123
+ _RNPrimer.default.addListener('onCheckoutDismissed', _ => {
124
+ if (config.onDismiss) {
125
+ config.onDismiss();
126
+ }
127
+ });
178
128
 
179
- configureOnClientSessionActions(callback);
180
- } catch (e) {
181
- // log error if the client session action JSON string cannot be parsed (this should never happen!).
182
- console.error('[OnClientSessionActions]', 'failed to parse json', e);
183
- }
184
- });
185
- }
129
+ _RNPrimer.default.addListener('onError', data => {
130
+ const err = data.error;
186
131
 
187
- function configureOnResumeSuccess(callback = (_, __) => {}) {
188
- NativeModule.configureOnResumeSuccess(paymentMethodToken => {
189
- try {
190
- callback(paymentMethodToken, {
191
- handleError: error => resume({
192
- error,
193
- token: null
194
- }),
195
- handleSuccess: () => resume({
196
- error: null,
197
- token: null
198
- }),
199
- handleNewClientToken: token => resume({
200
- error: null,
201
- token
202
- }),
203
- // deprecated
204
- resumeWithError: error => resume({
205
- error,
206
- token: null
207
- }),
208
- resumeWithSuccess: token => resume({
209
- error: null,
210
- token
211
- })
132
+ if (config.onError) {
133
+ config.onError(err, resumeHandler);
134
+ }
135
+ });
136
+
137
+ _RNPrimer.default.showUniversalCheckout(clientToken);
138
+ }).catch(err => {
139
+ console.error(err);
212
140
  });
213
- } catch (e) {
214
- console.log('failed to parse json', e);
141
+ } // RNPrimer.addListener('onClientTokenCallback', _ => {
142
+ // if (config.onClientTokenCallback) {
143
+ // config.onClientTokenCallback(resumeHandler);
144
+ // }
145
+ // });
146
+
147
+ },
148
+
149
+ showVaultManager(clientToken, config) {
150
+ _RNPrimer.default.removeAllListeners();
151
+
152
+ if (config.settings || config.theme) {
153
+ _RNPrimer.default.configure(config.settings || null, config.theme || null);
154
+
155
+ let implementedRNCallbacks = {
156
+ // isClientTokenCallbackImplemented: (config.onClientTokenCallback !== undefined),
157
+ isTokenAddedToVaultImplemented: config.onTokenAddedToVault !== undefined,
158
+ isOnResumeSuccessImplemented: config.onResumeSuccess !== undefined,
159
+ isOnResumeErrorImplemented: config.onError !== undefined,
160
+ isOnCheckoutDismissedImplemented: config.onDismiss !== undefined,
161
+ isCheckoutFailedImplemented: config.onError !== undefined,
162
+ isClientSessionActionsImplemented: config.onClientSessionActions !== undefined
163
+ };
164
+
165
+ _RNPrimer.default.setImplementedRNCallbacks(implementedRNCallbacks);
166
+ } // RNPrimer.addListener('onClientTokenCallback', _ => {
167
+ // if (config.onClientTokenCallback) {
168
+ // config.onClientTokenCallback(resumeHandler);
169
+ // }
170
+ // });
171
+
172
+
173
+ _RNPrimer.default.addListener('onClientSessionActions', data => {
174
+ const clientSessionActions = data;
175
+
176
+ if (config.onClientSessionActions) {
177
+ config.onClientSessionActions(clientSessionActions, resumeHandler);
178
+ } else {
179
+ _RNPrimer.default.handleSuccess();
180
+ }
181
+ });
182
+
183
+ _RNPrimer.default.addListener('onTokenizeSuccessCallback', data => {
184
+ const paymentInstrumentToken = data;
185
+
186
+ if (config.onTokenizeSuccess) {
187
+ config.onTokenizeSuccess(paymentInstrumentToken, resumeHandler);
188
+ }
189
+ });
190
+
191
+ _RNPrimer.default.addListener('onResumeSuccess', data => {
192
+ const resumeToken = data.resumeToken;
193
+
194
+ if (config.onResumeSuccess) {
195
+ config.onResumeSuccess(resumeToken, resumeHandler);
196
+ }
197
+ });
198
+
199
+ _RNPrimer.default.addListener('onCheckoutDismissed', () => {
200
+ if (config.onDismiss) {
201
+ config.onDismiss();
202
+ }
203
+ });
204
+
205
+ _RNPrimer.default.addListener('onError', data => {
206
+ const err = data.error;
207
+
208
+ if (config.onError) {
209
+ config.onError(err, resumeHandler);
210
+ }
211
+ });
212
+
213
+ _RNPrimer.default.showVaultManager(clientToken);
214
+ },
215
+
216
+ showPaymentMethod(clientToken, intent, config) {
217
+ _RNPrimer.default.removeAllListeners();
218
+
219
+ if (config.settings || config.theme) {
220
+ _RNPrimer.default.configure(config.settings || null, config.theme || null);
215
221
  }
216
- });
217
- }
218
-
219
- function configureOnVaultSuccess(callback = _ => {}) {
220
- NativeModule.configureOnVaultSuccess(data => {
221
- (0, _utils.parseCallback)(data, callback);
222
- });
223
- }
224
-
225
- function configureOnDismiss(callback = () => {}) {
226
- NativeModule.configureOnDismiss(_ => callback());
227
- }
228
-
229
- function configureOnError(callback = _ => {}) {
230
- NativeModule.configureOnPrimerError(data => {
231
- (0, _utils.parseCallback)(data, callback);
232
- });
233
- }
222
+
223
+ let implementedRNCallbacks = {
224
+ // isClientTokenCallbackImplemented: (config.onClientTokenCallback !== undefined),
225
+ isTokenAddedToVaultImplemented: config.onTokenAddedToVault !== undefined,
226
+ isOnResumeSuccessImplemented: config.onResumeSuccess !== undefined,
227
+ isOnResumeErrorImplemented: config.onError !== undefined,
228
+ isOnCheckoutDismissedImplemented: config.onDismiss !== undefined,
229
+ isCheckoutFailedImplemented: config.onError !== undefined,
230
+ isClientSessionActionsImplemented: config.onClientSessionActions !== undefined
231
+ };
232
+
233
+ _RNPrimer.default.setImplementedRNCallbacks(implementedRNCallbacks);
234
+
235
+ _RNPrimer.default.showPaymentMethod(clientToken, intent.paymentMethod, intent.vault === true ? "vault" : "checkout");
236
+ },
237
+
238
+ dispose() {
239
+ _RNPrimer.default.removeAllListeners();
240
+
241
+ _RNPrimer.default.dispose();
242
+ }
243
+
244
+ };
245
+ exports.PrimerNativeMapping = PrimerNativeMapping;
234
246
  //# sourceMappingURL=Primer.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["Primer.ts"],"names":["PrimerRN","NativeModule","NativeModules","PrimerNativeMapping","showUniversalCheckout","token","config","configureIntent","vault","paymentMethod","configure","initialize","showVaultManager","showPaymentMethod","intent","dispose","configureTheme","theme","configureSettings","settings","configureOnVaultSuccess","onTokenAddedToVault","configureOnDismiss","onDismiss","configureOnError","onError","configureOnTokenizeSuccess","onTokenizeSuccess","configureOnClientSessionActions","onClientSessionActions","configureOnResumeSuccess","onResumeSuccess","data","JSON","stringify","resume","request","callback","_","__","parsedData","parse","handleError","error","handleSuccess","handleNewClientToken","resumeWithError","resumeWithSuccess","e","console","log","actionResume","paymentMethodToken","configureOnPrimerError"],"mappings":"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","sourcesContent":["import { NativeModules } from 'react-native';\nimport type { ClientSessionActionsRequest } from './models/client-session-actions-request';\nimport type { PaymentInstrumentToken } from './models/payment-instrument-token';\nimport type { IPrimer } from './models/primer';\nimport type {\n OnClientSessionActionsCallback,\n OnDismissCallback,\n OnPrimerErrorCallback,\n OnResumeSuccessCallback,\n OnTokenAddedToVaultCallback,\n OnTokenizeSuccessCallback,\n} from './models/primer-callbacks';\nimport type { PrimerConfig } from './models/primer-config';\nimport type { PrimerError } from './models/primer-error';\nimport type {\n PrimerIntent,\n PrimerPaymentMethodIntent,\n} from './models/primer-intent';\nimport type { PrimerSettings } from './models/primer-settings';\nimport type { PrimerTheme } from './models/primer-theme';\nimport { parseCallback } from './utils';\n\nconst { PrimerRN: NativeModule } = NativeModules;\n\nexport const PrimerNativeMapping: IPrimer = {\n showUniversalCheckout(token: String, config: PrimerConfig): void {\n configureIntent({ vault: false, paymentMethod: 'Any' });\n configure(config);\n NativeModule.initialize(token);\n },\n\n showVaultManager(token: String, config: PrimerConfig): void {\n configureIntent({ vault: true, paymentMethod: 'Any' });\n configure(config);\n NativeModule.initialize(token);\n },\n\n showPaymentMethod(\n token: String,\n intent: PrimerPaymentMethodIntent,\n config: PrimerConfig\n ): void {\n configureIntent(intent);\n configure(config);\n NativeModule.initialize(token);\n },\n\n // todo: refactor\n // fetchSavedPaymentInstruments(token: String, config: PrimerConfig): void {\n // configure(config);\n // NativeModule.fetchSavedPaymentInstruments(token);\n // },\n\n dispose(): void {\n NativeModule.dispose();\n },\n};\n\nfunction configure(config: PrimerConfig): void {\n configureTheme(config.theme);\n configureSettings(config.settings);\n configureOnVaultSuccess(config.onTokenAddedToVault);\n configureOnDismiss(config.onDismiss);\n configureOnError(config.onError);\n configureOnTokenizeSuccess(config.onTokenizeSuccess);\n configureOnClientSessionActions(config.onClientSessionActions);\n configureOnResumeSuccess(config.onResumeSuccess);\n}\n\nfunction configureSettings(settings: PrimerSettings = {}): void {\n const data = JSON.stringify(settings);\n NativeModule.configureSettings(data);\n}\n\nfunction configureTheme(theme: PrimerTheme = {}): void {\n const data = JSON.stringify(theme);\n NativeModule.configureTheme(data);\n}\n\nfunction configureIntent(\n intent: PrimerIntent = { vault: false, paymentMethod: 'Any' }\n): void {\n const data = JSON.stringify(intent);\n NativeModule.configureIntent(data);\n}\n\nfunction resume(request: ResumeRequest) {\n const data = JSON.stringify(request);\n NativeModule.resume(data);\n}\n\nfunction configureOnTokenizeSuccess(\n callback: OnTokenizeSuccessCallback = (_, __) => {}\n) {\n NativeModule.configureOnTokenizeSuccess((data: any) => {\n try {\n const parsedData = JSON.parse(data) as PaymentInstrumentToken;\n callback(parsedData, {\n handleError: (error) => resume({ error, token: null }),\n handleSuccess: () => resume({ error: null, token: null }),\n handleNewClientToken: (token) => resume({ error: null, token }),\n // deprecated\n resumeWithError: (error) => resume({ error, token: null }),\n resumeWithSuccess: (token) => resume({ error: null, token }),\n });\n } catch (e) {\n console.log('failed to parse json', e);\n }\n });\n}\n\nfunction actionResume(request: ResumeRequest) {\n const data = JSON.stringify(request);\n NativeModule.actionResume(data);\n}\n\n/**\n * Call @method configureOnClientSessionActions on the native bridge, passing\n * in a callback that the native side will call every time a client session\n * action is triggered.\n */\nfunction configureOnClientSessionActions(\n callback?: OnClientSessionActionsCallback // defined by integrating developer.\n) {\n NativeModule.configureOnClientSessionActions((data: any) => {\n try {\n // parse the client session action JSON string.\n const parsedData = JSON.parse(data) as ClientSessionActionsRequest;\n\n if (!callback) {\n /**\n * if @param callback is undefined immediately call the native bridge\n * and resume with null values. This will resume the SDK flow without\n * triggering extra configuration API fetch calls.\n */\n actionResume({ error: null, token: null });\n } else {\n /**\n * send the parsed data back to the developer through the defined callback.\n * The developer will determine how to resume the flow using one of the provided\n * resume handlers.\n */\n callback(parsedData, {\n handleError: (error) => actionResume({ error, token: null }),\n handleSuccess: () => actionResume({ error: null, token: null }),\n handleNewClientToken: (token) => actionResume({ error: null, token }),\n // deprecated, remove in next major version update.\n resumeWithError: (error) => actionResume({ error, token: null }),\n resumeWithSuccess: (token) => actionResume({ error: null, token }),\n });\n }\n\n // reset the client session action callback (native bridge callbacks are disposed once they're invoked).\n configureOnClientSessionActions(callback);\n } catch (e) {\n // log error if the client session action JSON string cannot be parsed (this should never happen!).\n console.error('[OnClientSessionActions]', 'failed to parse json', e);\n }\n });\n}\n\nfunction configureOnResumeSuccess(\n callback: OnResumeSuccessCallback = (_, __) => {}\n) {\n NativeModule.configureOnResumeSuccess((paymentMethodToken: any) => {\n try {\n callback(paymentMethodToken, {\n handleError: (error) => resume({ error, token: null }),\n handleSuccess: () => resume({ error: null, token: null }),\n handleNewClientToken: (token) => resume({ error: null, token }),\n // deprecated\n resumeWithError: (error) => resume({ error, token: null }),\n resumeWithSuccess: (token) => resume({ error: null, token }),\n });\n } catch (e) {\n console.log('failed to parse json', e);\n }\n });\n}\n\nfunction configureOnVaultSuccess(\n callback: OnTokenAddedToVaultCallback = (_) => {}\n) {\n NativeModule.configureOnVaultSuccess((data: any) => {\n parseCallback<PaymentInstrumentToken>(data, callback);\n });\n}\n\nfunction configureOnDismiss(callback: OnDismissCallback = () => {}) {\n NativeModule.configureOnDismiss((_: any) => callback());\n}\n\nfunction configureOnError(callback: OnPrimerErrorCallback = (_) => {}) {\n NativeModule.configureOnPrimerError((data: any) => {\n parseCallback<PrimerError>(data, callback);\n });\n}\n\ninterface ResumeRequest {\n error: string | null;\n token: string | null;\n}\n"]}
1
+ {"version":3,"sources":["Primer.ts"],"names":["resumeHandler","handleNewClientToken","clientToken","RNPrimer","err","primerError","Error","errorId","errorDescription","message","handleError","handleSuccess","PrimerNativeMapping","showUniversalCheckout","config","removeAllListeners","settings","theme","configure","implementedRNCallbacks","isTokenAddedToVaultImplemented","onTokenAddedToVault","undefined","isOnResumeSuccessImplemented","onResumeSuccess","isOnResumeErrorImplemented","onError","isOnCheckoutDismissedImplemented","onDismiss","isCheckoutFailedImplemented","isClientSessionActionsImplemented","onClientSessionActions","setImplementedRNCallbacks","then","addListener","data","clientSessionActions","paymentInstrumentToken","onTokenizeSuccess","resumeToken","_","error","catch","console","showVaultManager","showPaymentMethod","intent","paymentMethod","vault","dispose"],"mappings":"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","sourcesContent":["import type { PaymentInstrumentToken } from './models/payment-instrument-token';\nimport type { IPrimer } from './models/primer';\nimport type { IPrimerConfig } from './models/primer-config';\nimport type { PrimerPaymentMethodIntent } from './models/primer-intent';\nimport type { PrimerResumeHandler } from './models/primer-request';\nimport RNPrimer, { IPrimerError } from './RNPrimer';\n\nconst resumeHandler: PrimerResumeHandler = {\n handleNewClientToken: async (clientToken) => {\n try {\n await RNPrimer.handleNewClientToken(clientToken);\n } catch (err) {\n let primerError: IPrimerError;\n if (err instanceof Error) {\n primerError = {\n errorId: \"react-native-bridge\",\n errorDescription: err.message\n }\n } else {\n primerError = {\n errorId: \"react-native-bridge\",\n errorDescription: \"unknown error\"\n }\n }\n await RNPrimer.handleError(primerError);\n }\n },\n handleError: async (err) => {\n try {\n const primerError: IPrimerError = {\n errorId: \"react-native\",\n errorDescription: err.message\n }\n await RNPrimer.handleError(primerError);\n } catch (err) {\n let primerError: IPrimerError;\n if (err instanceof Error) {\n primerError = {\n errorId: \"react-native-bridge\",\n errorDescription: err.message\n }\n } else {\n primerError = {\n errorId: \"react-native-bridge\",\n errorDescription: \"unknown error\"\n }\n }\n await RNPrimer.handleError(primerError);\n }\n },\n handleSuccess: async () => {\n try {\n await RNPrimer.handleSuccess();\n } catch (err) {\n let primerError: IPrimerError;\n if (err instanceof Error) {\n primerError = {\n errorId: \"react-native-bridge\",\n errorDescription: err.message\n }\n } else {\n primerError = {\n errorId: \"react-native-bridge\",\n errorDescription: \"unknown error\"\n }\n }\n await RNPrimer.handleError(primerError);\n }\n }\n}\n\nexport interface IClientSessionAction {\n type:\n | 'SELECT_PAYMENT_METHOD'\n | 'UNSELECT_PAYMENT_METHOD'\n | 'SET_BILLING_ADDRESS';\n params?: IActionParams;\n}\n\ninterface IActionParams {\n billingAddress: Record<string, string | null>;\n paymentMethodType?: string;\n binData?: IBinData;\n}\n\ninterface IBinData {\n network: string;\n}\n\nexport const PrimerNativeMapping: IPrimer = {\n\n showUniversalCheckout(clientToken: string, config: IPrimerConfig): void {\n RNPrimer.removeAllListeners();\n\n if (config.settings || config.theme) {\n RNPrimer.configure(config.settings || null, config.theme || null);\n\n let implementedRNCallbacks: any = {\n // isClientTokenCallbackImplemented: (config.onClientTokenCallback !== undefined),\n isTokenAddedToVaultImplemented: (config.onTokenAddedToVault !== undefined),\n isOnResumeSuccessImplemented: (config.onResumeSuccess !== undefined),\n isOnResumeErrorImplemented: (config.onError !== undefined),\n isOnCheckoutDismissedImplemented: (config.onDismiss !== undefined),\n isCheckoutFailedImplemented: (config.onError !== undefined),\n isClientSessionActionsImplemented: (config.onClientSessionActions !== undefined)\n };\n\n RNPrimer.setImplementedRNCallbacks(implementedRNCallbacks)\n .then(() => {\n RNPrimer.addListener('onClientSessionActions', data => {\n const clientSessionActions: IClientSessionAction[] = data;\n if (config.onClientSessionActions) {\n config.onClientSessionActions(clientSessionActions, resumeHandler);\n }\n });\n\n RNPrimer.addListener('onTokenizeSuccessCallback', data => {\n const paymentInstrumentToken: PaymentInstrumentToken = data;\n if (config.onTokenizeSuccess) {\n config.onTokenizeSuccess(paymentInstrumentToken, resumeHandler);\n }\n });\n\n RNPrimer.addListener('onResumeSuccess', data => {\n const resumeToken: string = data.resumeToken;\n if (config.onResumeSuccess) {\n config.onResumeSuccess(resumeToken, resumeHandler);\n }\n });\n\n RNPrimer.addListener('onCheckoutDismissed', _ => {\n if (config.onDismiss) {\n config.onDismiss();\n }\n });\n\n RNPrimer.addListener('onError', data => {\n const err: IPrimerError = data.error;\n if (config.onError) {\n config.onError(err, resumeHandler);\n }\n });\n\n RNPrimer.showUniversalCheckout(clientToken);\n })\n .catch( err => {\n console.error(err);\n })\n }\n\n // RNPrimer.addListener('onClientTokenCallback', _ => {\n // if (config.onClientTokenCallback) {\n // config.onClientTokenCallback(resumeHandler);\n // }\n // });\n },\n\n showVaultManager(clientToken: string, config: IPrimerConfig): void {\n RNPrimer.removeAllListeners();\n\n if (config.settings || config.theme) {\n RNPrimer.configure(config.settings || null, config.theme || null);\n\n let implementedRNCallbacks: any = {\n // isClientTokenCallbackImplemented: (config.onClientTokenCallback !== undefined),\n isTokenAddedToVaultImplemented: (config.onTokenAddedToVault !== undefined),\n isOnResumeSuccessImplemented: (config.onResumeSuccess !== undefined),\n isOnResumeErrorImplemented: (config.onError !== undefined),\n isOnCheckoutDismissedImplemented: (config.onDismiss !== undefined),\n isCheckoutFailedImplemented: (config.onError !== undefined),\n isClientSessionActionsImplemented: (config.onClientSessionActions !== undefined)\n };\n\n RNPrimer.setImplementedRNCallbacks(implementedRNCallbacks);\n }\n\n // RNPrimer.addListener('onClientTokenCallback', _ => {\n // if (config.onClientTokenCallback) {\n // config.onClientTokenCallback(resumeHandler);\n // }\n // });\n\n RNPrimer.addListener('onClientSessionActions', data => {\n const clientSessionActions: IClientSessionAction[] = data;\n if (config.onClientSessionActions) {\n config.onClientSessionActions(clientSessionActions, resumeHandler);\n } else {\n RNPrimer.handleSuccess();\n }\n });\n\n RNPrimer.addListener('onTokenizeSuccessCallback', data => {\n const paymentInstrumentToken: PaymentInstrumentToken = data;\n if (config.onTokenizeSuccess) {\n config.onTokenizeSuccess(paymentInstrumentToken, resumeHandler);\n }\n });\n\n RNPrimer.addListener('onResumeSuccess', data => {\n const resumeToken: string = data.resumeToken;\n if (config.onResumeSuccess) {\n config.onResumeSuccess(resumeToken, resumeHandler);\n }\n });\n\n RNPrimer.addListener('onCheckoutDismissed', () => {\n if (config.onDismiss) {\n config.onDismiss();\n }\n });\n\n RNPrimer.addListener('onError', data => {\n const err: IPrimerError = data.error;\n if (config.onError) {\n config.onError(err, resumeHandler);\n }\n });\n\n RNPrimer.showVaultManager(clientToken);\n },\n\n showPaymentMethod(\n clientToken: string,\n intent: PrimerPaymentMethodIntent,\n config: IPrimerConfig\n ): void {\n RNPrimer.removeAllListeners();\n\n if (config.settings || config.theme) {\n RNPrimer.configure(config.settings || null, config.theme || null);\n }\n\n let implementedRNCallbacks: any = {\n // isClientTokenCallbackImplemented: (config.onClientTokenCallback !== undefined),\n isTokenAddedToVaultImplemented: (config.onTokenAddedToVault !== undefined),\n isOnResumeSuccessImplemented: (config.onResumeSuccess !== undefined),\n isOnResumeErrorImplemented: (config.onError !== undefined),\n isOnCheckoutDismissedImplemented: (config.onDismiss !== undefined),\n isCheckoutFailedImplemented: (config.onError !== undefined),\n isClientSessionActionsImplemented: (config.onClientSessionActions !== undefined)\n };\n\n RNPrimer.setImplementedRNCallbacks(implementedRNCallbacks);\n RNPrimer.showPaymentMethod(clientToken, intent.paymentMethod, intent.vault === true ? \"vault\" : \"checkout\");\n },\n\n dispose(): void {\n RNPrimer.removeAllListeners();\n RNPrimer.dispose();\n },\n\n};\n"]}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _reactNative = require("react-native");
9
+
10
+ const {
11
+ NativePrimer
12
+ } = _reactNative.NativeModules;
13
+ const eventEmitter = new _reactNative.NativeEventEmitter(NativePrimer);
14
+ const RNPrimer = {
15
+ ///////////////////////////////////////////
16
+ // Event Emitter
17
+ ///////////////////////////////////////////
18
+ addListener: (eventType, listener) => {
19
+ eventEmitter.addListener(eventType, listener);
20
+ },
21
+ removeListener: (eventType, listener) => {
22
+ eventEmitter.removeListener(eventType, listener);
23
+ },
24
+
25
+ removeAllListenersForEvent(eventType) {
26
+ eventEmitter.removeAllListeners(eventType);
27
+ },
28
+
29
+ removeAllListeners() {
30
+ eventEmitter.removeAllListeners('onClientTokenCallback');
31
+ eventEmitter.removeAllListeners('onClientSessionActions');
32
+ eventEmitter.removeAllListeners('onTokenizeSuccessCallback');
33
+ eventEmitter.removeAllListeners('onResumeSuccess');
34
+ eventEmitter.removeAllListeners('onCheckoutDismissed');
35
+ eventEmitter.removeAllListeners('onError');
36
+ eventEmitter.removeAllListeners('detectImplementedRNCallbacks');
37
+ },
38
+
39
+ ///////////////////////////////////////////
40
+ // Native API
41
+ ///////////////////////////////////////////
42
+ configure: (settings, theme) => {
43
+ return new Promise(async (resolve, reject) => {
44
+ try {
45
+ if (settings === null && theme === null) {// Do nothing, SDK will use default settings and theme.
46
+ } else if (settings && theme === null) {
47
+ await NativePrimer.configureWithSettings(JSON.stringify(settings));
48
+ } else if (settings === null && theme) {
49
+ await NativePrimer.configureWithTheme(JSON.stringify(theme));
50
+ } else {
51
+ await NativePrimer.configureWithSettings(JSON.stringify(settings));
52
+ await NativePrimer.configureWithTheme(JSON.stringify(theme));
53
+ }
54
+
55
+ resolve();
56
+ } catch (err) {
57
+ reject(err);
58
+ }
59
+ });
60
+ },
61
+ showUniversalCheckout: clientToken => {
62
+ return new Promise(async (resolve, reject) => {
63
+ try {
64
+ if (clientToken) {
65
+ await NativePrimer.showUniversalCheckoutWithClientToken(clientToken);
66
+ } else {
67
+ await NativePrimer.showUniversalCheckout();
68
+ }
69
+
70
+ resolve();
71
+ } catch (err) {
72
+ reject(err);
73
+ }
74
+ });
75
+ },
76
+ showVaultManager: clientToken => {
77
+ return new Promise(async (resolve, reject) => {
78
+ try {
79
+ if (clientToken) {
80
+ await NativePrimer.showVaultManager(clientToken);
81
+ } else {
82
+ await NativePrimer.showVaultManager();
83
+ }
84
+
85
+ resolve();
86
+ } catch (err) {
87
+ reject(err);
88
+ }
89
+ });
90
+ },
91
+ showPaymentMethod: (clientToken, paymentMethodType, intent) => {
92
+ return new Promise(async (resolve, reject) => {
93
+ try {
94
+ await NativePrimer.showPaymentMethod(clientToken, paymentMethodType, intent);
95
+ resolve();
96
+ } catch (err) {
97
+ reject(err);
98
+ }
99
+ });
100
+ },
101
+ handleNewClientToken: clientToken => {
102
+ return new Promise(async (resolve, reject) => {
103
+ try {
104
+ await NativePrimer.handleNewClientToken(clientToken);
105
+ resolve();
106
+ } catch (err) {
107
+ reject(err);
108
+ }
109
+ });
110
+ },
111
+ handleError: err => {
112
+ return new Promise(async (resolve, reject) => {
113
+ try {
114
+ await NativePrimer.handleError(JSON.stringify(err));
115
+ resolve();
116
+ } catch (err) {
117
+ reject(err);
118
+ }
119
+ });
120
+ },
121
+ handleSuccess: () => {
122
+ return new Promise(async (resolve, reject) => {
123
+ try {
124
+ await NativePrimer.handleSuccess();
125
+ resolve();
126
+ } catch (err) {
127
+ reject(err);
128
+ }
129
+ });
130
+ },
131
+ setImplementedRNCallbacks: implementedRNCallbacks => {
132
+ return new Promise(async (resolve, reject) => {
133
+ try {
134
+ await NativePrimer.setImplementedRNCallbacks(JSON.stringify(implementedRNCallbacks));
135
+ resolve();
136
+ } catch (err) {
137
+ reject(err);
138
+ }
139
+ });
140
+ },
141
+ dispose: () => {}
142
+ };
143
+ var _default = RNPrimer;
144
+ exports.default = _default;
145
+ //# sourceMappingURL=RNPrimer.js.map