@primer-io/react-native 0.15.8 → 2.0.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.
- package/README.md +114 -24
- package/android/build.gradle +7 -2
- package/android/gradle.properties +3 -3
- package/android/src/main/java/com/primerioreactnative/PrimerRN.kt +118 -148
- package/android/src/main/java/com/primerioreactnative/PrimerRNEventListener.kt +212 -127
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerCheckoutDataRN.kt +12 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerClientSessionRN.kt +54 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerErrorRN.kt +3 -7
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerEvents.kt +13 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerPaymentInstrumentTokenRN.kt +4 -4
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerPaymentMethodDataRN.kt +8 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerSettingsRN.kt +43 -125
- package/android/src/main/java/com/primerioreactnative/extensions/Payment.kt +6 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerAddress.kt +15 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerCheckoutData.kt +7 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerClientSession.kt +15 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerCustomer.kt +13 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerLineItem.kt +8 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerOrder.kt +6 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerPaymentMethodData.kt +7 -0
- package/android/src/main/java/com/primerioreactnative/utils/ErrorHelper.kt +1 -3
- package/android/src/main/java/com/primerioreactnative/utils/JsonConverter.kt +45 -0
- package/android/src/main/java/com/primerioreactnative/utils/PrimerImplementedRNCallbacks.kt +16 -6
- package/ios/DataModels/ImplementedRNCallbacks.swift +31 -0
- package/ios/DataModels/PrimerErrorRN.swift +0 -17
- package/ios/DataModels/PrimerSettingsRN.swift +70 -147
- package/ios/DataModels/PrimerThemeRN.swift +1 -10
- package/ios/{Pods/Manifest.lock → Podfile.lock} +1 -1
- package/ios/RNTPrimer.m +26 -12
- package/ios/RNTPrimer.swift +295 -249
- package/ios/ReactNative.xcodeproj/project.pbxproj +14 -14
- package/lib/commonjs/Primer.js +201 -150
- package/lib/commonjs/Primer.js.map +1 -1
- package/lib/commonjs/RNPrimer.js +102 -41
- package/lib/commonjs/RNPrimer.js.map +1 -1
- package/lib/commonjs/index.js +117 -4
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/models/Primer.js +6 -0
- package/lib/commonjs/models/{action-request.js.map → Primer.js.map} +0 -0
- package/lib/commonjs/models/PrimerCheckoutData.js +9 -0
- package/lib/commonjs/models/PrimerCheckoutData.js.map +1 -0
- package/lib/commonjs/models/PrimerCheckoutPaymentMethodData.js +2 -0
- package/lib/commonjs/models/{client-session-actions-request.js.map → PrimerCheckoutPaymentMethodData.js.map} +0 -0
- package/lib/commonjs/models/PrimerClientSession.js +2 -0
- package/lib/commonjs/models/{primer-callbacks.js.map → PrimerClientSession.js.map} +0 -0
- package/lib/commonjs/models/{utils/countryCode.js → PrimerCountryCode.js} +1 -1
- package/lib/commonjs/models/PrimerCountryCode.js.map +1 -0
- package/lib/commonjs/models/{utils/currencyCode.js → PrimerCurrencyCode.js} +1 -1
- package/lib/commonjs/models/PrimerCurrencyCode.js.map +1 -0
- package/lib/commonjs/models/PrimerError.js +28 -0
- package/lib/commonjs/models/PrimerError.js.map +1 -0
- package/lib/commonjs/models/PrimerPaymentMethodTokenData.js +14 -0
- package/lib/commonjs/models/PrimerPaymentMethodTokenData.js.map +1 -0
- package/lib/commonjs/models/PrimerSessionIntent.js +14 -0
- package/lib/commonjs/models/PrimerSessionIntent.js.map +1 -0
- package/lib/commonjs/models/PrimerSettings.js +6 -0
- package/lib/commonjs/models/{primer-config.js.map → PrimerSettings.js.map} +0 -0
- package/lib/commonjs/models/PrimerTheme.js +2 -0
- package/lib/commonjs/models/{primer-request.js.map → PrimerTheme.js.map} +0 -0
- package/lib/commonjs/utils/index.js +1 -1
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/module/Primer.js +201 -137
- package/lib/module/Primer.js.map +1 -1
- package/lib/module/RNPrimer.js +102 -41
- package/lib/module/RNPrimer.js.map +1 -1
- package/lib/module/index.js +9 -4
- package/lib/module/index.js.map +1 -1
- package/lib/module/models/Primer.js +2 -0
- package/lib/{commonjs/models/primer-settings.js.map → module/models/Primer.js.map} +0 -0
- package/lib/module/models/PrimerCheckoutData.js +7 -0
- package/lib/module/models/PrimerCheckoutData.js.map +1 -0
- package/lib/module/models/PrimerCheckoutPaymentMethodData.js +2 -0
- package/lib/{commonjs/models/primer-theme.js.map → module/models/PrimerCheckoutPaymentMethodData.js.map} +0 -0
- package/lib/module/models/PrimerClientSession.js +2 -0
- package/lib/{commonjs/models/primer.js.map → module/models/PrimerClientSession.js.map} +0 -0
- package/lib/module/models/{utils/countryCode.js → PrimerCountryCode.js} +1 -1
- package/lib/module/models/PrimerCountryCode.js.map +1 -0
- package/lib/module/models/{utils/currencyCode.js → PrimerCurrencyCode.js} +1 -1
- package/lib/module/models/PrimerCurrencyCode.js.map +1 -0
- package/lib/module/models/PrimerError.js +19 -0
- package/lib/module/models/PrimerError.js.map +1 -0
- package/lib/module/models/PrimerPaymentMethodTokenData.js +7 -0
- package/lib/module/models/PrimerPaymentMethodTokenData.js.map +1 -0
- package/lib/module/models/PrimerSessionIntent.js +7 -0
- package/lib/module/models/PrimerSessionIntent.js.map +1 -0
- package/lib/module/models/PrimerSettings.js +2 -0
- package/lib/module/models/{action-request.js.map → PrimerSettings.js.map} +0 -0
- package/lib/module/models/PrimerTheme.js +2 -0
- package/lib/module/models/{client-session-actions-request.js.map → PrimerTheme.js.map} +0 -0
- package/lib/module/utils/index.js.map +1 -1
- package/lib/typescript/Primer.d.ts +2 -15
- package/lib/typescript/RNPrimer.d.ts +16 -9
- package/lib/typescript/index.d.ts +9 -3
- package/lib/typescript/models/Primer.d.ts +26 -0
- package/lib/typescript/models/PrimerCheckoutData.d.ts +15 -0
- package/lib/typescript/models/PrimerCheckoutPaymentMethodData.d.ts +5 -0
- package/lib/typescript/models/PrimerClientSession.d.ts +45 -0
- package/lib/typescript/models/{utils/countryCode.d.ts → PrimerCountryCode.d.ts} +1 -1
- package/lib/typescript/models/{utils/currencyCode.d.ts → PrimerCurrencyCode.d.ts} +1 -1
- package/lib/typescript/models/PrimerError.d.ts +11 -0
- package/lib/typescript/models/PrimerPaymentMethodTokenData.d.ts +116 -0
- package/lib/typescript/models/PrimerSessionIntent.d.ts +4 -0
- package/lib/typescript/models/PrimerSettings.d.ts +73 -0
- package/lib/typescript/models/{primer-theme.d.ts → PrimerTheme.d.ts} +1 -1
- package/lib/typescript/utils/index.d.ts +1 -1
- package/package.json +1 -1
- package/primer-io-react-native.podspec +1 -1
- package/src/Primer.ts +228 -172
- package/src/RNPrimer.ts +135 -51
- package/src/index.tsx +33 -6
- package/src/models/Primer.ts +35 -0
- package/src/models/PrimerCheckoutData.ts +18 -0
- package/src/models/PrimerCheckoutPaymentMethodData.ts +5 -0
- package/src/models/PrimerClientSession.ts +53 -0
- package/src/models/{utils/countryCode.ts → PrimerCountryCode.ts} +1 -1
- package/src/models/{utils/currencyCode.ts → PrimerCurrencyCode.ts} +1 -1
- package/src/models/PrimerError.ts +20 -0
- package/src/models/PrimerPaymentMethodTokenData.ts +130 -0
- package/src/models/PrimerSessionIntent.ts +4 -0
- package/src/models/PrimerSettings.ts +93 -0
- package/src/models/{primer-theme.ts → PrimerTheme.ts} +1 -1
- package/src/utils/index.ts +1 -1
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerEventsRN.kt +0 -11
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerIntentRN.kt +0 -80
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerOnClientSessionActionsRequestRN.kt +0 -65
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerRequestRN.kt +0 -9
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerThemeRN.kt +0 -51
- package/android/src/main/java/com/primerioreactnative/utils/PrimerEventQueueRN.kt +0 -30
- package/ios/DataModels/PrimerIntentRN.swift +0 -10
- package/ios/DataModels/PrimerRequestRN.swift +0 -14
- package/ios/Pods/Pods.xcodeproj/project.pbxproj +0 -344
- package/ios/Pods/Pods.xcodeproj/xcuserdata/aladintaleb.xcuserdatad/xcschemes/Pods-ReactNative.xcscheme +0 -60
- package/ios/Pods/Pods.xcodeproj/xcuserdata/aladintaleb.xcuserdatad/xcschemes/xcschememanagement.plist +0 -16
- package/ios/Pods/Target Support Files/Pods-ReactNative/Pods-ReactNative-acknowledgements.markdown +0 -3
- package/ios/Pods/Target Support Files/Pods-ReactNative/Pods-ReactNative-acknowledgements.plist +0 -29
- package/ios/Pods/Target Support Files/Pods-ReactNative/Pods-ReactNative-dummy.m +0 -5
- package/ios/Pods/Target Support Files/Pods-ReactNative/Pods-ReactNative.debug.xcconfig +0 -8
- package/ios/Pods/Target Support Files/Pods-ReactNative/Pods-ReactNative.release.xcconfig +0 -8
- package/ios/ReactNative.xcworkspace/xcuserdata/aladintaleb.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/lib/commonjs/models/action-request.js +0 -2
- package/lib/commonjs/models/client-session-actions-request.js +0 -2
- package/lib/commonjs/models/payment-instrument-token.js +0 -30
- package/lib/commonjs/models/payment-instrument-token.js.map +0 -1
- package/lib/commonjs/models/primer-callbacks.js +0 -2
- package/lib/commonjs/models/primer-config.js +0 -2
- package/lib/commonjs/models/primer-error.js +0 -4
- package/lib/commonjs/models/primer-error.js.map +0 -1
- package/lib/commonjs/models/primer-intent.js +0 -4
- package/lib/commonjs/models/primer-intent.js.map +0 -1
- package/lib/commonjs/models/primer-request.js +0 -2
- package/lib/commonjs/models/primer-settings.js +0 -2
- package/lib/commonjs/models/primer-theme.js +0 -2
- package/lib/commonjs/models/primer.js +0 -2
- package/lib/commonjs/models/utils/countryCode.js.map +0 -1
- package/lib/commonjs/models/utils/currencyCode.js.map +0 -1
- package/lib/commonjs/models/utils/redirectScheme.js +0 -4
- package/lib/commonjs/models/utils/redirectScheme.js.map +0 -1
- package/lib/module/models/action-request.js +0 -2
- package/lib/module/models/client-session-actions-request.js +0 -2
- package/lib/module/models/payment-instrument-token.js +0 -28
- package/lib/module/models/payment-instrument-token.js.map +0 -1
- package/lib/module/models/primer-callbacks.js +0 -2
- package/lib/module/models/primer-callbacks.js.map +0 -1
- package/lib/module/models/primer-config.js +0 -2
- package/lib/module/models/primer-config.js.map +0 -1
- package/lib/module/models/primer-error.js +0 -2
- package/lib/module/models/primer-error.js.map +0 -1
- package/lib/module/models/primer-intent.js +0 -2
- package/lib/module/models/primer-intent.js.map +0 -1
- package/lib/module/models/primer-request.js +0 -2
- package/lib/module/models/primer-request.js.map +0 -1
- package/lib/module/models/primer-settings.js +0 -2
- package/lib/module/models/primer-settings.js.map +0 -1
- package/lib/module/models/primer-theme.js +0 -2
- package/lib/module/models/primer-theme.js.map +0 -1
- package/lib/module/models/primer.js +0 -2
- package/lib/module/models/primer.js.map +0 -1
- package/lib/module/models/utils/countryCode.js.map +0 -1
- package/lib/module/models/utils/currencyCode.js.map +0 -1
- package/lib/module/models/utils/redirectScheme.js +0 -2
- package/lib/module/models/utils/redirectScheme.js.map +0 -1
- package/lib/typescript/models/action-request.d.ts +0 -10
- package/lib/typescript/models/client-session-actions-request.d.ts +0 -15
- package/lib/typescript/models/payment-instrument-token.d.ts +0 -76
- package/lib/typescript/models/primer-callbacks.d.ts +0 -10
- package/lib/typescript/models/primer-config.d.ts +0 -44
- package/lib/typescript/models/primer-error.d.ts +0 -8
- package/lib/typescript/models/primer-intent.d.ts +0 -13
- package/lib/typescript/models/primer-request.d.ts +0 -7
- package/lib/typescript/models/primer-settings.d.ts +0 -65
- package/lib/typescript/models/primer.d.ts +0 -33
- package/lib/typescript/models/utils/redirectScheme.d.ts +0 -3
- package/src/models/action-request.ts +0 -12
- package/src/models/client-session-actions-request.ts +0 -21
- package/src/models/payment-instrument-token.ts +0 -109
- package/src/models/primer-callbacks.ts +0 -14
- package/src/models/primer-config.ts +0 -55
- package/src/models/primer-error.ts +0 -19
- package/src/models/primer-intent.ts +0 -49
- package/src/models/primer-request.ts +0 -7
- package/src/models/primer-settings.ts +0 -73
- package/src/models/primer.ts +0 -41
- package/src/models/utils/redirectScheme.ts +0 -5
package/src/RNPrimer.ts
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import { NativeEventEmitter, NativeModules } from 'react-native';
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
2
|
+
import type { PrimerSessionIntent } from './models/PrimerSessionIntent';
|
|
3
|
+
import type { PrimerSettings } from './models/PrimerSettings';
|
|
4
4
|
|
|
5
5
|
const { NativePrimer } = NativeModules;
|
|
6
6
|
const eventEmitter = new NativeEventEmitter(NativePrimer);
|
|
7
7
|
|
|
8
8
|
type EventType =
|
|
9
|
-
| '
|
|
10
|
-
| '
|
|
11
|
-
| '
|
|
12
|
-
| '
|
|
13
|
-
| 'onResumeSuccess'
|
|
14
|
-
| 'onCheckoutDismissed'
|
|
9
|
+
| 'onCheckoutComplete'
|
|
10
|
+
| 'onBeforeClientSessionUpdate'
|
|
11
|
+
| 'onClientSessionUpdate'
|
|
12
|
+
| 'onBeforePaymentCreate'
|
|
15
13
|
| 'onError'
|
|
14
|
+
| 'onDismiss'
|
|
15
|
+
| 'onTokenizeSuccess'
|
|
16
|
+
| 'onResumeSuccess'
|
|
16
17
|
| 'detectImplementedRNCallbacks';
|
|
17
18
|
|
|
18
19
|
export interface IPrimerError {
|
|
@@ -21,10 +22,23 @@ export interface IPrimerError {
|
|
|
21
22
|
recoverySuggestion?: string
|
|
22
23
|
}
|
|
23
24
|
|
|
25
|
+
const eventTypes: EventType[] = [
|
|
26
|
+
'onCheckoutComplete',
|
|
27
|
+
'onBeforeClientSessionUpdate',
|
|
28
|
+
'onClientSessionUpdate',
|
|
29
|
+
'onBeforePaymentCreate',
|
|
30
|
+
'onError',
|
|
31
|
+
'onDismiss',
|
|
32
|
+
'onTokenizeSuccess',
|
|
33
|
+
'onResumeSuccess',
|
|
34
|
+
'detectImplementedRNCallbacks'
|
|
35
|
+
];
|
|
36
|
+
|
|
24
37
|
const RNPrimer = {
|
|
25
38
|
///////////////////////////////////////////
|
|
26
39
|
// Event Emitter
|
|
27
40
|
///////////////////////////////////////////
|
|
41
|
+
|
|
28
42
|
addListener: (eventType: EventType, listener: (...args: any[]) => any) => {
|
|
29
43
|
eventEmitter.addListener(eventType, listener);
|
|
30
44
|
},
|
|
@@ -38,35 +52,16 @@ const RNPrimer = {
|
|
|
38
52
|
},
|
|
39
53
|
|
|
40
54
|
removeAllListeners() {
|
|
41
|
-
|
|
42
|
-
eventEmitter.removeAllListeners('onClientSessionActions');
|
|
43
|
-
eventEmitter.removeAllListeners('onTokenizeSuccessCallback');
|
|
44
|
-
eventEmitter.removeAllListeners('onVaultSuccess');
|
|
45
|
-
eventEmitter.removeAllListeners('onResumeSuccess');
|
|
46
|
-
eventEmitter.removeAllListeners('onCheckoutDismissed');
|
|
47
|
-
eventEmitter.removeAllListeners('onError');
|
|
48
|
-
eventEmitter.removeAllListeners('detectImplementedRNCallbacks');
|
|
55
|
+
eventTypes.forEach((eventType) => RNPrimer.removeAllListenersForEvent(eventType));
|
|
49
56
|
},
|
|
50
57
|
|
|
51
58
|
///////////////////////////////////////////
|
|
52
59
|
// Native API
|
|
53
60
|
///////////////////////////////////////////
|
|
54
|
-
configure: (
|
|
55
|
-
settings: PrimerSettings | null,
|
|
56
|
-
theme: PrimerTheme | null
|
|
57
|
-
): Promise<void> => {
|
|
61
|
+
configure: (settings: PrimerSettings | undefined): Promise<void> => {
|
|
58
62
|
return new Promise(async (resolve, reject) => {
|
|
59
63
|
try {
|
|
60
|
-
|
|
61
|
-
// Do nothing, SDK will use default settings and theme.
|
|
62
|
-
} else if (settings && theme === null) {
|
|
63
|
-
await NativePrimer.configureWithSettings(JSON.stringify(settings));
|
|
64
|
-
} else if (settings === null && theme) {
|
|
65
|
-
await NativePrimer.configureWithTheme(JSON.stringify(theme));
|
|
66
|
-
} else {
|
|
67
|
-
await NativePrimer.configureWithSettings(JSON.stringify(settings));
|
|
68
|
-
await NativePrimer.configureWithTheme(JSON.stringify(theme));
|
|
69
|
-
}
|
|
64
|
+
await NativePrimer.configure(JSON.stringify(settings) || "");
|
|
70
65
|
resolve();
|
|
71
66
|
} catch (err) {
|
|
72
67
|
reject(err);
|
|
@@ -74,14 +69,10 @@ const RNPrimer = {
|
|
|
74
69
|
});
|
|
75
70
|
},
|
|
76
71
|
|
|
77
|
-
showUniversalCheckout: (clientToken: string
|
|
72
|
+
showUniversalCheckout: (clientToken: string): Promise<void> => {
|
|
78
73
|
return new Promise(async (resolve, reject) => {
|
|
79
74
|
try {
|
|
80
|
-
|
|
81
|
-
await NativePrimer.showUniversalCheckoutWithClientToken(clientToken);
|
|
82
|
-
} else {
|
|
83
|
-
await NativePrimer.showUniversalCheckout();
|
|
84
|
-
}
|
|
75
|
+
await NativePrimer.showUniversalCheckoutWithClientToken(clientToken);
|
|
85
76
|
resolve();
|
|
86
77
|
} catch (err) {
|
|
87
78
|
reject(err);
|
|
@@ -92,11 +83,7 @@ const RNPrimer = {
|
|
|
92
83
|
showVaultManager: (clientToken: string | undefined): Promise<void> => {
|
|
93
84
|
return new Promise(async (resolve, reject) => {
|
|
94
85
|
try {
|
|
95
|
-
|
|
96
|
-
await NativePrimer.showVaultManager(clientToken);
|
|
97
|
-
} else {
|
|
98
|
-
await NativePrimer.showVaultManager();
|
|
99
|
-
}
|
|
86
|
+
await NativePrimer.showVaultManagerWithClientToken(clientToken);
|
|
100
87
|
resolve();
|
|
101
88
|
} catch (err) {
|
|
102
89
|
reject(err);
|
|
@@ -105,13 +92,41 @@ const RNPrimer = {
|
|
|
105
92
|
},
|
|
106
93
|
|
|
107
94
|
showPaymentMethod: (
|
|
108
|
-
clientToken: string,
|
|
109
95
|
paymentMethodType: string,
|
|
110
|
-
intent:
|
|
96
|
+
intent: PrimerSessionIntent,
|
|
97
|
+
clientToken: string
|
|
111
98
|
): Promise<void> => {
|
|
112
99
|
return new Promise(async (resolve, reject) => {
|
|
113
100
|
try {
|
|
114
|
-
await NativePrimer.showPaymentMethod(
|
|
101
|
+
await NativePrimer.showPaymentMethod(paymentMethodType, intent, clientToken);
|
|
102
|
+
resolve();
|
|
103
|
+
} catch (err) {
|
|
104
|
+
reject(err);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
},
|
|
108
|
+
|
|
109
|
+
dismiss: (): Promise<void> => {
|
|
110
|
+
return new Promise(async (resolve, reject) => {
|
|
111
|
+
try {
|
|
112
|
+
await NativePrimer.dismiss();
|
|
113
|
+
resolve();
|
|
114
|
+
} catch (err) {
|
|
115
|
+
reject(err);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
},
|
|
119
|
+
|
|
120
|
+
///////////////////////////////////////////
|
|
121
|
+
// DECISION HANDLERS
|
|
122
|
+
///////////////////////////////////////////
|
|
123
|
+
|
|
124
|
+
// Tokenization Handlers
|
|
125
|
+
|
|
126
|
+
handleTokenizationNewClientToken: (newClientToken: string): Promise<void> => {
|
|
127
|
+
return new Promise(async (resolve, reject) => {
|
|
128
|
+
try {
|
|
129
|
+
await NativePrimer.handleTokenizationNewClientToken(newClientToken);
|
|
115
130
|
resolve();
|
|
116
131
|
} catch (err) {
|
|
117
132
|
reject(err);
|
|
@@ -119,10 +134,10 @@ const RNPrimer = {
|
|
|
119
134
|
});
|
|
120
135
|
},
|
|
121
136
|
|
|
122
|
-
|
|
137
|
+
handleTokenizationSuccess: (): Promise<void> => {
|
|
123
138
|
return new Promise(async (resolve, reject) => {
|
|
124
139
|
try {
|
|
125
|
-
await NativePrimer.
|
|
140
|
+
await NativePrimer.handleTokenizationSuccess();
|
|
126
141
|
resolve();
|
|
127
142
|
} catch (err) {
|
|
128
143
|
reject(err);
|
|
@@ -130,10 +145,10 @@ const RNPrimer = {
|
|
|
130
145
|
});
|
|
131
146
|
},
|
|
132
147
|
|
|
133
|
-
|
|
148
|
+
handleTokenizationFailure: (errorMessage: string | null): Promise<void> => {
|
|
134
149
|
return new Promise(async (resolve, reject) => {
|
|
135
150
|
try {
|
|
136
|
-
await NativePrimer.
|
|
151
|
+
await NativePrimer.handleTokenizationFailure(errorMessage || "");
|
|
137
152
|
resolve();
|
|
138
153
|
} catch (err) {
|
|
139
154
|
reject(err);
|
|
@@ -141,6 +156,78 @@ const RNPrimer = {
|
|
|
141
156
|
});
|
|
142
157
|
},
|
|
143
158
|
|
|
159
|
+
// Resume Handlers
|
|
160
|
+
|
|
161
|
+
handleResumeWithNewClientToken: (newClientToken: string): Promise<void> => {
|
|
162
|
+
return new Promise(async (resolve, reject) => {
|
|
163
|
+
try {
|
|
164
|
+
await NativePrimer.handleResumeWithNewClientToken(newClientToken);
|
|
165
|
+
resolve();
|
|
166
|
+
} catch (err) {
|
|
167
|
+
reject(err);
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
},
|
|
171
|
+
|
|
172
|
+
handleResumeSuccess: (): Promise<void> => {
|
|
173
|
+
return new Promise(async (resolve, reject) => {
|
|
174
|
+
try {
|
|
175
|
+
await NativePrimer.handleResumeSuccess();
|
|
176
|
+
resolve();
|
|
177
|
+
} catch (err) {
|
|
178
|
+
reject(err);
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
},
|
|
182
|
+
|
|
183
|
+
handleResumeFailure: (errorMessage: string | null): Promise<void> => {
|
|
184
|
+
return new Promise(async (resolve, reject) => {
|
|
185
|
+
try {
|
|
186
|
+
await NativePrimer.handleTokenizationFailure(errorMessage || "");
|
|
187
|
+
resolve();
|
|
188
|
+
} catch (err) {
|
|
189
|
+
reject(err);
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
},
|
|
193
|
+
|
|
194
|
+
// Payment Creation Handlers
|
|
195
|
+
|
|
196
|
+
handlePaymentCreationAbort: (errorMessage: string | null): Promise<void> => {
|
|
197
|
+
return new Promise(async (resolve, reject) => {
|
|
198
|
+
try {
|
|
199
|
+
await NativePrimer.handlePaymentCreationAbort(errorMessage || "");
|
|
200
|
+
resolve();
|
|
201
|
+
} catch (err) {
|
|
202
|
+
reject(err);
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
},
|
|
206
|
+
|
|
207
|
+
handlePaymentCreationContinue: (): Promise<void> => {
|
|
208
|
+
return new Promise(async (resolve, reject) => {
|
|
209
|
+
try {
|
|
210
|
+
await NativePrimer.handlePaymentCreationContinue();
|
|
211
|
+
resolve();
|
|
212
|
+
} catch (err) {
|
|
213
|
+
reject(err);
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
},
|
|
217
|
+
|
|
218
|
+
// Error Handler
|
|
219
|
+
|
|
220
|
+
showErrorMessage: (errorMessage: string | null): Promise<void> => {
|
|
221
|
+
return new Promise(async (resolve, reject) => {
|
|
222
|
+
try {
|
|
223
|
+
await NativePrimer.showErrorMessage(errorMessage || "");
|
|
224
|
+
resolve();
|
|
225
|
+
} catch (err) {
|
|
226
|
+
reject(err);
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
},
|
|
230
|
+
|
|
144
231
|
handleSuccess: (): Promise<void> => {
|
|
145
232
|
return new Promise(async (resolve, reject) => {
|
|
146
233
|
try {
|
|
@@ -163,9 +250,6 @@ const RNPrimer = {
|
|
|
163
250
|
});
|
|
164
251
|
},
|
|
165
252
|
|
|
166
|
-
dispose: (): void => {
|
|
167
|
-
|
|
168
|
-
}
|
|
169
253
|
};
|
|
170
254
|
|
|
171
255
|
export default RNPrimer;
|
package/src/index.tsx
CHANGED
|
@@ -1,7 +1,34 @@
|
|
|
1
|
-
import type { IPrimer } from './models/primer';
|
|
2
|
-
import { PrimerNativeMapping } from './Primer';
|
|
3
|
-
// import type { IPrimerConfig as PrimerConfig } from './models/primer-config';
|
|
4
1
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
export {
|
|
3
|
+
Primer
|
|
4
|
+
} from './Primer';
|
|
5
|
+
export {
|
|
6
|
+
PrimerSettings
|
|
7
|
+
} from './models/PrimerSettings';
|
|
8
|
+
export {
|
|
9
|
+
PrimerSessionIntent
|
|
10
|
+
} from './models/PrimerSessionIntent';
|
|
11
|
+
export {
|
|
12
|
+
PrimerPaymentCreationHandler,
|
|
13
|
+
PrimerTokenizationHandler,
|
|
14
|
+
PrimerResumeHandler,
|
|
15
|
+
PrimerErrorHandler,
|
|
16
|
+
} from './models/Primer';
|
|
17
|
+
export { PrimerPaymentMethodTokenData } from './models/PrimerPaymentMethodTokenData';
|
|
18
|
+
export {
|
|
19
|
+
PrimerClientSession,
|
|
20
|
+
PrimerOrder,
|
|
21
|
+
PrimerLineItem,
|
|
22
|
+
PrimerCustomer,
|
|
23
|
+
PrimerAddress,
|
|
24
|
+
} from './models/PrimerClientSession';
|
|
25
|
+
export {
|
|
26
|
+
PrimerCheckoutData,
|
|
27
|
+
PrimerCheckoutDataPayment,
|
|
28
|
+
} from './models/PrimerCheckoutData';
|
|
29
|
+
export {
|
|
30
|
+
PrimerCheckoutPaymentMethodData
|
|
31
|
+
} from './models/PrimerCheckoutPaymentMethodData';
|
|
32
|
+
export {
|
|
33
|
+
PrimerError
|
|
34
|
+
} from './models/PrimerError';
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { PrimerSessionIntent } from "./PrimerSessionIntent";
|
|
2
|
+
import type { PrimerSettings } from "./PrimerSettings";
|
|
3
|
+
|
|
4
|
+
export interface Primer {
|
|
5
|
+
configure(settings: PrimerSettings): Promise<void>;
|
|
6
|
+
showUniversalCheckout(clientToken: string): Promise<void>;
|
|
7
|
+
showVaultManager(clientToken: string): Promise<void>;
|
|
8
|
+
showPaymentMethod(
|
|
9
|
+
paymentMethodType: string,
|
|
10
|
+
intent: PrimerSessionIntent,
|
|
11
|
+
clientToken: string
|
|
12
|
+
): Promise<void>
|
|
13
|
+
dismiss(): void;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface PrimerPaymentCreationHandler {
|
|
17
|
+
abortPaymentCreation(errorMessage: string | null): void;
|
|
18
|
+
continuePaymentCreation(): void;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface PrimerTokenizationHandler {
|
|
22
|
+
handleSuccess(): void;
|
|
23
|
+
handleFailure(errorMessage: string | null): void;
|
|
24
|
+
continueWithNewClientToken(newClientToken: string): void;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface PrimerResumeHandler {
|
|
28
|
+
handleSuccess(): void;
|
|
29
|
+
handleFailure(errorMessage: string | null): void;
|
|
30
|
+
continueWithNewClientToken(newClientToken: string): void;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface PrimerErrorHandler {
|
|
34
|
+
showErrorMessage(errorMessage: string | null): void;
|
|
35
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type PrimerCheckoutData = IPrimerCheckoutData;
|
|
2
|
+
|
|
3
|
+
interface IPrimerCheckoutData {
|
|
4
|
+
payment: IPrimerCheckoutDataPayment;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export type PrimerCheckoutDataPayment = IPrimerCheckoutDataPayment;
|
|
8
|
+
|
|
9
|
+
interface IPrimerCheckoutDataPayment {
|
|
10
|
+
id?: string;
|
|
11
|
+
orderId?: string;
|
|
12
|
+
paymentFailureReason?: PrimerPaymentErrorCode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
enum PrimerPaymentErrorCode {
|
|
16
|
+
FAILED = 'payment-failed',
|
|
17
|
+
CANCELLED_BY_CUSTOMER = 'cancelled-by-customer',
|
|
18
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export type PrimerClientSession = IPrimerClientSession;
|
|
2
|
+
|
|
3
|
+
interface IPrimerClientSession {
|
|
4
|
+
customerId?: string;
|
|
5
|
+
orderId?: string;
|
|
6
|
+
currencyCode?: string;
|
|
7
|
+
totalAmount?: number;
|
|
8
|
+
lineItems?: IPrimerLineItem[];
|
|
9
|
+
orderDetails?: IPrimerOrder;
|
|
10
|
+
customer?: IPrimerCustomer;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export type PrimerLineItem = IPrimerLineItem;
|
|
14
|
+
|
|
15
|
+
interface IPrimerLineItem {
|
|
16
|
+
itemId?: string;
|
|
17
|
+
itemDescription?: string;
|
|
18
|
+
amount?: number;
|
|
19
|
+
discountAmount?: number;
|
|
20
|
+
quantity?: number;
|
|
21
|
+
taxCode?: string;
|
|
22
|
+
taxAmount?: number;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export type PrimerOrder = IPrimerOrder;
|
|
26
|
+
|
|
27
|
+
interface IPrimerOrder {
|
|
28
|
+
countryCode?: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export type PrimerCustomer = IPrimerCustomer;
|
|
32
|
+
|
|
33
|
+
interface IPrimerCustomer {
|
|
34
|
+
emailAddress?: string;
|
|
35
|
+
mobileNumber?: string;
|
|
36
|
+
firstName?: string;
|
|
37
|
+
lastName?: string;
|
|
38
|
+
billingAddress?: IPrimerAddress;
|
|
39
|
+
shippingAddress?: IPrimerAddress;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export type PrimerAddress = IPrimerAddress;
|
|
43
|
+
|
|
44
|
+
interface IPrimerAddress {
|
|
45
|
+
firstName?: string;
|
|
46
|
+
lastName?: string;
|
|
47
|
+
addressLine1?: string;
|
|
48
|
+
addressLine2?: string;
|
|
49
|
+
postalCode?: string;
|
|
50
|
+
city?: string;
|
|
51
|
+
state?: string;
|
|
52
|
+
countryCode?: string;
|
|
53
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface IPrimerError {
|
|
2
|
+
errorId: string;
|
|
3
|
+
description?: string;
|
|
4
|
+
recoverySuggestion?: string;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
export class PrimerError extends Error {
|
|
9
|
+
|
|
10
|
+
errorId: string;
|
|
11
|
+
description: string;
|
|
12
|
+
recoverySuggestion?: string;
|
|
13
|
+
|
|
14
|
+
constructor(errorId: string, description: string, recoverySuggestion: string | undefined) {
|
|
15
|
+
super(description);
|
|
16
|
+
this.errorId = errorId;
|
|
17
|
+
this.description = description;
|
|
18
|
+
this.recoverySuggestion = recoverySuggestion;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
export type PrimerPaymentMethodTokenData = IPrimerPaymentMethodTokenData;
|
|
2
|
+
|
|
3
|
+
export interface IPrimerPaymentMethodTokenData {
|
|
4
|
+
analyticsId?: string;
|
|
5
|
+
id?: string;
|
|
6
|
+
isVaulted?: boolean;
|
|
7
|
+
paymentInstrumentData: IPrimerPaymentInstrumentData;
|
|
8
|
+
paymentInstrumentType: string;
|
|
9
|
+
token: string;
|
|
10
|
+
tokenType?: PrimerTokenType;
|
|
11
|
+
threeDSecureAuthentication?: IPrimerThreeDSAuthenticationData;
|
|
12
|
+
vaultData?: IPrimerVaultData;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export enum PrimerTokenType {
|
|
16
|
+
SINGLE_USE = 'SINGLE_USE',
|
|
17
|
+
MULTI_USE = 'MULTI_USE',
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface IPrimerThreeDSAuthenticationData {
|
|
21
|
+
challengeIssued?: boolean;
|
|
22
|
+
protocolVersion?: string;
|
|
23
|
+
reasonCode?: string;
|
|
24
|
+
reasonText?: string;
|
|
25
|
+
responseCode?: string;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface IPrimerVaultData {
|
|
29
|
+
customerId?: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface IPrimerPaymentInstrumentData {
|
|
33
|
+
paypalBillingAgreementId?: string;
|
|
34
|
+
first6Digits?: string;
|
|
35
|
+
last4Digits?: string;
|
|
36
|
+
expirationMonth?: string;
|
|
37
|
+
expirationYear?: string;
|
|
38
|
+
cardholderName?: string;
|
|
39
|
+
network?: string;
|
|
40
|
+
isNetworkTokenized?: boolean;
|
|
41
|
+
klarnaCustomerToken?: string;
|
|
42
|
+
|
|
43
|
+
sessionData?: IKlarnaSessionData;
|
|
44
|
+
externalPayerInfo?: IExternalPayerInfo;
|
|
45
|
+
shippingAddress?: IShippingAddress;
|
|
46
|
+
binData?: IBinData;
|
|
47
|
+
|
|
48
|
+
gocardlessMandateId?: string;
|
|
49
|
+
authorizationToken?: string;
|
|
50
|
+
hashedIdentifier?: string;
|
|
51
|
+
mcc?: string;
|
|
52
|
+
mnc?: string;
|
|
53
|
+
mx?: string;
|
|
54
|
+
currencyCode?: string;
|
|
55
|
+
productId?: string;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export interface IKlarnaSessionData {
|
|
59
|
+
recurringDescription?: string;
|
|
60
|
+
purchaseCountry?: string;
|
|
61
|
+
purchaseCurrency?: string;
|
|
62
|
+
locale?: string;
|
|
63
|
+
orderAmount?: string;
|
|
64
|
+
orderLines?: IKlarnaSessionOrderLines[];
|
|
65
|
+
billingAddress?: IKlarnaBillingAddress;
|
|
66
|
+
tokenDetails?: IKlarnaSessionDataTokenDetails;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export interface IKlarnaSessionOrderLines {
|
|
70
|
+
type?: string;
|
|
71
|
+
name?: string;
|
|
72
|
+
quantity?: number;
|
|
73
|
+
unitPrice?: number;
|
|
74
|
+
totalAmount?: number;
|
|
75
|
+
totalDiscountAmount?: number;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export interface IKlarnaBillingAddress {
|
|
79
|
+
addressLine1?: string;
|
|
80
|
+
addressLine2?: string;
|
|
81
|
+
addressLine3?: string;
|
|
82
|
+
city?: string;
|
|
83
|
+
countryCode?: string;
|
|
84
|
+
email?: string;
|
|
85
|
+
firstName?: string;
|
|
86
|
+
lastName?: string;
|
|
87
|
+
phoneNumber?: string;
|
|
88
|
+
postalCode?: string;
|
|
89
|
+
state?: string;
|
|
90
|
+
title?: string;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export interface IKlarnaSessionDataTokenDetails {
|
|
94
|
+
brand?: string;
|
|
95
|
+
maskedNumber?: string;
|
|
96
|
+
type: string;
|
|
97
|
+
expiryDate?: string;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export interface IExternalPayerInfo {
|
|
101
|
+
externalPayerId?: string;
|
|
102
|
+
email?: string;
|
|
103
|
+
firstName?: string;
|
|
104
|
+
lastName?: string;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export interface IShippingAddress {
|
|
108
|
+
firstName?: string;
|
|
109
|
+
lastName?: string;
|
|
110
|
+
addressLine1?: string;
|
|
111
|
+
addressLine2?: string;
|
|
112
|
+
city?: string;
|
|
113
|
+
state?: string;
|
|
114
|
+
countryCode?: string;
|
|
115
|
+
postalCode?: string;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export interface IBinData {
|
|
119
|
+
network?: string;
|
|
120
|
+
issuerCountryCode?: string;
|
|
121
|
+
issuerName?: string;
|
|
122
|
+
issuerCurrencyCode?: string;
|
|
123
|
+
regionalRestriction?: string;
|
|
124
|
+
accountNumberType?: string;
|
|
125
|
+
accountFundingType?: string;
|
|
126
|
+
prepaidReloadableIndicator?: string;
|
|
127
|
+
productUsageType?: string;
|
|
128
|
+
productCode?: string;
|
|
129
|
+
productName?: string;
|
|
130
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { PrimerErrorHandler, PrimerPaymentCreationHandler, PrimerResumeHandler, PrimerTokenizationHandler } from "./Primer";
|
|
2
|
+
import type { PrimerCheckoutData } from "./PrimerCheckoutData";
|
|
3
|
+
import type { PrimerCheckoutPaymentMethodData } from "./PrimerCheckoutPaymentMethodData";
|
|
4
|
+
import type { PrimerClientSession } from "./PrimerClientSession";
|
|
5
|
+
import type { PrimerPaymentMethodTokenData } from "./PrimerPaymentMethodTokenData";
|
|
6
|
+
import type { PrimerError } from "./PrimerError";
|
|
7
|
+
import type { IPrimerTheme } from "./PrimerTheme";
|
|
8
|
+
|
|
9
|
+
export type PrimerSettings = IPrimerSettings;
|
|
10
|
+
|
|
11
|
+
interface IPrimerSettings {
|
|
12
|
+
paymentHandling?: 'AUTO' | 'MANUAL';
|
|
13
|
+
localeData?: IPrimerLocaleData;
|
|
14
|
+
paymentMethodOptions?: IPrimerPaymentMethodOptions;
|
|
15
|
+
uiOptions?: IPrimerUIOptions;
|
|
16
|
+
debugOptions?: IPrimerDebugOptions;
|
|
17
|
+
|
|
18
|
+
onBeforeClientSessionUpdate?: () => void;
|
|
19
|
+
onClientSessionUpdate?: (clientSession: PrimerClientSession) => void;
|
|
20
|
+
onBeforePaymentCreate?: (checkoutPaymentMethodData: PrimerCheckoutPaymentMethodData, handler: PrimerPaymentCreationHandler) => void;
|
|
21
|
+
onCheckoutComplete?: (checkoutData: PrimerCheckoutData) => void;
|
|
22
|
+
onTokenizeSuccess?: (paymentMethodTokenData: PrimerPaymentMethodTokenData, handler: PrimerTokenizationHandler) => void;
|
|
23
|
+
onResumeSuccess?: (resumeToken: string, handler: PrimerResumeHandler) => void;
|
|
24
|
+
onError?: (error: PrimerError, checkoutData: PrimerCheckoutData | null, handler: PrimerErrorHandler) => void;
|
|
25
|
+
onDismiss?: () => void;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
//----------------------------------------
|
|
29
|
+
|
|
30
|
+
interface IPrimerLocaleData {
|
|
31
|
+
languageCode?: string
|
|
32
|
+
localeCode?: string
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
//----------------------------------------
|
|
36
|
+
|
|
37
|
+
interface IPrimerPaymentMethodOptions {
|
|
38
|
+
iOS?: {
|
|
39
|
+
urlScheme?: string;
|
|
40
|
+
}
|
|
41
|
+
android?: {
|
|
42
|
+
redirectScheme?: string;
|
|
43
|
+
},
|
|
44
|
+
apayaOptions?: IPrimerApayaOptions;
|
|
45
|
+
applePayOptions?: IPrimerApplePayOptions;
|
|
46
|
+
cardPaymentOptions?: IPrimerCardPaymentOptions;
|
|
47
|
+
goCardlessOptions?: IPrimerGoCardlessOptions;
|
|
48
|
+
googlePayOptions?: IPrimerGooglePayOptions;
|
|
49
|
+
klarnaOptions?: IPrimerKlarnaOptions;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
interface IPrimerApayaOptions {
|
|
53
|
+
webViewTitle: string;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
interface IPrimerApplePayOptions {
|
|
57
|
+
merchantIdentifier: string;
|
|
58
|
+
merchantName: string;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
interface IPrimerCardPaymentOptions {
|
|
62
|
+
is3DSOnVaultingEnabled: boolean;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
interface IPrimerGoCardlessOptions {
|
|
66
|
+
businessName?: string;
|
|
67
|
+
businessAddress?: string;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
interface IPrimerGooglePayOptions {
|
|
71
|
+
merchantName?: string;
|
|
72
|
+
allowedCardNetworks?: string[];
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
interface IPrimerKlarnaOptions {
|
|
76
|
+
recurringPaymentDescription?: string;
|
|
77
|
+
webViewTitle?: string;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
//----------------------------------------
|
|
81
|
+
|
|
82
|
+
interface IPrimerUIOptions {
|
|
83
|
+
isInitScreenEnabled?: boolean;
|
|
84
|
+
isSuccessScreenEnabled?: boolean;
|
|
85
|
+
isErrorScreenEnabled?: boolean;
|
|
86
|
+
theme?: IPrimerTheme;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
//----------------------------------------
|
|
90
|
+
|
|
91
|
+
interface IPrimerDebugOptions {
|
|
92
|
+
is3DSSanityCheckEnabled?: boolean;
|
|
93
|
+
}
|