@primer-io/react-native 2.0.0 → 2.1.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 (92) hide show
  1. package/android/build.gradle +1 -1
  2. package/android/src/main/java/com/primerioreactnative/PrimerCardNumberEditTextManager.kt +83 -0
  3. package/android/src/main/java/com/primerioreactnative/PrimerRN.kt +2 -2
  4. package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckout.kt +244 -0
  5. package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckoutListener.kt +276 -0
  6. package/android/src/main/java/com/primerioreactnative/ReactNativePackage.kt +14 -3
  7. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerErrorRN.kt +3 -0
  8. package/android/src/main/java/com/primerioreactnative/huc/assets/AssetsManager.kt +56 -0
  9. package/android/src/main/java/com/primerioreactnative/huc/events/PrimerHeadlessUniversalCheckoutEvent.kt +15 -0
  10. package/android/src/main/java/com/primerioreactnative/utils/PrimerHeadlessUniversalCheckoutImplementedRNCallbacks.kt +31 -0
  11. package/ios/Core/ReactNative-Bridging-Header.h +14 -0
  12. package/ios/DataModels/ImplementedRNCallbacks.swift +34 -9
  13. package/ios/DataModels/PrimerSettingsRN.swift +15 -16
  14. package/ios/Headless Universal Checkout/RNTPrimerCardNumberInputElementManager.m +23 -0
  15. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.m +62 -0
  16. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.swift +493 -0
  17. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.m +14 -0
  18. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.swift +117 -0
  19. package/ios/RNTPrimer.m +2 -0
  20. package/ios/RNTPrimer.swift +56 -51
  21. package/ios/ReactNative-Bridging-Header.h +1 -0
  22. package/lib/commonjs/Primer.js +6 -0
  23. package/lib/commonjs/Primer.js.map +1 -1
  24. package/lib/commonjs/PrimerInput.js +80 -0
  25. package/lib/commonjs/PrimerInput.js.map +1 -0
  26. package/lib/commonjs/RNPrimer.js +11 -0
  27. package/lib/commonjs/RNPrimer.js.map +1 -1
  28. package/lib/commonjs/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js +14 -0
  29. package/lib/commonjs/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +1 -0
  30. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js +286 -0
  31. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +1 -0
  32. package/lib/commonjs/headless_checkout/RNPrimerHeadlessUniversalCheckout.js +197 -0
  33. package/lib/commonjs/headless_checkout/RNPrimerHeadlessUniversalCheckout.js.map +1 -0
  34. package/lib/commonjs/{models/Primer.js → headless_checkout/types.js} +1 -1
  35. package/lib/commonjs/{models/Primer.js.map → headless_checkout/types.js.map} +0 -0
  36. package/lib/commonjs/index.js +13 -5
  37. package/lib/commonjs/index.js.map +1 -1
  38. package/lib/commonjs/models/PrimerInterfaces.js +6 -0
  39. package/lib/{module/models/Primer.js.map → commonjs/models/PrimerInterfaces.js.map} +0 -0
  40. package/lib/module/Primer.js +7 -2
  41. package/lib/module/Primer.js.map +1 -1
  42. package/lib/module/PrimerInput.js +46 -0
  43. package/lib/module/PrimerInput.js.map +1 -0
  44. package/lib/module/RNPrimer.js +11 -0
  45. package/lib/module/RNPrimer.js.map +1 -1
  46. package/lib/module/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js +5 -0
  47. package/lib/module/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +1 -0
  48. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js +273 -0
  49. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +1 -0
  50. package/lib/module/headless_checkout/RNPrimerHeadlessUniversalCheckout.js +188 -0
  51. package/lib/module/headless_checkout/RNPrimerHeadlessUniversalCheckout.js.map +1 -0
  52. package/lib/module/headless_checkout/types.js +2 -0
  53. package/lib/module/headless_checkout/types.js.map +1 -0
  54. package/lib/module/index.js +2 -1
  55. package/lib/module/index.js.map +1 -1
  56. package/lib/module/models/PrimerInterfaces.js +2 -0
  57. package/lib/module/models/PrimerInterfaces.js.map +1 -0
  58. package/lib/typescript/MerchantExample/App.d.ts +11 -0
  59. package/lib/typescript/src/Primer.d.ts +2 -0
  60. package/lib/typescript/src/PrimerInput.d.ts +15 -0
  61. package/lib/typescript/{RNPrimer.d.ts → src/RNPrimer.d.ts} +1 -0
  62. package/lib/typescript/src/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.d.ts +1 -0
  63. package/lib/typescript/src/headless_checkout/PrimerHeadlessUniversalCheckout.d.ts +11 -0
  64. package/lib/typescript/src/headless_checkout/RNPrimerHeadlessUniversalCheckout.d.ts +22 -0
  65. package/lib/typescript/src/headless_checkout/types.d.ts +22 -0
  66. package/lib/typescript/{index.d.ts → src/index.d.ts} +2 -1
  67. package/lib/typescript/{models → src/models}/PrimerCheckoutData.d.ts +0 -0
  68. package/lib/typescript/{models → src/models}/PrimerCheckoutPaymentMethodData.d.ts +0 -0
  69. package/lib/typescript/{models → src/models}/PrimerClientSession.d.ts +0 -0
  70. package/lib/typescript/{models → src/models}/PrimerCountryCode.d.ts +0 -0
  71. package/lib/typescript/{models → src/models}/PrimerCurrencyCode.d.ts +0 -0
  72. package/lib/typescript/{models → src/models}/PrimerError.d.ts +0 -0
  73. package/lib/typescript/{models/Primer.d.ts → src/models/PrimerInterfaces.d.ts} +2 -1
  74. package/lib/typescript/{models → src/models}/PrimerPaymentMethodTokenData.d.ts +0 -0
  75. package/lib/typescript/{models → src/models}/PrimerSessionIntent.d.ts +0 -0
  76. package/lib/typescript/{models → src/models}/PrimerSettings.d.ts +6 -2
  77. package/lib/typescript/{models → src/models}/PrimerTheme.d.ts +0 -0
  78. package/lib/typescript/{utils → src/utils}/index.d.ts +0 -0
  79. package/package.json +1 -1
  80. package/primer-io-react-native.podspec +1 -1
  81. package/src/Primer.ts +6 -1
  82. package/src/PrimerInput.tsx +73 -0
  83. package/src/RNPrimer.ts +13 -0
  84. package/src/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.tsx +2 -0
  85. package/src/headless_checkout/PrimerHeadlessUniversalCheckout.ts +327 -0
  86. package/src/headless_checkout/RNPrimerHeadlessUniversalCheckout.ts +252 -0
  87. package/src/headless_checkout/types.ts +32 -0
  88. package/src/index.tsx +4 -2
  89. package/src/models/{Primer.ts → PrimerInterfaces.ts} +2 -1
  90. package/src/models/PrimerSettings.ts +17 -2
  91. package/lib/module/models/Primer.js +0 -2
  92. package/lib/typescript/Primer.d.ts +0 -2
@@ -0,0 +1,188 @@
1
+ import { NativeEventEmitter, NativeModules } from 'react-native';
2
+ const {
3
+ PrimerHeadlessUniversalCheckout
4
+ } = NativeModules;
5
+ const eventEmitter = new NativeEventEmitter(PrimerHeadlessUniversalCheckout);
6
+ const eventTypes = ['onHUCTokenizeStart', 'onHUCPrepareStart', 'onHUCAvailablePaymentMethodsLoaded', 'onHUCPaymentMethodShow', 'onTokenizeSuccess', 'onResumeSuccess', 'onBeforePaymentCreate', 'onBeforeClientSessionUpdate', 'onClientSessionUpdate', 'onCheckoutComplete', 'onError'];
7
+ const RNPrimerHeadlessUniversalCheckout = {
8
+ ///////////////////////////////////////////
9
+ // Event Emitter
10
+ ///////////////////////////////////////////
11
+ addListener: (eventType, listener) => {
12
+ eventEmitter.addListener(eventType, listener);
13
+ },
14
+ removeListener: (eventType, listener) => {
15
+ eventEmitter.removeListener(eventType, listener);
16
+ },
17
+
18
+ removeAllListenersForEvent(eventType) {
19
+ eventEmitter.removeAllListeners(eventType);
20
+ },
21
+
22
+ removeAllListeners() {
23
+ eventTypes.forEach(eventType => RNPrimerHeadlessUniversalCheckout.removeAllListenersForEvent(eventType));
24
+ },
25
+
26
+ ///////////////////////////////////////////
27
+ // Native API
28
+ ///////////////////////////////////////////
29
+ getAssetForPaymentMethodType: (paymentMethodType, assetType) => {
30
+ return new Promise((resolve, reject) => {
31
+ try {
32
+ PrimerHeadlessUniversalCheckout.getAssetForPaymentMethodType(paymentMethodType, assetType, err => {
33
+ reject(err);
34
+ }, url => {
35
+ resolve(url);
36
+ });
37
+ } catch (e) {
38
+ reject(e);
39
+ }
40
+ });
41
+ },
42
+ getAssetForCardNetwork: (cardNetwork, assetType) => {
43
+ return new Promise((resolve, reject) => {
44
+ try {
45
+ PrimerHeadlessUniversalCheckout.getAssetForPaymentMethodType(cardNetwork, assetType, err => {
46
+ reject(err);
47
+ }, url => {
48
+ resolve(url);
49
+ });
50
+ } catch (e) {
51
+ reject(e);
52
+ }
53
+ });
54
+ },
55
+
56
+ startWithClientToken(clientToken, settings) {
57
+ return new Promise((resolve, reject) => {
58
+ PrimerHeadlessUniversalCheckout.startWithClientToken(clientToken, JSON.stringify(settings), err => {
59
+ console.error(err);
60
+ reject(err);
61
+ }, paymentMethodTypes => {
62
+ resolve({
63
+ paymentMethodTypes
64
+ });
65
+ });
66
+ });
67
+ },
68
+
69
+ showPaymentMethod: paymentMethodType => {
70
+ return new Promise(async (resolve, reject) => {
71
+ try {
72
+ await PrimerHeadlessUniversalCheckout.showPaymentMethod(paymentMethodType);
73
+ resolve();
74
+ } catch (err) {
75
+ reject(err);
76
+ }
77
+ });
78
+ },
79
+ ///////////////////////////////////////////
80
+ // DECISION HANDLERS
81
+ ///////////////////////////////////////////
82
+ // Tokenization Handlers
83
+ handleTokenizationNewClientToken: newClientToken => {
84
+ return new Promise(async (resolve, reject) => {
85
+ try {
86
+ await PrimerHeadlessUniversalCheckout.handleTokenizationNewClientToken(newClientToken);
87
+ resolve();
88
+ } catch (err) {
89
+ reject(err);
90
+ }
91
+ });
92
+ },
93
+ handleTokenizationSuccess: () => {
94
+ return new Promise(async (resolve, reject) => {
95
+ try {
96
+ await PrimerHeadlessUniversalCheckout.handleTokenizationSuccess();
97
+ resolve();
98
+ } catch (err) {
99
+ reject(err);
100
+ }
101
+ });
102
+ },
103
+ handleTokenizationFailure: errorMessage => {
104
+ return new Promise(async (resolve, reject) => {
105
+ try {
106
+ await PrimerHeadlessUniversalCheckout.handleTokenizationFailure(errorMessage || "");
107
+ resolve();
108
+ } catch (err) {
109
+ reject(err);
110
+ }
111
+ });
112
+ },
113
+ // Resume Handlers
114
+ handleResumeWithNewClientToken: newClientToken => {
115
+ return new Promise(async (resolve, reject) => {
116
+ try {
117
+ await PrimerHeadlessUniversalCheckout.handleResumeWithNewClientToken(newClientToken);
118
+ resolve();
119
+ } catch (err) {
120
+ reject(err);
121
+ }
122
+ });
123
+ },
124
+ handleResumeSuccess: () => {
125
+ return new Promise(async (resolve, reject) => {
126
+ try {
127
+ await PrimerHeadlessUniversalCheckout.handleResumeSuccess();
128
+ resolve();
129
+ } catch (err) {
130
+ reject(err);
131
+ }
132
+ });
133
+ },
134
+ handleResumeFailure: errorMessage => {
135
+ return new Promise(async (resolve, reject) => {
136
+ try {
137
+ await PrimerHeadlessUniversalCheckout.handleTokenizationFailure(errorMessage || "");
138
+ resolve();
139
+ } catch (err) {
140
+ reject(err);
141
+ }
142
+ });
143
+ },
144
+ // Payment Creation Handlers
145
+ handlePaymentCreationAbort: errorMessage => {
146
+ return new Promise(async (resolve, reject) => {
147
+ try {
148
+ await PrimerHeadlessUniversalCheckout.handlePaymentCreationAbort(errorMessage || "");
149
+ resolve();
150
+ } catch (err) {
151
+ reject(err);
152
+ }
153
+ });
154
+ },
155
+ handlePaymentCreationContinue: () => {
156
+ return new Promise(async (resolve, reject) => {
157
+ try {
158
+ await PrimerHeadlessUniversalCheckout.handlePaymentCreationContinue();
159
+ resolve();
160
+ } catch (err) {
161
+ reject(err);
162
+ }
163
+ });
164
+ },
165
+ // HELPERS
166
+ setImplementedRNCallbacks: implementedRNCallbacks => {
167
+ return new Promise(async (resolve, reject) => {
168
+ try {
169
+ await PrimerHeadlessUniversalCheckout.setImplementedRNCallbacks(JSON.stringify(implementedRNCallbacks));
170
+ resolve();
171
+ } catch (err) {
172
+ reject(err);
173
+ }
174
+ });
175
+ },
176
+ disposePrimerHeadlessUniversalCheckout: () => {
177
+ return new Promise(async (resolve, reject) => {
178
+ try {
179
+ await PrimerHeadlessUniversalCheckout.disposePrimerHeadlessUniversalCheckout();
180
+ resolve();
181
+ } catch (err) {
182
+ reject(err);
183
+ }
184
+ });
185
+ }
186
+ };
187
+ export default RNPrimerHeadlessUniversalCheckout;
188
+ //# sourceMappingURL=RNPrimerHeadlessUniversalCheckout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["RNPrimerHeadlessUniversalCheckout.ts"],"names":["NativeEventEmitter","NativeModules","PrimerHeadlessUniversalCheckout","eventEmitter","eventTypes","RNPrimerHeadlessUniversalCheckout","addListener","eventType","listener","removeListener","removeAllListenersForEvent","removeAllListeners","forEach","getAssetForPaymentMethodType","paymentMethodType","assetType","Promise","resolve","reject","err","url","e","getAssetForCardNetwork","cardNetwork","startWithClientToken","clientToken","settings","JSON","stringify","console","error","paymentMethodTypes","showPaymentMethod","handleTokenizationNewClientToken","newClientToken","handleTokenizationSuccess","handleTokenizationFailure","errorMessage","handleResumeWithNewClientToken","handleResumeSuccess","handleResumeFailure","handlePaymentCreationAbort","handlePaymentCreationContinue","setImplementedRNCallbacks","implementedRNCallbacks","disposePrimerHeadlessUniversalCheckout"],"mappings":"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","sourcesContent":["import { NativeEventEmitter, NativeModules } from 'react-native';\n\nconst { PrimerHeadlessUniversalCheckout } = NativeModules;\n\nconst eventEmitter = new NativeEventEmitter(PrimerHeadlessUniversalCheckout);\n\ntype EventType =\n | 'onHUCTokenizeStart'\n | 'onHUCPrepareStart'\n | 'onHUCAvailablePaymentMethodsLoaded'\n | 'onHUCPaymentMethodShow'\n | 'onTokenizeSuccess'\n | 'onResumeSuccess'\n | 'onBeforePaymentCreate'\n | 'onBeforeClientSessionUpdate'\n | 'onClientSessionUpdate'\n | 'onCheckoutComplete'\n | 'onError';\n\nconst eventTypes: EventType[] = [\n 'onHUCTokenizeStart',\n 'onHUCPrepareStart',\n 'onHUCAvailablePaymentMethodsLoaded',\n 'onHUCPaymentMethodShow',\n 'onTokenizeSuccess',\n 'onResumeSuccess',\n 'onBeforePaymentCreate',\n 'onBeforeClientSessionUpdate',\n 'onClientSessionUpdate',\n 'onCheckoutComplete',\n 'onError'\n];\n\nconst RNPrimerHeadlessUniversalCheckout = {\n ///////////////////////////////////////////\n // Event Emitter\n ///////////////////////////////////////////\n addListener: (eventType: EventType, listener: (...args: any[]) => any) => {\n eventEmitter.addListener(eventType, listener);\n },\n\n removeListener: (eventType: EventType, listener: (...args: any[]) => any) => {\n eventEmitter.removeListener(eventType, listener);\n },\n\n removeAllListenersForEvent(eventType: EventType) {\n eventEmitter.removeAllListeners(eventType);\n },\n\n removeAllListeners() {\n eventTypes.forEach((eventType) => RNPrimerHeadlessUniversalCheckout.removeAllListenersForEvent(eventType));\n },\n\n ///////////////////////////////////////////\n // Native API\n ///////////////////////////////////////////\n getAssetForPaymentMethodType: (\n paymentMethodType: string,\n assetType: 'logo' | 'icon'\n ): Promise<string> => {\n return new Promise((resolve, reject) => {\n try {\n PrimerHeadlessUniversalCheckout.getAssetForPaymentMethodType(\n paymentMethodType,\n assetType,\n (err: Error) => {\n reject(err);\n },\n (url: string) => {\n resolve(url);\n }\n );\n } catch (e) {\n reject(e);\n }\n });\n },\n\n getAssetForCardNetwork: (\n cardNetwork: string,\n assetType: 'logo' | 'icon'\n ): Promise<string> => {\n return new Promise((resolve, reject) => {\n try {\n PrimerHeadlessUniversalCheckout.getAssetForPaymentMethodType(\n cardNetwork,\n assetType,\n (err: Error) => {\n reject(err);\n },\n (url: string) => {\n resolve(url);\n }\n );\n } catch (e) {\n reject(e);\n }\n });\n },\n\n startWithClientToken(clientToken: string, settings: any): Promise<any> {\n return new Promise((resolve, reject) => {\n PrimerHeadlessUniversalCheckout.startWithClientToken(\n clientToken,\n JSON.stringify(settings),\n (err: Error) => {\n console.error(err);\n reject(err);\n },\n (paymentMethodTypes: string[]) => {\n resolve({ paymentMethodTypes });\n }\n );\n });\n },\n\n showPaymentMethod: (paymentMethodType: string): Promise<void> => {\n return new Promise(async (resolve, reject) => {\n try {\n await PrimerHeadlessUniversalCheckout.showPaymentMethod(paymentMethodType);\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n },\n\n ///////////////////////////////////////////\n // DECISION HANDLERS\n ///////////////////////////////////////////\n\n // Tokenization Handlers\n\n handleTokenizationNewClientToken: (newClientToken: string): Promise<void> => {\n return new Promise(async (resolve, reject) => {\n try {\n await PrimerHeadlessUniversalCheckout.handleTokenizationNewClientToken(newClientToken);\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n },\n\n handleTokenizationSuccess: (): Promise<void> => {\n return new Promise(async (resolve, reject) => {\n try {\n await PrimerHeadlessUniversalCheckout.handleTokenizationSuccess();\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n },\n\n handleTokenizationFailure: (errorMessage: string | null): Promise<void> => {\n return new Promise(async (resolve, reject) => {\n try {\n await PrimerHeadlessUniversalCheckout.handleTokenizationFailure(errorMessage || \"\");\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n },\n\n // Resume Handlers\n\n handleResumeWithNewClientToken: (newClientToken: string): Promise<void> => {\n return new Promise(async (resolve, reject) => {\n try {\n await PrimerHeadlessUniversalCheckout.handleResumeWithNewClientToken(newClientToken);\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n },\n\n handleResumeSuccess: (): Promise<void> => {\n return new Promise(async (resolve, reject) => {\n try {\n await PrimerHeadlessUniversalCheckout.handleResumeSuccess();\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n },\n\n handleResumeFailure: (errorMessage: string | null): Promise<void> => {\n return new Promise(async (resolve, reject) => {\n try {\n await PrimerHeadlessUniversalCheckout.handleTokenizationFailure(errorMessage || \"\");\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n },\n\n // Payment Creation Handlers\n\n handlePaymentCreationAbort: (errorMessage: string | null): Promise<void> => {\n return new Promise(async (resolve, reject) => {\n try {\n await PrimerHeadlessUniversalCheckout.handlePaymentCreationAbort(errorMessage || \"\");\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n },\n\n handlePaymentCreationContinue: (): Promise<void> => {\n return new Promise(async (resolve, reject) => {\n try {\n await PrimerHeadlessUniversalCheckout.handlePaymentCreationContinue();\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n },\n\n // HELPERS\n\n setImplementedRNCallbacks: (implementedRNCallbacks: any): Promise<void> => {\n return new Promise(async (resolve, reject) => {\n try {\n await PrimerHeadlessUniversalCheckout.setImplementedRNCallbacks(JSON.stringify(implementedRNCallbacks));\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n },\n\n \n disposePrimerHeadlessUniversalCheckout: (): Promise<void> => {\n return new Promise(async (resolve, reject) => {\n try {\n await PrimerHeadlessUniversalCheckout.disposePrimerHeadlessUniversalCheckout();\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n },\n};\n\nexport default RNPrimerHeadlessUniversalCheckout;\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
@@ -1,10 +1,11 @@
1
1
  export { Primer } from './Primer';
2
2
  export { PrimerSettings } from './models/PrimerSettings';
3
3
  export { PrimerSessionIntent } from './models/PrimerSessionIntent';
4
- export { PrimerPaymentCreationHandler, PrimerTokenizationHandler, PrimerResumeHandler, PrimerErrorHandler } from './models/Primer';
4
+ export { PrimerPaymentCreationHandler, PrimerTokenizationHandler, PrimerResumeHandler, PrimerErrorHandler } from './models/PrimerInterfaces';
5
5
  export { PrimerPaymentMethodTokenData } from './models/PrimerPaymentMethodTokenData';
6
6
  export { PrimerClientSession, PrimerOrder, PrimerLineItem, PrimerCustomer, PrimerAddress } from './models/PrimerClientSession';
7
7
  export { PrimerCheckoutData, PrimerCheckoutDataPayment } from './models/PrimerCheckoutData';
8
8
  export { PrimerCheckoutPaymentMethodData } from './models/PrimerCheckoutPaymentMethodData';
9
9
  export { PrimerError } from './models/PrimerError';
10
+ export { PrimerHeadlessUniversalCheckout } from './headless_checkout/PrimerHeadlessUniversalCheckout';
10
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["index.tsx"],"names":["Primer","PrimerSettings","PrimerSessionIntent","PrimerPaymentCreationHandler","PrimerTokenizationHandler","PrimerResumeHandler","PrimerErrorHandler","PrimerPaymentMethodTokenData","PrimerClientSession","PrimerOrder","PrimerLineItem","PrimerCustomer","PrimerAddress","PrimerCheckoutData","PrimerCheckoutDataPayment","PrimerCheckoutPaymentMethodData","PrimerError"],"mappings":"AACA,SACIA,MADJ,QAEO,UAFP;AAGA,SACIC,cADJ,QAEO,yBAFP;AAGA,SACIC,mBADJ,QAEO,8BAFP;AAGA,SACIC,4BADJ,EAEIC,yBAFJ,EAGIC,mBAHJ,EAIIC,kBAJJ,QAKO,iBALP;AAMA,SAASC,4BAAT,QAA6C,uCAA7C;AACA,SACIC,mBADJ,EAEIC,WAFJ,EAGIC,cAHJ,EAIIC,cAJJ,EAKIC,aALJ,QAMO,8BANP;AAOA,SACIC,kBADJ,EAEIC,yBAFJ,QAGO,6BAHP;AAIA,SACIC,+BADJ,QAEO,0CAFP;AAGA,SACIC,WADJ,QAEO,sBAFP","sourcesContent":["\nexport {\n Primer\n} from './Primer';\nexport {\n PrimerSettings\n} from './models/PrimerSettings';\nexport {\n PrimerSessionIntent\n} from './models/PrimerSessionIntent';\nexport { \n PrimerPaymentCreationHandler,\n PrimerTokenizationHandler,\n PrimerResumeHandler,\n PrimerErrorHandler,\n} from './models/Primer';\nexport { PrimerPaymentMethodTokenData } from './models/PrimerPaymentMethodTokenData';\nexport { \n PrimerClientSession,\n PrimerOrder,\n PrimerLineItem,\n PrimerCustomer,\n PrimerAddress,\n} from './models/PrimerClientSession';\nexport { \n PrimerCheckoutData,\n PrimerCheckoutDataPayment,\n} from './models/PrimerCheckoutData';\nexport { \n PrimerCheckoutPaymentMethodData\n} from './models/PrimerCheckoutPaymentMethodData';\nexport { \n PrimerError\n} from './models/PrimerError';\n"]}
1
+ {"version":3,"sources":["index.tsx"],"names":["Primer","PrimerSettings","PrimerSessionIntent","PrimerPaymentCreationHandler","PrimerTokenizationHandler","PrimerResumeHandler","PrimerErrorHandler","PrimerPaymentMethodTokenData","PrimerClientSession","PrimerOrder","PrimerLineItem","PrimerCustomer","PrimerAddress","PrimerCheckoutData","PrimerCheckoutDataPayment","PrimerCheckoutPaymentMethodData","PrimerError","PrimerHeadlessUniversalCheckout"],"mappings":"AAAA,SACIA,MADJ,QAEO,UAFP;AAGA,SACIC,cADJ,QAEO,yBAFP;AAGA,SACIC,mBADJ,QAEO,8BAFP;AAGA,SACIC,4BADJ,EAEIC,yBAFJ,EAGIC,mBAHJ,EAIIC,kBAJJ,QAKO,2BALP;AAMA,SAASC,4BAAT,QAA6C,uCAA7C;AACA,SACIC,mBADJ,EAEIC,WAFJ,EAGIC,cAHJ,EAIIC,cAJJ,EAKIC,aALJ,QAMO,8BANP;AAOA,SACIC,kBADJ,EAEIC,yBAFJ,QAGO,6BAHP;AAIA,SACIC,+BADJ,QAEO,0CAFP;AAGA,SACIC,WADJ,QAEO,sBAFP;AAGA,SACIC,+BADJ,QAEO,qDAFP","sourcesContent":["export {\n Primer\n} from './Primer';\nexport {\n PrimerSettings\n} from './models/PrimerSettings';\nexport {\n PrimerSessionIntent\n} from './models/PrimerSessionIntent';\nexport { \n PrimerPaymentCreationHandler,\n PrimerTokenizationHandler,\n PrimerResumeHandler,\n PrimerErrorHandler,\n} from './models/PrimerInterfaces';\nexport { PrimerPaymentMethodTokenData } from './models/PrimerPaymentMethodTokenData';\nexport { \n PrimerClientSession,\n PrimerOrder,\n PrimerLineItem,\n PrimerCustomer,\n PrimerAddress,\n} from './models/PrimerClientSession';\nexport { \n PrimerCheckoutData,\n PrimerCheckoutDataPayment,\n} from './models/PrimerCheckoutData';\nexport { \n PrimerCheckoutPaymentMethodData\n} from './models/PrimerCheckoutPaymentMethodData';\nexport { \n PrimerError\n} from './models/PrimerError';\nexport {\n PrimerHeadlessUniversalCheckout\n} from './headless_checkout/PrimerHeadlessUniversalCheckout';\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PrimerInterfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Sample React Native App
3
+ * https://github.com/facebook/react-native
4
+ *
5
+ * Generated with the TypeScript template
6
+ * https://github.com/react-native-community/react-native-template-typescript
7
+ *
8
+ * @format
9
+ */
10
+ declare const App: () => JSX.Element;
11
+ export default App;
@@ -0,0 +1,2 @@
1
+ import type { IPrimer } from './models/PrimerInterfaces';
2
+ export declare const Primer: IPrimer;
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { ViewProps } from 'react-native';
3
+ export declare const PrimerCardNumberEditTextRaw: import("react-native").HostComponent<{}>;
4
+ declare type PrimerCardNumberEditTextProps = ViewProps;
5
+ export declare const PrimerCardNumberEditText: React.FC<PrimerCardNumberEditTextProps>;
6
+ export declare const PrimerCardholderNameEditTextRaw: import("react-native").HostComponent<{}>;
7
+ declare type PrimerCardholderNameEditTextProps = ViewProps;
8
+ export declare const PrimerCardholderNameEditText: React.FC<PrimerCardholderNameEditTextProps>;
9
+ export declare const PrimerExpiryEditTextRaw: import("react-native").HostComponent<{}>;
10
+ declare type PrimerExpiryEditTextProps = ViewProps;
11
+ export declare const PrimerExpiryEditText: React.FC<PrimerExpiryEditTextProps>;
12
+ export declare const PrimerCvvEditTextRaw: import("react-native").HostComponent<{}>;
13
+ declare type PrimerCvvEditTextProps = ViewProps;
14
+ export declare const PrimerCvvEditText: React.FC<PrimerCvvEditTextProps>;
15
+ export {};
@@ -16,6 +16,7 @@ declare const RNPrimer: {
16
16
  showVaultManager: (clientToken: string | undefined) => Promise<void>;
17
17
  showPaymentMethod: (paymentMethodType: string, intent: PrimerSessionIntent, clientToken: string) => Promise<void>;
18
18
  dismiss: () => Promise<void>;
19
+ dispose: () => Promise<void>;
19
20
  handleTokenizationNewClientToken: (newClientToken: string) => Promise<void>;
20
21
  handleTokenizationSuccess: () => Promise<void>;
21
22
  handleTokenizationFailure: (errorMessage: string | null) => Promise<void>;
@@ -0,0 +1 @@
1
+ export declare const PrimerHeadlessUniversalCheckoutCardFormUIManager: any;
@@ -0,0 +1,11 @@
1
+ import type { PrimerSettings } from '../models/PrimerSettings';
2
+ declare class PrimerHeadlessUniversalCheckoutClass {
3
+ constructor();
4
+ startWithClientToken(clientToken: string, settings: PrimerSettings): Promise<string[]>;
5
+ showPaymentMethod(paymentMethodType: string): Promise<void>;
6
+ getAssetForPaymentMethodType(paymentMethodType: string, assetType: 'logo' | 'icon'): Promise<string>;
7
+ getAssetForCardNetwork(cardNetwork: string, assetType: 'logo' | 'icon'): Promise<string>;
8
+ disposePrimerHeadlessUniversalCheckout(): Promise<void>;
9
+ }
10
+ export declare const PrimerHeadlessUniversalCheckout: PrimerHeadlessUniversalCheckoutClass;
11
+ export {};
@@ -0,0 +1,22 @@
1
+ declare type EventType = 'onHUCTokenizeStart' | 'onHUCPrepareStart' | 'onHUCAvailablePaymentMethodsLoaded' | 'onHUCPaymentMethodShow' | 'onTokenizeSuccess' | 'onResumeSuccess' | 'onBeforePaymentCreate' | 'onBeforeClientSessionUpdate' | 'onClientSessionUpdate' | 'onCheckoutComplete' | 'onError';
2
+ declare const RNPrimerHeadlessUniversalCheckout: {
3
+ addListener: (eventType: EventType, listener: (...args: any[]) => any) => void;
4
+ removeListener: (eventType: EventType, listener: (...args: any[]) => any) => void;
5
+ removeAllListenersForEvent(eventType: EventType): void;
6
+ removeAllListeners(): void;
7
+ getAssetForPaymentMethodType: (paymentMethodType: string, assetType: 'logo' | 'icon') => Promise<string>;
8
+ getAssetForCardNetwork: (cardNetwork: string, assetType: 'logo' | 'icon') => Promise<string>;
9
+ startWithClientToken(clientToken: string, settings: any): Promise<any>;
10
+ showPaymentMethod: (paymentMethodType: string) => Promise<void>;
11
+ handleTokenizationNewClientToken: (newClientToken: string) => Promise<void>;
12
+ handleTokenizationSuccess: () => Promise<void>;
13
+ handleTokenizationFailure: (errorMessage: string | null) => Promise<void>;
14
+ handleResumeWithNewClientToken: (newClientToken: string) => Promise<void>;
15
+ handleResumeSuccess: () => Promise<void>;
16
+ handleResumeFailure: (errorMessage: string | null) => Promise<void>;
17
+ handlePaymentCreationAbort: (errorMessage: string | null) => Promise<void>;
18
+ handlePaymentCreationContinue: () => Promise<void>;
19
+ setImplementedRNCallbacks: (implementedRNCallbacks: any) => Promise<void>;
20
+ disposePrimerHeadlessUniversalCheckout: () => Promise<void>;
21
+ };
22
+ export default RNPrimerHeadlessUniversalCheckout;
@@ -0,0 +1,22 @@
1
+ import type { PrimerCheckoutData } from '../models/PrimerCheckoutData';
2
+ import type { PrimerCheckoutPaymentMethodData } from '../models/PrimerCheckoutPaymentMethodData';
3
+ import type { PrimerTokenizationHandler, PrimerResumeHandler, PrimerPaymentCreationHandler, PrimerErrorHandler } from '../models/PrimerInterfaces';
4
+ import type { PrimerClientSession } from '../models/PrimerClientSession';
5
+ import type { PrimerPaymentMethodTokenData } from '../models/PrimerPaymentMethodTokenData';
6
+ import type { PrimerError } from '../models/PrimerError';
7
+ export interface PrimerHeadlessUniversalCheckoutStartResponse {
8
+ paymentMethodTypes: string[];
9
+ }
10
+ export interface PrimerHeadlessUniversalCheckoutCallbacks {
11
+ onBeforeClientSessionUpdate?: () => void;
12
+ onClientSessionUpdate?: (clientSession: PrimerClientSession) => void;
13
+ onBeforePaymentCreate?: (checkoutPaymentMethodData: PrimerCheckoutPaymentMethodData, handler: PrimerPaymentCreationHandler) => void;
14
+ onCheckoutComplete?: (checkoutData: PrimerCheckoutData) => void;
15
+ onTokenizeSuccess?: (paymentMethodTokenData: PrimerPaymentMethodTokenData, handler: PrimerTokenizationHandler) => void;
16
+ onResumeSuccess?: (resumeToken: string, handler: PrimerResumeHandler) => void;
17
+ onError?: (error: PrimerError, checkoutData: PrimerCheckoutData | null, handler: PrimerErrorHandler | undefined) => void;
18
+ onPrepareStart?: (paymentMethodType: string) => void;
19
+ onTokenizeStart?: (paymentMethodType: string) => void;
20
+ onPaymentMethodShow?: (paymentMethodType: string) => void;
21
+ onAvailablePaymentMethodTypesLoad?: (paymentMethodTypes: string[]) => void;
22
+ }
@@ -1,9 +1,10 @@
1
1
  export { Primer } from './Primer';
2
2
  export { PrimerSettings } from './models/PrimerSettings';
3
3
  export { PrimerSessionIntent } from './models/PrimerSessionIntent';
4
- export { PrimerPaymentCreationHandler, PrimerTokenizationHandler, PrimerResumeHandler, PrimerErrorHandler, } from './models/Primer';
4
+ export { PrimerPaymentCreationHandler, PrimerTokenizationHandler, PrimerResumeHandler, PrimerErrorHandler, } from './models/PrimerInterfaces';
5
5
  export { PrimerPaymentMethodTokenData } from './models/PrimerPaymentMethodTokenData';
6
6
  export { PrimerClientSession, PrimerOrder, PrimerLineItem, PrimerCustomer, PrimerAddress, } from './models/PrimerClientSession';
7
7
  export { PrimerCheckoutData, PrimerCheckoutDataPayment, } from './models/PrimerCheckoutData';
8
8
  export { PrimerCheckoutPaymentMethodData } from './models/PrimerCheckoutPaymentMethodData';
9
9
  export { PrimerError } from './models/PrimerError';
10
+ export { PrimerHeadlessUniversalCheckout } from './headless_checkout/PrimerHeadlessUniversalCheckout';
@@ -1,11 +1,12 @@
1
1
  import type { PrimerSessionIntent } from "./PrimerSessionIntent";
2
2
  import type { PrimerSettings } from "./PrimerSettings";
3
- export interface Primer {
3
+ export interface IPrimer {
4
4
  configure(settings: PrimerSettings): Promise<void>;
5
5
  showUniversalCheckout(clientToken: string): Promise<void>;
6
6
  showVaultManager(clientToken: string): Promise<void>;
7
7
  showPaymentMethod(paymentMethodType: string, intent: PrimerSessionIntent, clientToken: string): Promise<void>;
8
8
  dismiss(): void;
9
+ dispose(): void;
9
10
  }
10
11
  export interface PrimerPaymentCreationHandler {
11
12
  abortPaymentCreation(errorMessage: string | null): void;
@@ -1,4 +1,4 @@
1
- import type { PrimerErrorHandler, PrimerPaymentCreationHandler, PrimerResumeHandler, PrimerTokenizationHandler } from "./Primer";
1
+ import type { PrimerErrorHandler, PrimerPaymentCreationHandler, PrimerResumeHandler, PrimerTokenizationHandler } from "./PrimerInterfaces";
2
2
  import type { PrimerCheckoutData } from "./PrimerCheckoutData";
3
3
  import type { PrimerCheckoutPaymentMethodData } from "./PrimerCheckoutPaymentMethodData";
4
4
  import type { PrimerClientSession } from "./PrimerClientSession";
@@ -18,8 +18,12 @@ interface IPrimerSettings {
18
18
  onCheckoutComplete?: (checkoutData: PrimerCheckoutData) => void;
19
19
  onTokenizeSuccess?: (paymentMethodTokenData: PrimerPaymentMethodTokenData, handler: PrimerTokenizationHandler) => void;
20
20
  onResumeSuccess?: (resumeToken: string, handler: PrimerResumeHandler) => void;
21
- onError?: (error: PrimerError, checkoutData: PrimerCheckoutData | null, handler: PrimerErrorHandler) => void;
21
+ onError?: (error: PrimerError, checkoutData: PrimerCheckoutData | null, handler: PrimerErrorHandler | undefined) => void;
22
22
  onDismiss?: () => void;
23
+ onPrepareStart?: (paymentMethod: string) => void;
24
+ onTokenizeStart?: (paymentMethod: string) => void;
25
+ onPaymentMethodShow?: (paymentMethod: string) => void;
26
+ onAvailablePaymentMethodsLoad?: (paymentMethods: string[]) => void;
23
27
  }
24
28
  interface IPrimerLocaleData {
25
29
  languageCode?: string;
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primer-io/react-native",
3
- "version": "2.0.0",
3
+ "version": "2.1.1",
4
4
  "description": "Primer SDK for RN",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -17,5 +17,5 @@ Pod::Spec.new do |s|
17
17
  s.source_files = "ios/**/*.{h,m,mm,swift}"
18
18
 
19
19
  s.dependency "React-Core"
20
- s.dependency "PrimerSDK", "2.0.0"
20
+ s.dependency "PrimerSDK", "2.1.0"
21
21
  end
package/src/Primer.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import type { PrimerCheckoutData } from './models/PrimerCheckoutData';
2
- import type { Primer as IPrimer, PrimerErrorHandler, PrimerPaymentCreationHandler, PrimerResumeHandler, PrimerTokenizationHandler } from './models/Primer';
3
2
  import type { PrimerSessionIntent } from './models/PrimerSessionIntent';
4
3
  import type { PrimerSettings } from './models/PrimerSettings';
5
4
  import RNPrimer from './RNPrimer';
@@ -7,6 +6,7 @@ import type { PrimerCheckoutPaymentMethodData } from './models/PrimerCheckoutPay
7
6
  import type { PrimerClientSession } from './models/PrimerClientSession';
8
7
  import type { PrimerPaymentMethodTokenData } from './models/PrimerPaymentMethodTokenData';
9
8
  import { PrimerError } from './models/PrimerError';
9
+ import type { IPrimer, PrimerErrorHandler, PrimerPaymentCreationHandler, PrimerResumeHandler, PrimerTokenizationHandler } from './models/PrimerInterfaces';
10
10
 
11
11
  ///////////////////////////////////////////
12
12
  // DECISION HANDLERS
@@ -263,6 +263,11 @@ export const Primer: IPrimer = {
263
263
  });
264
264
  },
265
265
 
266
+ dispose(): void {
267
+ RNPrimer.removeAllListeners();
268
+ RNPrimer.dismiss();
269
+ },
270
+
266
271
  dismiss(): void {
267
272
  RNPrimer.removeAllListeners();
268
273
  RNPrimer.dismiss();
@@ -0,0 +1,73 @@
1
+ import { PrimerHeadlessUniversalCheckoutCardFormUIManager } from './RNTPrimerHeadlessUniversalCheckoutCardFormUIManager';
2
+ import React, { useEffect, useRef } from 'react';
3
+ import { NativeModules, requireNativeComponent, ViewProps } from 'react-native';
4
+
5
+
6
+ // PrimerCardNumberEditText
7
+ export const PrimerCardNumberEditTextRaw = requireNativeComponent<{}>(
8
+ 'PrimerCardNumberEditText'
9
+ );
10
+
11
+ type PrimerCardNumberEditTextProps = ViewProps;
12
+
13
+ const { PrimerRN } = NativeModules;
14
+
15
+ export const PrimerCardNumberEditText: React.FC<PrimerCardNumberEditTextProps> = (props) => {
16
+ const ref = useRef(React.createRef<any>());
17
+
18
+ useEffect(() => {
19
+ const tag = ref.current.current._nativeTag;
20
+ PrimerHeadlessUniversalCheckoutCardFormUIManager.addInput(tag);
21
+ return () => PrimerRN.removeInput(tag);
22
+ }, []);
23
+
24
+ const rawComponent = (
25
+ <PrimerCardNumberEditTextRaw ref={ref.current} {...props} />
26
+ );
27
+
28
+ return rawComponent;
29
+ };
30
+
31
+ // PrimerCardholderNameEditText
32
+ export const PrimerCardholderNameEditTextRaw = requireNativeComponent<{}>(
33
+ 'PrimerCardholderNameEditText'
34
+ );
35
+
36
+ type PrimerCardholderNameEditTextProps = ViewProps;
37
+
38
+ export const PrimerCardholderNameEditText: React.FC<PrimerCardholderNameEditTextProps> = (
39
+ props
40
+ ) => {
41
+ const ref = useRef(React.createRef<any>());
42
+
43
+ useEffect(() => {
44
+ const tag = ref.current.current._nativeTag;
45
+ PrimerRN.addInput(tag);
46
+ return () => PrimerRN.removeInput(tag);
47
+ }, []);
48
+ return <PrimerCardholderNameEditTextRaw ref={ref.current} {...props} />;
49
+ };
50
+
51
+ // PrimerExpiryEditText
52
+ export const PrimerExpiryEditTextRaw = requireNativeComponent<{}>(
53
+ 'PrimerExpiryEditText'
54
+ );
55
+
56
+ type PrimerExpiryEditTextProps = ViewProps;
57
+
58
+ export const PrimerExpiryEditText: React.FC<PrimerExpiryEditTextProps> = (
59
+ props
60
+ ) => {
61
+ return <PrimerExpiryEditTextRaw {...props} />;
62
+ };
63
+
64
+ // cvv
65
+ export const PrimerCvvEditTextRaw = requireNativeComponent<{}>(
66
+ 'PrimerCvvEditText'
67
+ );
68
+
69
+ type PrimerCvvEditTextProps = ViewProps;
70
+
71
+ export const PrimerCvvEditText: React.FC<PrimerCvvEditTextProps> = (props) => {
72
+ return <PrimerCvvEditTextRaw {...props} />;
73
+ };
package/src/RNPrimer.ts CHANGED
@@ -117,6 +117,17 @@ const RNPrimer = {
117
117
  });
118
118
  },
119
119
 
120
+ dispose: (): Promise<void> => {
121
+ return new Promise(async (resolve, reject) => {
122
+ try {
123
+ await NativePrimer.dispose();
124
+ resolve();
125
+ } catch (err) {
126
+ reject(err);
127
+ }
128
+ });
129
+ },
130
+
120
131
  ///////////////////////////////////////////
121
132
  // DECISION HANDLERS
122
133
  ///////////////////////////////////////////
@@ -239,6 +250,8 @@ const RNPrimer = {
239
250
  });
240
251
  },
241
252
 
253
+ // HELPERS
254
+
242
255
  setImplementedRNCallbacks: (implementedRNCallbacks: any): Promise<void> => {
243
256
  return new Promise(async (resolve, reject) => {
244
257
  try {
@@ -0,0 +1,2 @@
1
+ import { NativeModules } from 'react-native';
2
+ export const { PrimerHeadlessUniversalCheckoutCardFormUIManager } = NativeModules;