@primer-io/react-native 0.13.0-beta.1 → 0.15.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 (100) 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 +192 -153
  4. package/android/src/main/java/com/primerioreactnative/PrimerRNEventListener.kt +131 -86
  5. package/android/src/main/java/com/primerioreactnative/ReactNativePackage.kt +3 -14
  6. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerErrorRN.kt +3 -4
  7. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerEventsRN.kt +11 -0
  8. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerSettingsRN.kt +4 -3
  9. package/android/src/main/java/com/primerioreactnative/utils/ErrorHelper.kt +11 -0
  10. package/android/src/main/java/com/primerioreactnative/utils/PrimerImplementedRNCallbacks.kt +14 -0
  11. package/ios/DataModels/PrimerErrorRN.swift +1 -1
  12. package/ios/DataModels/PrimerSettingsRN.swift +6 -0
  13. package/ios/RNTPrimer.m +43 -0
  14. package/ios/RNTPrimer.swift +394 -0
  15. package/ios/ReactNative-Bridging-Header.h +3 -0
  16. package/ios/ReactNative.xcodeproj/project.pbxproj +44 -0
  17. package/lib/commonjs/Primer.js +220 -209
  18. package/lib/commonjs/Primer.js.map +1 -1
  19. package/lib/commonjs/RNPrimer.js +145 -0
  20. package/lib/commonjs/RNPrimer.js.map +1 -0
  21. package/lib/commonjs/index.js +1 -28
  22. package/lib/commonjs/index.js.map +1 -1
  23. package/lib/commonjs/models/primer-intent.js.map +1 -1
  24. package/lib/commonjs/models/utils/redirectScheme.js +4 -0
  25. package/lib/commonjs/models/utils/redirectScheme.js.map +1 -0
  26. package/lib/module/Primer.js +204 -210
  27. package/lib/module/Primer.js.map +1 -1
  28. package/lib/module/RNPrimer.js +136 -0
  29. package/lib/module/RNPrimer.js.map +1 -0
  30. package/lib/module/index.js +3 -4
  31. package/lib/module/index.js.map +1 -1
  32. package/lib/module/models/primer-intent.js.map +1 -1
  33. package/lib/module/models/utils/redirectScheme.js +2 -0
  34. package/lib/module/models/utils/redirectScheme.js.map +1 -0
  35. package/lib/typescript/Primer.d.ts +13 -0
  36. package/lib/typescript/RNPrimer.d.ts +24 -0
  37. package/lib/typescript/index.d.ts +1 -3
  38. package/lib/typescript/models/primer-callbacks.d.ts +7 -9
  39. package/lib/typescript/models/primer-config.d.ts +16 -13
  40. package/lib/typescript/models/primer-intent.d.ts +1 -1
  41. package/lib/typescript/models/primer-request.d.ts +2 -12
  42. package/lib/typescript/models/primer-settings.d.ts +5 -6
  43. package/lib/typescript/models/primer.d.ts +4 -4
  44. package/lib/typescript/models/utils/redirectScheme.d.ts +3 -0
  45. package/package.json +4 -1
  46. package/primer-io-react-native.podspec +2 -3
  47. package/src/Primer.ts +227 -178
  48. package/src/RNPrimer.ts +170 -0
  49. package/src/index.tsx +2 -3
  50. package/src/models/primer-callbacks.ts +9 -27
  51. package/src/models/primer-config.ts +23 -20
  52. package/src/models/primer-intent.ts +1 -1
  53. package/src/models/primer-request.ts +2 -16
  54. package/src/models/primer-settings.ts +5 -6
  55. package/src/models/primer.ts +5 -5
  56. package/src/models/utils/redirectScheme.ts +5 -0
  57. package/android/src/main/java/com/primerioreactnative/PrimerCardNumberEditTextManager.kt +0 -83
  58. package/android/src/main/java/com/primerioreactnative/PrimerHeadlessUniversalCheckout.kt +0 -201
  59. package/android/src/main/java/com/primerioreactnative/huc/assets/AssetsManager.kt +0 -56
  60. package/android/src/main/java/com/primerioreactnative/huc/events/PrimerHeadlessUniversalCheckoutEvent.kt +0 -11
  61. package/android/src/main/java/com/primerioreactnative/huc/extensions/Map.kt +0 -10
  62. package/ios/Core/PrimerRN+PrimerDelegate.swift +0 -148
  63. package/ios/Core/PrimerRN.m +0 -34
  64. package/ios/Core/PrimerRN.swift +0 -168
  65. package/ios/Core/ReactNative-Bridging-Header.h +0 -13
  66. package/ios/Headless Universal Checkout/RNTPrimerCardNumberInputElementManager.m +0 -23
  67. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.m +0 -30
  68. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.swift +0 -241
  69. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.m +0 -14
  70. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.swift +0 -117
  71. package/lib/commonjs/PrimerInput.js +0 -80
  72. package/lib/commonjs/PrimerInput.js.map +0 -1
  73. package/lib/commonjs/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js +0 -14
  74. package/lib/commonjs/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +0 -1
  75. package/lib/commonjs/headless_checkout/NativePrimerHeadlessUniversalCheckout.js +0 -73
  76. package/lib/commonjs/headless_checkout/NativePrimerHeadlessUniversalCheckout.js.map +0 -1
  77. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js +0 -119
  78. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +0 -1
  79. package/lib/commonjs/headless_checkout/types.js +0 -2
  80. package/lib/commonjs/headless_checkout/types.js.map +0 -1
  81. package/lib/module/PrimerInput.js +0 -46
  82. package/lib/module/PrimerInput.js.map +0 -1
  83. package/lib/module/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js +0 -5
  84. package/lib/module/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +0 -1
  85. package/lib/module/headless_checkout/NativePrimerHeadlessUniversalCheckout.js +0 -64
  86. package/lib/module/headless_checkout/NativePrimerHeadlessUniversalCheckout.js.map +0 -1
  87. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js +0 -104
  88. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +0 -1
  89. package/lib/module/headless_checkout/types.js +0 -2
  90. package/lib/module/headless_checkout/types.js.map +0 -1
  91. package/lib/typescript/PrimerInput.d.ts +0 -15
  92. package/lib/typescript/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.d.ts +0 -1
  93. package/lib/typescript/headless_checkout/NativePrimerHeadlessUniversalCheckout.d.ts +0 -10
  94. package/lib/typescript/headless_checkout/PrimerHeadlessUniversalCheckout.d.ts +0 -14
  95. package/lib/typescript/headless_checkout/types.d.ts +0 -16
  96. package/src/PrimerInput.tsx +0 -73
  97. package/src/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.tsx +0 -2
  98. package/src/headless_checkout/NativePrimerHeadlessUniversalCheckout.ts +0 -94
  99. package/src/headless_checkout/PrimerHeadlessUniversalCheckout.ts +0 -136
  100. package/src/headless_checkout/types.ts +0 -18
@@ -5,231 +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
  }
80
+ };
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
+ });
48
106
 
49
- }; //
107
+ _RNPrimer.default.addListener('onTokenizeSuccessCallback', data => {
108
+ const paymentInstrumentToken = data;
50
109
 
51
- exports.PrimerNativeMapping = PrimerNativeMapping;
110
+ if (config.onTokenizeSuccess) {
111
+ config.onTokenizeSuccess(paymentInstrumentToken, resumeHandler);
112
+ }
113
+ });
52
114
 
53
- function configure(config) {
54
- configureTheme(config.theme);
55
- configureSettings(config.settings);
56
- configureOnVaultSuccess(config.onTokenAddedToVault);
57
- configureOnDismiss(config.onDismiss);
58
- configureOnError(config.onError);
59
- configureOnTokenizeSuccess(config.onTokenizeSuccess);
60
- configureOnClientSessionActions(config.onClientSessionActions);
61
- configureOnResumeSuccess(config.onResumeSuccess);
62
- }
63
-
64
- function configureSettings(settings = {}) {
65
- const data = JSON.stringify(settings);
66
- NativeModule.configureSettings(data);
67
- }
68
-
69
- function configureTheme(theme = {}) {
70
- const data = JSON.stringify(theme);
71
- NativeModule.configureTheme(data);
72
- }
73
-
74
- function configureIntent(intent = {
75
- vault: false,
76
- paymentMethod: 'Any'
77
- }) {
78
- const data = JSON.stringify(intent);
79
- NativeModule.configureIntent(data);
80
- }
81
-
82
- function resume(request) {
83
- const data = JSON.stringify(request);
84
- NativeModule.resume(data);
85
- }
86
-
87
- function configureOnTokenizeSuccess(callback = (_, __) => {}) {
88
- NativeModule.configureOnTokenizeSuccess(data => {
89
- try {
90
- const parsedData = JSON.parse(data);
91
- callback(parsedData, {
92
- handleError: error => resume({
93
- error,
94
- token: null
95
- }),
96
- handleSuccess: () => resume({
97
- error: null,
98
- token: null
99
- }),
100
- handleNewClientToken: token => resume({
101
- error: null,
102
- token
103
- }),
104
- // deprecated
105
- resumeWithError: error => resume({
106
- error,
107
- token: null
108
- }),
109
- resumeWithSuccess: token => resume({
110
- error: null,
111
- token
112
- })
113
- });
114
- } catch (e) {
115
- console.log('failed to parse json', e);
116
- }
117
- });
118
- }
119
-
120
- function actionResume(request) {
121
- const data = JSON.stringify(request);
122
- NativeModule.actionResume(data);
123
- }
124
- /**
125
- * Call @method configureOnClientSessionActions on the native bridge, passing
126
- * in a callback that the native side will call every time a client session
127
- * action is triggered.
128
- */
129
-
130
-
131
- function configureOnClientSessionActions(callback) // defined by integrating developer.
132
- {
133
- NativeModule.configureOnClientSessionActions(data => {
134
- try {
135
- // parse the client session action JSON string.
136
- const parsedData = JSON.parse(data);
137
-
138
- if (!callback) {
139
- /**
140
- * if @param callback is undefined immediately call the native bridge
141
- * and resume with null values. This will resume the SDK flow without
142
- * triggering extra configuration API fetch calls.
143
- */
144
- actionResume({
145
- error: null,
146
- token: null
115
+ _RNPrimer.default.addListener('onResumeSuccess', data => {
116
+ const resumeToken = data.resumeToken;
117
+
118
+ if (config.onResumeSuccess) {
119
+ config.onResumeSuccess(resumeToken, resumeHandler);
120
+ }
147
121
  });
148
- } else {
149
- /**
150
- * send the parsed data back to the developer through the defined callback.
151
- * The developer will determine how to resume the flow using one of the provided
152
- * resume handlers.
153
- */
154
- callback(parsedData, {
155
- handleError: error => actionResume({
156
- error,
157
- token: null
158
- }),
159
- handleSuccess: () => actionResume({
160
- error: null,
161
- token: null
162
- }),
163
- handleNewClientToken: token => actionResume({
164
- error: null,
165
- token
166
- }),
167
- // deprecated, remove in next major version update.
168
- resumeWithError: error => actionResume({
169
- error,
170
- token: null
171
- }),
172
- resumeWithSuccess: token => actionResume({
173
- error: null,
174
- token
175
- })
122
+
123
+ _RNPrimer.default.addListener('onCheckoutDismissed', _ => {
124
+ if (config.onDismiss) {
125
+ config.onDismiss();
126
+ }
176
127
  });
177
- } // reset the client session action callback (native bridge callbacks are disposed once they're invoked).
178
128
 
129
+ _RNPrimer.default.addListener('onError', data => {
130
+ const err = data.error;
179
131
 
180
- configureOnClientSessionActions(callback);
181
- } catch (e) {
182
- // log error if the client session action JSON string cannot be parsed (this should never happen!).
183
- console.error('[OnClientSessionActions]', 'failed to parse json', e);
184
- }
185
- });
186
- }
132
+ if (config.onError) {
133
+ config.onError(err, resumeHandler);
134
+ }
135
+ });
187
136
 
188
- function configureOnResumeSuccess(callback = (_, __) => {}) {
189
- NativeModule.configureOnResumeSuccess(paymentMethodToken => {
190
- try {
191
- callback(paymentMethodToken, {
192
- handleError: error => resume({
193
- error,
194
- token: null
195
- }),
196
- handleSuccess: () => resume({
197
- error: null,
198
- token: null
199
- }),
200
- handleNewClientToken: token => resume({
201
- error: null,
202
- token
203
- }),
204
- // deprecated
205
- resumeWithError: error => resume({
206
- error,
207
- token: null
208
- }),
209
- resumeWithSuccess: token => resume({
210
- error: null,
211
- token
212
- })
137
+ _RNPrimer.default.showUniversalCheckout(clientToken);
138
+ }).catch(err => {
139
+ console.error(err);
213
140
  });
214
- } catch (e) {
215
- 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);
216
221
  }
217
- });
218
- }
219
-
220
- function configureOnVaultSuccess(callback = _ => {}) {
221
- NativeModule.configureOnVaultSuccess(data => {
222
- (0, _utils.parseCallback)(data, callback);
223
- });
224
- }
225
-
226
- function configureOnDismiss(callback = () => {}) {
227
- NativeModule.configureOnDismiss(_ => callback());
228
- }
229
-
230
- function configureOnError(callback = _ => {}) {
231
- NativeModule.configureOnPrimerError(data => {
232
- (0, _utils.parseCallback)(data, callback);
233
- });
234
- }
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;
235
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 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\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: OnTokenizeSuccessCallback = (_, __) => {}\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