@deuna/react-native-sdk 1.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.
Files changed (190) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +15 -0
  3. package/lib/module/DeunaLogs.js +18 -0
  4. package/lib/module/DeunaLogs.js.map +1 -0
  5. package/lib/module/DeunaSDK.js +207 -0
  6. package/lib/module/DeunaSDK.js.map +1 -0
  7. package/lib/module/components/DeunaWebView.js +37 -0
  8. package/lib/module/components/DeunaWebView.js.map +1 -0
  9. package/lib/module/components/DeunaWidget.js +82 -0
  10. package/lib/module/components/DeunaWidget.js.map +1 -0
  11. package/lib/module/components/NewTabWebView.js +55 -0
  12. package/lib/module/components/NewTabWebView.js.map +1 -0
  13. package/lib/module/components/WebViewLoader.js +25 -0
  14. package/lib/module/components/WebViewLoader.js.map +1 -0
  15. package/lib/module/controllers/BaseWebViewController.js +252 -0
  16. package/lib/module/controllers/BaseWebViewController.js.map +1 -0
  17. package/lib/module/controllers/ElementsWidgetController.js +64 -0
  18. package/lib/module/controllers/ElementsWidgetController.js.map +1 -0
  19. package/lib/module/controllers/OpenInNewTabController.js +34 -0
  20. package/lib/module/controllers/OpenInNewTabController.js.map +1 -0
  21. package/lib/module/controllers/PaymentWidgetController.js +98 -0
  22. package/lib/module/controllers/PaymentWidgetController.js.map +1 -0
  23. package/lib/module/helpers/Completer.js +30 -0
  24. package/lib/module/helpers/Completer.js.map +1 -0
  25. package/lib/module/helpers/getController.js +48 -0
  26. package/lib/module/helpers/getController.js.map +1 -0
  27. package/lib/module/index.js +7 -0
  28. package/lib/module/index.js.map +1 -0
  29. package/lib/module/interfaces/constants.js +8 -0
  30. package/lib/module/interfaces/constants.js.map +1 -0
  31. package/lib/module/interfaces/errors.js +36 -0
  32. package/lib/module/interfaces/errors.js.map +1 -0
  33. package/lib/module/interfaces/events/checkout.js +45 -0
  34. package/lib/module/interfaces/events/checkout.js.map +1 -0
  35. package/lib/module/interfaces/events/elements.js +28 -0
  36. package/lib/module/interfaces/events/elements.js.map +1 -0
  37. package/lib/module/interfaces/index.js +6 -0
  38. package/lib/module/interfaces/index.js.map +1 -0
  39. package/lib/module/interfaces/types.js +13 -0
  40. package/lib/module/interfaces/types.js.map +1 -0
  41. package/lib/module/package.json +1 -0
  42. package/lib/module/types/base.js +24 -0
  43. package/lib/module/types/base.js.map +1 -0
  44. package/lib/module/types/env.js +48 -0
  45. package/lib/module/types/env.js.map +1 -0
  46. package/lib/module/types/helpers/buildElementsLink.js +75 -0
  47. package/lib/module/types/helpers/buildElementsLink.js.map +1 -0
  48. package/lib/module/types/helpers/buildNextActionLink.js +33 -0
  49. package/lib/module/types/helpers/buildNextActionLink.js.map +1 -0
  50. package/lib/module/types/helpers/buildPaymentLink.js +54 -0
  51. package/lib/module/types/helpers/buildPaymentLink.js.map +1 -0
  52. package/lib/module/types/helpers/buildVoucherLink.js +48 -0
  53. package/lib/module/types/helpers/buildVoucherLink.js.map +1 -0
  54. package/lib/module/types/helpers/index.js +13 -0
  55. package/lib/module/types/helpers/index.js.map +1 -0
  56. package/lib/module/types/helpers/urlConfig.js +19 -0
  57. package/lib/module/types/helpers/urlConfig.js.map +1 -0
  58. package/lib/module/types/index.js +7 -0
  59. package/lib/module/types/index.js.map +1 -0
  60. package/lib/module/types/interfaces/callbacks.js +2 -0
  61. package/lib/module/types/interfaces/callbacks.js.map +1 -0
  62. package/lib/module/types/interfaces/customStyle.js +2 -0
  63. package/lib/module/types/interfaces/customStyle.js.map +1 -0
  64. package/lib/module/types/interfaces/index.js +9 -0
  65. package/lib/module/types/interfaces/index.js.map +1 -0
  66. package/lib/module/types/interfaces/initWidgetBase.js +4 -0
  67. package/lib/module/types/interfaces/initWidgetBase.js.map +1 -0
  68. package/lib/module/types/interfaces/merchant.js +2 -0
  69. package/lib/module/types/interfaces/merchant.js.map +1 -0
  70. package/lib/module/types/interfaces/order.js +2 -0
  71. package/lib/module/types/interfaces/order.js.map +1 -0
  72. package/lib/module/types/interfaces/user.js +2 -0
  73. package/lib/module/types/interfaces/user.js.map +1 -0
  74. package/lib/module/types/utils/hasKey.js +8 -0
  75. package/lib/module/types/utils/hasKey.js.map +1 -0
  76. package/lib/module/types/utils/index.js +4 -0
  77. package/lib/module/types/utils/index.js.map +1 -0
  78. package/lib/typescript/deuna-sdk-react-native/src/DeunaLogs.d.ts +6 -0
  79. package/lib/typescript/deuna-sdk-react-native/src/DeunaLogs.d.ts.map +1 -0
  80. package/lib/typescript/deuna-sdk-react-native/src/DeunaSDK.d.ts +88 -0
  81. package/lib/typescript/deuna-sdk-react-native/src/DeunaSDK.d.ts.map +1 -0
  82. package/lib/typescript/deuna-sdk-react-native/src/components/DeunaWebView.d.ts +11 -0
  83. package/lib/typescript/deuna-sdk-react-native/src/components/DeunaWebView.d.ts.map +1 -0
  84. package/lib/typescript/deuna-sdk-react-native/src/components/DeunaWidget.d.ts +7 -0
  85. package/lib/typescript/deuna-sdk-react-native/src/components/DeunaWidget.d.ts.map +1 -0
  86. package/lib/typescript/deuna-sdk-react-native/src/components/NewTabWebView.d.ts +7 -0
  87. package/lib/typescript/deuna-sdk-react-native/src/components/NewTabWebView.d.ts.map +1 -0
  88. package/lib/typescript/deuna-sdk-react-native/src/components/WebViewLoader.d.ts +2 -0
  89. package/lib/typescript/deuna-sdk-react-native/src/components/WebViewLoader.d.ts.map +1 -0
  90. package/lib/typescript/deuna-sdk-react-native/src/controllers/BaseWebViewController.d.ts +83 -0
  91. package/lib/typescript/deuna-sdk-react-native/src/controllers/BaseWebViewController.d.ts.map +1 -0
  92. package/lib/typescript/deuna-sdk-react-native/src/controllers/ElementsWidgetController.d.ts +9 -0
  93. package/lib/typescript/deuna-sdk-react-native/src/controllers/ElementsWidgetController.d.ts.map +1 -0
  94. package/lib/typescript/deuna-sdk-react-native/src/controllers/OpenInNewTabController.d.ts +12 -0
  95. package/lib/typescript/deuna-sdk-react-native/src/controllers/OpenInNewTabController.d.ts.map +1 -0
  96. package/lib/typescript/deuna-sdk-react-native/src/controllers/PaymentWidgetController.d.ts +12 -0
  97. package/lib/typescript/deuna-sdk-react-native/src/controllers/PaymentWidgetController.d.ts.map +1 -0
  98. package/lib/typescript/deuna-sdk-react-native/src/helpers/Completer.d.ts +12 -0
  99. package/lib/typescript/deuna-sdk-react-native/src/helpers/Completer.d.ts.map +1 -0
  100. package/lib/typescript/deuna-sdk-react-native/src/helpers/getController.d.ts +22 -0
  101. package/lib/typescript/deuna-sdk-react-native/src/helpers/getController.d.ts.map +1 -0
  102. package/lib/typescript/deuna-sdk-react-native/src/index.d.ts +5 -0
  103. package/lib/typescript/deuna-sdk-react-native/src/index.d.ts.map +1 -0
  104. package/lib/typescript/deuna-sdk-react-native/src/interfaces/constants.d.ts +6 -0
  105. package/lib/typescript/deuna-sdk-react-native/src/interfaces/constants.d.ts.map +1 -0
  106. package/lib/typescript/deuna-sdk-react-native/src/interfaces/errors.d.ts +32 -0
  107. package/lib/typescript/deuna-sdk-react-native/src/interfaces/errors.d.ts.map +1 -0
  108. package/lib/typescript/deuna-sdk-react-native/src/interfaces/events/checkout.d.ts +46 -0
  109. package/lib/typescript/deuna-sdk-react-native/src/interfaces/events/checkout.d.ts.map +1 -0
  110. package/lib/typescript/deuna-sdk-react-native/src/interfaces/events/elements.d.ts +29 -0
  111. package/lib/typescript/deuna-sdk-react-native/src/interfaces/events/elements.d.ts.map +1 -0
  112. package/lib/typescript/deuna-sdk-react-native/src/interfaces/index.d.ts +4 -0
  113. package/lib/typescript/deuna-sdk-react-native/src/interfaces/index.d.ts.map +1 -0
  114. package/lib/typescript/deuna-sdk-react-native/src/interfaces/types.d.ts +15 -0
  115. package/lib/typescript/deuna-sdk-react-native/src/interfaces/types.d.ts.map +1 -0
  116. package/lib/typescript/deuna-sdk-react-native/src/types/base.d.ts +91 -0
  117. package/lib/typescript/deuna-sdk-react-native/src/types/base.d.ts.map +1 -0
  118. package/lib/typescript/deuna-sdk-react-native/src/types/env.d.ts +45 -0
  119. package/lib/typescript/deuna-sdk-react-native/src/types/env.d.ts.map +1 -0
  120. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildElementsLink.d.ts +3 -0
  121. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildElementsLink.d.ts.map +1 -0
  122. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildNextActionLink.d.ts +3 -0
  123. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildNextActionLink.d.ts.map +1 -0
  124. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildPaymentLink.d.ts +8 -0
  125. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildPaymentLink.d.ts.map +1 -0
  126. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildVoucherLink.d.ts +8 -0
  127. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildVoucherLink.d.ts.map +1 -0
  128. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/index.d.ts +7 -0
  129. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/index.d.ts.map +1 -0
  130. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/urlConfig.d.ts +34 -0
  131. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/urlConfig.d.ts.map +1 -0
  132. package/lib/typescript/deuna-sdk-react-native/src/types/index.d.ts +5 -0
  133. package/lib/typescript/deuna-sdk-react-native/src/types/index.d.ts.map +1 -0
  134. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/callbacks.d.ts +38 -0
  135. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/callbacks.d.ts.map +1 -0
  136. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/customStyle.d.ts +156 -0
  137. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/customStyle.d.ts.map +1 -0
  138. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/index.d.ts +7 -0
  139. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/index.d.ts.map +1 -0
  140. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/initWidgetBase.d.ts +78 -0
  141. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/initWidgetBase.d.ts.map +1 -0
  142. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/merchant.d.ts +76 -0
  143. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/merchant.d.ts.map +1 -0
  144. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/order.d.ts +3 -0
  145. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/order.d.ts.map +1 -0
  146. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/user.d.ts +23 -0
  147. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/user.d.ts.map +1 -0
  148. package/lib/typescript/deuna-sdk-react-native/src/types/utils/hasKey.d.ts +2 -0
  149. package/lib/typescript/deuna-sdk-react-native/src/types/utils/hasKey.d.ts.map +1 -0
  150. package/lib/typescript/deuna-sdk-react-native/src/types/utils/index.d.ts +2 -0
  151. package/lib/typescript/deuna-sdk-react-native/src/types/utils/index.d.ts.map +1 -0
  152. package/lib/typescript/package.json +1 -0
  153. package/package.json +159 -0
  154. package/src/DeunaLogs.ts +17 -0
  155. package/src/DeunaSDK.ts +269 -0
  156. package/src/components/DeunaWebView.tsx +38 -0
  157. package/src/components/DeunaWidget.tsx +92 -0
  158. package/src/components/NewTabWebView.tsx +61 -0
  159. package/src/components/WebViewLoader.tsx +22 -0
  160. package/src/controllers/BaseWebViewController.ts +289 -0
  161. package/src/controllers/ElementsWidgetController.ts +78 -0
  162. package/src/controllers/OpenInNewTabController.ts +39 -0
  163. package/src/controllers/PaymentWidgetController.ts +118 -0
  164. package/src/helpers/Completer.ts +33 -0
  165. package/src/helpers/getController.ts +83 -0
  166. package/src/index.tsx +4 -0
  167. package/src/interfaces/constants.ts +5 -0
  168. package/src/interfaces/errors.ts +34 -0
  169. package/src/interfaces/events/checkout.ts +46 -0
  170. package/src/interfaces/events/elements.ts +29 -0
  171. package/src/interfaces/index.ts +3 -0
  172. package/src/interfaces/types.ts +13 -0
  173. package/src/types/base.ts +126 -0
  174. package/src/types/env.ts +51 -0
  175. package/src/types/helpers/buildElementsLink.ts +87 -0
  176. package/src/types/helpers/buildNextActionLink.ts +42 -0
  177. package/src/types/helpers/buildPaymentLink.ts +63 -0
  178. package/src/types/helpers/buildVoucherLink.ts +53 -0
  179. package/src/types/helpers/index.ts +11 -0
  180. package/src/types/helpers/urlConfig.ts +80 -0
  181. package/src/types/index.ts +4 -0
  182. package/src/types/interfaces/callbacks.ts +43 -0
  183. package/src/types/interfaces/customStyle.ts +189 -0
  184. package/src/types/interfaces/index.ts +6 -0
  185. package/src/types/interfaces/initWidgetBase.ts +97 -0
  186. package/src/types/interfaces/merchant.ts +79 -0
  187. package/src/types/interfaces/order.ts +1 -0
  188. package/src/types/interfaces/user.ts +22 -0
  189. package/src/types/utils/hasKey.ts +5 -0
  190. package/src/types/utils/index.ts +1 -0
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+
3
+ import { DeunaLogs } from "../DeunaLogs.js";
4
+ import { submitError } from "../interfaces/index.js";
5
+ export let WebViewEventType = /*#__PURE__*/function (WebViewEventType) {
6
+ WebViewEventType["consoleLog"] = "consoleLog";
7
+ WebViewEventType["eventDispatch"] = "eventDispatch";
8
+ WebViewEventType["jsExecutor"] = "jsExecutor";
9
+ WebViewEventType["openInNewTab"] = "openInNewTab";
10
+ WebViewEventType["redirect"] = "redirect";
11
+ return WebViewEventType;
12
+ }({});
13
+ export class BaseWebViewController {
14
+ webView = null;
15
+ url = null;
16
+ delegate = null;
17
+
18
+ /**
19
+ * Called when the web view url is loaded successfully
20
+ */
21
+
22
+ /**
23
+ * Called when the web view fails to load a URL
24
+ */
25
+
26
+ /**
27
+ * Release the web view resources
28
+ */
29
+ dispose() {
30
+ this.webView?.stopLoading();
31
+ this.webView = null;
32
+ }
33
+ }
34
+ export class DeunaWebViewController extends BaseWebViewController {
35
+ hidePayButton = false;
36
+ redirectUrl = null;
37
+ closedAction = 'systemAction';
38
+ jsExecutor = new JsExecutor();
39
+ setWebView = webView => {
40
+ this.webView = webView;
41
+ this.jsExecutor.webView = webView;
42
+ };
43
+ onLoad = () => {
44
+ this.setXprops();
45
+ };
46
+ onMessage = event => {
47
+ const eventData = JSON.parse(event.nativeEvent.data);
48
+ const mapper = {
49
+ [WebViewEventType.consoleLog]: () => {
50
+ DeunaLogs.info(`CONSOLE LOG`, JSON.stringify(eventData.message, null, 2));
51
+ },
52
+ [WebViewEventType.eventDispatch]: () => {
53
+ this.onEventDispatch(eventData.event);
54
+ },
55
+ [WebViewEventType.jsExecutor]: () => {
56
+ const {
57
+ data,
58
+ requestId
59
+ } = eventData;
60
+ this.jsExecutor.requests.get(requestId)?.(data);
61
+ this.jsExecutor.requests.delete(requestId);
62
+ },
63
+ [WebViewEventType.openInNewTab]: () => {
64
+ this.delegate?.onOpenInNewTab?.(eventData.url);
65
+ },
66
+ [WebViewEventType.redirect]: () => {
67
+ if (this.redirectUrl) {
68
+ return;
69
+ }
70
+ this.redirectUrl = eventData.url;
71
+ this.delegate?.onOpenInNewTab?.(eventData.url);
72
+ }
73
+ };
74
+ mapper[eventData.type]?.();
75
+ };
76
+ setXprops = () => {
77
+ this.webView?.injectJavaScript(`
78
+ document.addEventListener('click', function(event) {
79
+ if (event.target.tagName === 'A' && event.target.href) {
80
+ window.ReactNativeWebView.postMessage(JSON.stringify({ type: '${WebViewEventType.redirect}', url: event.target.href }));
81
+ event.preventDefault(); // Prevent default navigation
82
+ event.stopPropagation();
83
+ }
84
+ });
85
+ console.log = function(message) {
86
+ window.ReactNativeWebView.postMessage(JSON.stringify({ type: '${WebViewEventType.consoleLog}', message }));
87
+ };
88
+ window.open = function(url, target, features) {
89
+ window.ReactNativeWebView.postMessage(JSON.stringify({ type: '${WebViewEventType.openInNewTab}', url }));
90
+ };
91
+ window.xprops = {
92
+ hidePayButton: ${this.hidePayButton},
93
+ onEventDispatch: function (event) {
94
+ window.ReactNativeWebView.postMessage(JSON.stringify({ type: '${WebViewEventType.eventDispatch}', event }));
95
+ },
96
+ onCustomStyleSubscribe: function (fn) {
97
+ window.setCustomStyle = fn;
98
+ },
99
+ onRefetchOrderSubscribe: function (fn) {
100
+ window.deunaRefetchOrder = fn;
101
+ },
102
+ onGetStateSubscribe: function (state){
103
+ window.deunaWidgetState = state;
104
+ },
105
+ isValid: function(fn){
106
+ window.isValid = fn;
107
+ },
108
+ onSubmit: function (fn) {
109
+ window.submit = fn;
110
+ },
111
+ }
112
+ `);
113
+ };
114
+
115
+ /**
116
+ * Gets the current widget state
117
+ * @returns The widget state
118
+ */
119
+ getWidgetState = async () => {
120
+ const result = await this.jsExecutor.execute(`
121
+ if(!window.deunaWidgetState){
122
+ sendResult({ deunaWidgetState: null });
123
+ return;
124
+ }
125
+ sendResult({ deunaWidgetState: window.deunaWidgetState });
126
+ `);
127
+ return result?.deunaWidgetState;
128
+ };
129
+
130
+ /**
131
+ * Refetches the order
132
+ * @returns The order data | returns null if the order is not found or an error occurs
133
+ */
134
+ refetchOrder = async () => {
135
+ const result = await this.jsExecutor.execute(`
136
+ if(typeof window.deunaRefetchOrder !== 'function'){
137
+ sendResult({order: null});
138
+ return;
139
+ }
140
+ window.deunaRefetchOrder()
141
+ .then((order) => {
142
+ sendResult({order});
143
+ })
144
+ .catch(() => {
145
+ sendResult({data: null});
146
+ });
147
+ `);
148
+ return result?.order ?? null;
149
+ };
150
+
151
+ /**
152
+ * Sets the custom style for the widget
153
+ * @param style - The custom style to set
154
+ */
155
+ setCustomStyle = async style => {
156
+ await this.jsExecutor.execute(`
157
+ window.setCustomStyle(${JSON.stringify(style)});
158
+ `);
159
+ };
160
+
161
+ /**
162
+ * Checks if the widget form data is valid
163
+ */
164
+ isValid = async () => {
165
+ const data = await this.jsExecutor.execute(`
166
+ if(typeof window.isValid !== 'function'){
167
+ console.log('❌ window.isValid is not a function');
168
+ sendResult({isValid:false});
169
+ return;
170
+ }
171
+ sendResult( {isValid: window.isValid() });
172
+ `);
173
+ return data?.isValid ?? false;
174
+ };
175
+
176
+ /**
177
+ * Submits the form data to the server
178
+ * @returns The result of the submission
179
+ */
180
+ submit = async () => {
181
+ const data = await this.jsExecutor.execute(`
182
+ if(typeof window.submit !== 'function'){
183
+ console.log('❌ window.submit is not a function');
184
+ sendResult({status:"${submitError.status}", code:"${submitError.code}", message:"${submitError.message}" });
185
+ return;
186
+ }
187
+ window.submit()
188
+ .then((data) => {
189
+ sendResult(data);
190
+ })
191
+ .catch((error) => {
192
+ sendResult({status:"${submitError.status}", code:"${submitError.code}", message: error.message ?? "${submitError.message}" });
193
+ });
194
+ `);
195
+ return data;
196
+ };
197
+ takeScreenshot = async () => {
198
+ const data = await this.jsExecutor.execute(`
199
+ function takeScreenshot() {
200
+ html2canvas(document.body, { allowTaint: true, useCORS: true })
201
+ .then((canvas) => {
202
+ // Convert the canvas to a base64 image
203
+ var imgData = canvas.toDataURL("image/png");
204
+ sendResult({imgData: imgData});
205
+ })
206
+ .catch((error) => {
207
+ sendResult({imgData: null});
208
+ });
209
+ }
210
+
211
+ // If html2canvas is not added
212
+ if (typeof html2canvas === "undefined") {
213
+ var script = document.createElement("script");
214
+ script.src = "https://html2canvas.hertzen.com/dist/html2canvas.min.js";
215
+ script.onload = function() {
216
+ takeScreenshot();
217
+ };
218
+ document.head.appendChild(script);
219
+ } else {
220
+ takeScreenshot();
221
+ }
222
+ `);
223
+ return data?.imgData ?? null;
224
+ };
225
+ }
226
+ class JsExecutor {
227
+ requestId = 0;
228
+ webView = null;
229
+ requests = new Map();
230
+
231
+ /**
232
+ * Executes javascript code in the web view
233
+ * @param jsCode - The javascript code to execute
234
+ * @returns The result of the javascript code
235
+ */
236
+
237
+ execute = jsCode => {
238
+ this.requestId++;
239
+ this.webView?.injectJavaScript(`
240
+ (function() {
241
+ function sendResult(data){
242
+ window.ReactNativeWebView.postMessage(JSON.stringify({ type: '${WebViewEventType.jsExecutor}', data: data, requestId: ${this.requestId} }));
243
+ }
244
+ ${jsCode}
245
+ })();
246
+ `);
247
+ return new Promise(resolve => {
248
+ this.requests.set(this.requestId, resolve);
249
+ });
250
+ };
251
+ }
252
+ //# sourceMappingURL=BaseWebViewController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DeunaLogs","submitError","WebViewEventType","BaseWebViewController","webView","url","delegate","dispose","stopLoading","DeunaWebViewController","hidePayButton","redirectUrl","closedAction","jsExecutor","JsExecutor","setWebView","onLoad","setXprops","onMessage","event","eventData","JSON","parse","nativeEvent","data","mapper","consoleLog","info","stringify","message","eventDispatch","onEventDispatch","requestId","requests","get","delete","openInNewTab","onOpenInNewTab","redirect","type","injectJavaScript","getWidgetState","result","execute","deunaWidgetState","refetchOrder","order","setCustomStyle","style","isValid","submit","status","code","takeScreenshot","imgData","Map","jsCode","Promise","resolve","set"],"sourceRoot":"../../../src","sources":["controllers/BaseWebViewController.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+
3
+ import { DeunaWebViewController } from "./BaseWebViewController.js";
4
+ import { ElementsEventType } from "../interfaces/events/elements.js";
5
+ import { ElementsErrorType } from "../interfaces/index.js";
6
+ export class ElementsWidgetController extends DeunaWebViewController {
7
+ constructor(callbacks) {
8
+ super();
9
+ this.callbacks = callbacks;
10
+ }
11
+ onError = event => {
12
+ this.callbacks.onError?.({
13
+ type: ElementsErrorType.errorWhileLoadingTheURL,
14
+ metadata: {
15
+ code: ElementsErrorType.errorWhileLoadingTheURL,
16
+ message: event.message ?? 'Error while loading the URL'
17
+ }
18
+ });
19
+ };
20
+ onEventDispatch = event => {
21
+ const elementsEvent = event;
22
+ if (this.callbacks.onEventDispatch) {
23
+ this.callbacks.onEventDispatch(elementsEvent.type, elementsEvent.data);
24
+ }
25
+ const mapper = {
26
+ [ElementsEventType.vaultClosed]: () => {
27
+ this.closedAction = 'userAction';
28
+ this.delegate?.onCloseButtonPressed?.();
29
+ },
30
+ [ElementsEventType.vaultSaveSuccess]: () => {
31
+ this.delegate?.onCloseSubWebView?.();
32
+ this.callbacks.onSuccess?.(event.data);
33
+ },
34
+ [ElementsEventType.vaultSaveError]: () => {
35
+ this.delegate?.onCloseSubWebView?.();
36
+ this.delegate?.onCloseSubWebView?.();
37
+ const {
38
+ metadata
39
+ } = elementsEvent.data;
40
+ if (metadata) {
41
+ const errorCode = metadata.code ?? metadata.errorCode ?? ElementsErrorType.unknownError;
42
+ const errorMessage = metadata.message ?? metadata.errorMessage ?? metadata.reason ?? 'unknown error';
43
+ this.callbacks.onError?.({
44
+ type: ElementsErrorType.vaultSaveError,
45
+ metadata: {
46
+ code: errorCode,
47
+ message: errorMessage
48
+ }
49
+ });
50
+ } else {
51
+ this.callbacks.onError?.({
52
+ type: ElementsErrorType.unknownError,
53
+ metadata: {
54
+ code: ElementsErrorType.unknownError,
55
+ message: 'unknown error'
56
+ }
57
+ });
58
+ }
59
+ }
60
+ };
61
+ mapper[elementsEvent.type]?.();
62
+ };
63
+ }
64
+ //# sourceMappingURL=ElementsWidgetController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DeunaWebViewController","ElementsEventType","ElementsErrorType","ElementsWidgetController","constructor","callbacks","onError","event","type","errorWhileLoadingTheURL","metadata","code","message","onEventDispatch","elementsEvent","data","mapper","vaultClosed","closedAction","delegate","onCloseButtonPressed","vaultSaveSuccess","onCloseSubWebView","onSuccess","vaultSaveError","errorCode","unknownError","errorMessage","reason"],"sourceRoot":"../../../src","sources":["controllers/ElementsWidgetController.ts"],"mappings":";;AAAA,SAASA,sBAAsB,QAAQ,4BAAyB;AAChE,SAEEC,iBAAiB,QACZ,kCAA+B;AAEtC,SAASC,iBAAiB,QAAQ,wBAAe;AAEjD,OAAO,MAAMC,wBAAwB,SAASH,sBAAsB,CAAC;EACnEI,WAAWA,CAAUC,SAAkC,EAAE;IACvD,KAAK,CAAC,CAAC;IAAC,KADWA,SAAkC,GAAlCA,SAAkC;EAEvD;EAEAC,OAAO,GAAIC,KAAU,IAAK;IACxB,IAAI,CAACF,SAAS,CAACC,OAAO,GAAG;MACvBE,IAAI,EAAEN,iBAAiB,CAACO,uBAAuB;MAC/CC,QAAQ,EAAE;QACRC,IAAI,EAAET,iBAAiB,CAACO,uBAAuB;QAC/CG,OAAO,EAAEL,KAAK,CAACK,OAAO,IAAI;MAC5B;IACF,CAAC,CAAC;EACJ,CAAC;EAEDC,eAAe,GAAIN,KAA0B,IAAK;IAChD,MAAMO,aAAa,GAAGP,KAAsB;IAE5C,IAAI,IAAI,CAACF,SAAS,CAACQ,eAAe,EAAE;MAClC,IAAI,CAACR,SAAS,CAACQ,eAAe,CAACC,aAAa,CAACN,IAAI,EAAEM,aAAa,CAACC,IAAI,CAAC;IACxE;IAEA,MAAMC,MAAsD,GAAG;MAC7D,CAACf,iBAAiB,CAACgB,WAAW,GAAG,MAAM;QACrC,IAAI,CAACC,YAAY,GAAG,YAAY;QAChC,IAAI,CAACC,QAAQ,EAAEC,oBAAoB,GAAG,CAAC;MACzC,CAAC;MACD,CAACnB,iBAAiB,CAACoB,gBAAgB,GAAG,MAAM;QAC1C,IAAI,CAACF,QAAQ,EAAEG,iBAAiB,GAAG,CAAC;QACpC,IAAI,CAACjB,SAAS,CAACkB,SAAS,GAAGhB,KAAK,CAACQ,IAAI,CAAC;MACxC,CAAC;MACD,CAACd,iBAAiB,CAACuB,cAAc,GAAG,MAAM;QACxC,IAAI,CAACL,QAAQ,EAAEG,iBAAiB,GAAG,CAAC;QACpC,IAAI,CAACH,QAAQ,EAAEG,iBAAiB,GAAG,CAAC;QACpC,MAAM;UAAEZ;QAAS,CAAC,GAAGI,aAAa,CAACC,IAAI;QAEvC,IAAIL,QAAQ,EAAE;UACZ,MAAMe,SAAS,GACbf,QAAQ,CAACC,IAAI,IACbD,QAAQ,CAACe,SAAS,IAClBvB,iBAAiB,CAACwB,YAAY;UAEhC,MAAMC,YAAY,GAChBjB,QAAQ,CAACE,OAAO,IAChBF,QAAQ,CAACiB,YAAY,IACrBjB,QAAQ,CAACkB,MAAM,IACf,eAAe;UAEjB,IAAI,CAACvB,SAAS,CAACC,OAAO,GAAG;YACvBE,IAAI,EAAEN,iBAAiB,CAACsB,cAAc;YACtCd,QAAQ,EAAE;cACRC,IAAI,EAAEc,SAAS;cACfb,OAAO,EAAEe;YACX;UACF,CAAC,CAAC;QACJ,CAAC,MAAM;UACL,IAAI,CAACtB,SAAS,CAACC,OAAO,GAAG;YACvBE,IAAI,EAAEN,iBAAiB,CAACwB,YAAY;YACpChB,QAAQ,EAAE;cACRC,IAAI,EAAET,iBAAiB,CAACwB,YAAY;cACpCd,OAAO,EAAE;YACX;UACF,CAAC,CAAC;QACJ;MACF;IACF,CAAC;IAEDI,MAAM,CAACF,aAAa,CAACN,IAAI,CAAC,GAAG,CAAC;EAChC,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ import { BaseWebViewController } from "./BaseWebViewController.js";
4
+ import { DeunaLogs } from "../DeunaLogs.js";
5
+ export class OpenInNewTabController extends BaseWebViewController {
6
+ constructor(url) {
7
+ super();
8
+ this.url = url;
9
+ this.url = url;
10
+ }
11
+ setWebView = webView => {
12
+ this.webView = webView;
13
+ };
14
+ onLoad = () => {
15
+ this.setXprops();
16
+ };
17
+ onError = event => {
18
+ console.warn(event);
19
+ };
20
+ onMessage = event => {
21
+ const eventData = JSON.parse(event.nativeEvent.data);
22
+ if (eventData.type === 'console_log') {
23
+ DeunaLogs.info(`CONSOLE LOG`, eventData.message);
24
+ }
25
+ };
26
+ setXprops = () => {
27
+ this.webView?.injectJavaScript(`
28
+ console.log = function(message) {
29
+ window.ReactNativeWebView.postMessage(JSON.stringify({ type: 'console_log', message }));
30
+ };
31
+ `);
32
+ };
33
+ }
34
+ //# sourceMappingURL=OpenInNewTabController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BaseWebViewController","DeunaLogs","OpenInNewTabController","constructor","url","setWebView","webView","onLoad","setXprops","onError","event","console","warn","onMessage","eventData","JSON","parse","nativeEvent","data","type","info","message","injectJavaScript"],"sourceRoot":"../../../src","sources":["controllers/OpenInNewTabController.ts"],"mappings":";;AACA,SAASA,qBAAqB,QAAQ,4BAAyB;AAC/D,SAASC,SAAS,QAAQ,iBAAc;AAExC,OAAO,MAAMC,sBAAsB,SAASF,qBAAqB,CAAC;EAChEG,WAAWA,CAAUC,GAAW,EAAE;IAChC,KAAK,CAAC,CAAC;IAAC,KADWA,GAAW,GAAXA,GAAW;IAE9B,IAAI,CAACA,GAAG,GAAGA,GAAG;EAChB;EAEAC,UAAU,GAAIC,OAAgB,IAAK;IACjC,IAAI,CAACA,OAAO,GAAGA,OAAO;EACxB,CAAC;EAEDC,MAAM,GAAGA,CAAA,KAAM;IACb,IAAI,CAACC,SAAS,CAAC,CAAC;EAClB,CAAC;EAEDC,OAAO,GAAIC,KAAU,IAAK;IACxBC,OAAO,CAACC,IAAI,CAACF,KAAK,CAAC;EACrB,CAAC;EAEDG,SAAS,GAAIH,KAA0B,IAAK;IAC1C,MAAMI,SAAS,GAAGC,IAAI,CAACC,KAAK,CAACN,KAAK,CAACO,WAAW,CAACC,IAAI,CAAC;IACpD,IAAIJ,SAAS,CAACK,IAAI,KAAK,aAAa,EAAE;MACpClB,SAAS,CAACmB,IAAI,CAAC,aAAa,EAAEN,SAAS,CAACO,OAAO,CAAC;IAClD;EACF,CAAC;EAEDb,SAAS,GAAGA,CAAA,KAAM;IAChB,IAAI,CAACF,OAAO,EAAEgB,gBAAgB,CAC5B;AACN;AACA;AACA;AACA,OACI,CAAC;EACH,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+
3
+ import { CheckoutEventType, PaymentErrorType } from "../interfaces/index.js";
4
+ import { constants } from "../interfaces/constants.js";
5
+ import { DownloadType } from "../interfaces/types.js";
6
+ import { DeunaWebViewController } from "./BaseWebViewController.js";
7
+ export class PaymentWidgetController extends DeunaWebViewController {
8
+ constructor(callbacks) {
9
+ super();
10
+ this.callbacks = callbacks;
11
+ }
12
+ onError = event => {
13
+ this.callbacks.onError?.({
14
+ type: PaymentErrorType.errorWhileLoadingTheURL,
15
+ metadata: {
16
+ code: PaymentErrorType.errorWhileLoadingTheURL,
17
+ message: event.message ?? 'Error while loading the URL'
18
+ }
19
+ });
20
+ };
21
+ onEventDispatch = async event => {
22
+ const checkoutEvent = event;
23
+
24
+ // This event is used to listen when a voucher save request is made
25
+ if (checkoutEvent.type === constants.apmSaveId) {
26
+ const {
27
+ voucherPdfDownloadUrl
28
+ } = checkoutEvent.data.metadata;
29
+
30
+ // If the file url is provided, download the file and save it to the device
31
+ if (voucherPdfDownloadUrl) {
32
+ this.callbacks.onDownloadFile?.({
33
+ type: DownloadType.URL,
34
+ data: voucherPdfDownloadUrl
35
+ });
36
+ } else {
37
+ // Take a screenshot of current content in the webview
38
+ const base64Image = await this.takeScreenshot();
39
+ if (base64Image) {
40
+ this.callbacks.onDownloadFile?.({
41
+ type: DownloadType.BASE64,
42
+ data: base64Image
43
+ });
44
+ }
45
+ }
46
+ return;
47
+ }
48
+ if (this.callbacks.onEventDispatch) {
49
+ this.callbacks.onEventDispatch(checkoutEvent.type, checkoutEvent.data);
50
+ }
51
+ const mapper = {
52
+ [CheckoutEventType.linkClose]: () => {
53
+ this.closedAction = 'userAction';
54
+ this.delegate?.onCloseButtonPressed?.();
55
+ },
56
+ [CheckoutEventType.onBinDetected]: () => {
57
+ this.callbacks.onCardBinDetected?.(checkoutEvent.data.metadata);
58
+ },
59
+ [CheckoutEventType.onInstallmentSelected]: () => {
60
+ this.callbacks.onInstallmentSelected?.(checkoutEvent.data.metadata);
61
+ },
62
+ [CheckoutEventType.paymentProcessing]: () => {
63
+ this.callbacks.onPaymentProcessing?.();
64
+ },
65
+ [CheckoutEventType.purchase]: () => {
66
+ this.delegate?.onCloseSubWebView?.();
67
+ this.callbacks.onSuccess?.(checkoutEvent.data.order);
68
+ },
69
+ [CheckoutEventType.purchaseError]: () => {
70
+ this.delegate?.onCloseSubWebView?.();
71
+ const {
72
+ metadata
73
+ } = checkoutEvent.data;
74
+ if (metadata) {
75
+ const errorCode = metadata.code ?? metadata.errorCode ?? PaymentErrorType.unknownError;
76
+ const errorMessage = metadata.message ?? metadata.errorMessage ?? metadata.reason ?? 'unknown error';
77
+ this.callbacks.onError?.({
78
+ type: PaymentErrorType.paymentError,
79
+ metadata: {
80
+ code: errorCode,
81
+ message: errorMessage
82
+ }
83
+ });
84
+ } else {
85
+ this.callbacks.onError?.({
86
+ type: PaymentErrorType.unknownError,
87
+ metadata: {
88
+ code: PaymentErrorType.unknownError,
89
+ message: 'unknown error'
90
+ }
91
+ });
92
+ }
93
+ }
94
+ };
95
+ mapper[checkoutEvent.type]?.();
96
+ };
97
+ }
98
+ //# sourceMappingURL=PaymentWidgetController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CheckoutEventType","PaymentErrorType","constants","DownloadType","DeunaWebViewController","PaymentWidgetController","constructor","callbacks","onError","event","type","errorWhileLoadingTheURL","metadata","code","message","onEventDispatch","checkoutEvent","apmSaveId","voucherPdfDownloadUrl","data","onDownloadFile","URL","base64Image","takeScreenshot","BASE64","mapper","linkClose","closedAction","delegate","onCloseButtonPressed","onBinDetected","onCardBinDetected","onInstallmentSelected","paymentProcessing","onPaymentProcessing","purchase","onCloseSubWebView","onSuccess","order","purchaseError","errorCode","unknownError","errorMessage","reason","paymentError"],"sourceRoot":"../../../src","sources":["controllers/PaymentWidgetController.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ export class Completer {
4
+ resolvePromise = null;
5
+ rejectPromise = null;
6
+ completed = false;
7
+ constructor() {
8
+ this.promise = new Promise((resolve, reject) => {
9
+ this.resolvePromise = resolve;
10
+ this.rejectPromise = reject;
11
+ });
12
+ }
13
+ get wait() {
14
+ return this.promise;
15
+ }
16
+ complete(value) {
17
+ if (this.completed) return;
18
+ this.completed = true;
19
+ this.resolvePromise?.(value);
20
+ }
21
+ completeError(error) {
22
+ if (this.completed) return;
23
+ this.completed = true;
24
+ this.rejectPromise?.(error);
25
+ }
26
+ isCompleted() {
27
+ return this.completed;
28
+ }
29
+ }
30
+ //# sourceMappingURL=Completer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Completer","resolvePromise","rejectPromise","completed","constructor","promise","Promise","resolve","reject","wait","complete","value","completeError","error","isCompleted"],"sourceRoot":"../../../src","sources":["helpers/Completer.ts"],"mappings":";;AAAA,OAAO,MAAMA,SAAS,CAAI;EAEhBC,cAAc,GAAiD,IAAI;EACnEC,aAAa,GAAoC,IAAI;EACrDC,SAAS,GAAG,KAAK;EAEzBC,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACC,OAAO,GAAG,IAAIC,OAAO,CAAI,CAACC,OAAO,EAAEC,MAAM,KAAK;MACjD,IAAI,CAACP,cAAc,GAAGM,OAAO;MAC7B,IAAI,CAACL,aAAa,GAAGM,MAAM;IAC7B,CAAC,CAAC;EACJ;EAEA,IAAIC,IAAIA,CAAA,EAAe;IACrB,OAAO,IAAI,CAACJ,OAAO;EACrB;EAEAK,QAAQA,CAACC,KAAQ,EAAQ;IACvB,IAAI,IAAI,CAACR,SAAS,EAAE;IACpB,IAAI,CAACA,SAAS,GAAG,IAAI;IACrB,IAAI,CAACF,cAAc,GAAGU,KAAK,CAAC;EAC9B;EAEAC,aAAaA,CAACC,KAAU,EAAQ;IAC9B,IAAI,IAAI,CAACV,SAAS,EAAE;IACpB,IAAI,CAACA,SAAS,GAAG,IAAI;IACrB,IAAI,CAACD,aAAa,GAAGW,KAAK,CAAC;EAC7B;EAEAC,WAAWA,CAAA,EAAY;IACrB,OAAO,IAAI,CAACX,SAAS;EACvB;AACF","ignoreList":[]}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ import { PaymentWidgetController } from "../controllers/PaymentWidgetController.js";
4
+ import { ElementsWidgetController } from "../controllers/ElementsWidgetController.js";
5
+ import { linkBuilders } from "../types/helpers/index.js";
6
+ import { Mode } from "../interfaces/types.js";
7
+ import { DeunaLogs } from "../DeunaLogs.js";
8
+ export const getWidgetController = (config, props) => {
9
+ const {
10
+ widget,
11
+ mode,
12
+ callbacks,
13
+ ...rest
14
+ } = props;
15
+ const baseParams = {
16
+ env: config.environment,
17
+ publicApiKey: config.publicApiKey,
18
+ orderToken: rest.orderToken ?? '',
19
+ userToken: rest.userToken ?? '',
20
+ language: rest.language ?? 'es',
21
+ sessionId: rest.sessionId ?? '',
22
+ mode: mode ?? Mode.MODAL
23
+ };
24
+ const widgetMappers = {
25
+ elements: () => ({
26
+ ...baseParams,
27
+ userInfo: rest.userInfo,
28
+ styleFile: rest.styleFile,
29
+ behavior: rest.behavior,
30
+ widgetExperience: rest.widgetExperience,
31
+ types: props.types
32
+ }),
33
+ payment: () => ({
34
+ ...baseParams,
35
+ behavior: rest.behavior,
36
+ paymentMethods: props.paymentMethods,
37
+ styleFile: rest.styleFile
38
+ }),
39
+ nextAction: () => baseParams,
40
+ voucher: () => baseParams
41
+ };
42
+ const controller = widget === 'elements' ? new ElementsWidgetController(callbacks) : new PaymentWidgetController(callbacks);
43
+ controller.url = linkBuilders[widget](widgetMappers[widget]());
44
+ controller.hidePayButton = rest.hidePayButton ?? false;
45
+ DeunaLogs.info('👀 loading link', controller.url);
46
+ return controller;
47
+ };
48
+ //# sourceMappingURL=getController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PaymentWidgetController","ElementsWidgetController","linkBuilders","Mode","DeunaLogs","getWidgetController","config","props","widget","mode","callbacks","rest","baseParams","env","environment","publicApiKey","orderToken","userToken","language","sessionId","MODAL","widgetMappers","elements","userInfo","styleFile","behavior","widgetExperience","types","payment","paymentMethods","nextAction","voucher","controller","url","hidePayButton","info"],"sourceRoot":"../../../src","sources":["helpers/getController.ts"],"mappings":";;AACA,SAASA,uBAAuB,QAAQ,2CAAwC;AAChF,SAASC,wBAAwB,QAAQ,4CAAyC;AAQlF,SAASC,YAAY,QAAQ,2BAAkB;AAC/C,SAASC,IAAI,QAAQ,wBAAqB;AAC1C,SAASC,SAAS,QAAQ,iBAAc;AAwBxC,OAAO,MAAMC,mBAAmB,GAAGA,CACjCC,MAAwB,EACxBC,KAA4D,KACjC;EAC3B,MAAM;IAAEC,MAAM;IAAEC,IAAI;IAAEC,SAAS;IAAE,GAAGC;EAAK,CAAC,GAAGJ,KAAK;EAElD,MAAMK,UAAU,GAAG;IACjBC,GAAG,EAAEP,MAAM,CAACQ,WAAY;IACxBC,YAAY,EAAET,MAAM,CAACS,YAAY;IACjCC,UAAU,EAAEL,IAAI,CAACK,UAAU,IAAI,EAAE;IACjCC,SAAS,EAAEN,IAAI,CAACM,SAAS,IAAI,EAAE;IAC/BC,QAAQ,EAAEP,IAAI,CAACO,QAAQ,IAAI,IAAI;IAC/BC,SAAS,EAAER,IAAI,CAACQ,SAAS,IAAI,EAAE;IAC/BV,IAAI,EAAEA,IAAI,IAAIN,IAAI,CAACiB;EACrB,CAAC;EAED,MAAMC,aAAa,GAAG;IACpBC,QAAQ,EAAEA,CAAA,MAAO;MACf,GAAGV,UAAU;MACbW,QAAQ,EAAEZ,IAAI,CAACY,QAAQ;MACvBC,SAAS,EAAEb,IAAI,CAACa,SAAS;MACzBC,QAAQ,EAAEd,IAAI,CAACc,QAAQ;MACvBC,gBAAgB,EAAEf,IAAI,CAACe,gBAAgB;MACvCC,KAAK,EAAGpB,KAAK,CAAmCoB;IAClD,CAAC,CAAC;IACFC,OAAO,EAAEA,CAAA,MAAO;MACd,GAAGhB,UAAU;MACba,QAAQ,EAAEd,IAAI,CAACc,QAAQ;MACvBI,cAAc,EAAGtB,KAAK,CAAkCsB,cAAc;MACtEL,SAAS,EAAEb,IAAI,CAACa;IAClB,CAAC,CAAC;IACFM,UAAU,EAAEA,CAAA,KAAMlB,UAAU;IAC5BmB,OAAO,EAAEA,CAAA,KAAMnB;EACjB,CAAC;EAED,MAAMoB,UAAU,GACdxB,MAAM,KAAK,UAAU,GACjB,IAAIP,wBAAwB,CAACS,SAAS,CAAC,GACvC,IAAIV,uBAAuB,CAACU,SAAS,CAAC;EAE5CsB,UAAU,CAACC,GAAG,GAAG/B,YAAY,CAACM,MAAM,CAAC,CAACa,aAAa,CAACb,MAAM,CAAC,CAAC,CAAC,CAAC;EAC9DwB,UAAU,CAACE,aAAa,GAAGvB,IAAI,CAACuB,aAAa,IAAI,KAAK;EAEtD9B,SAAS,CAAC+B,IAAI,CAAC,iBAAiB,EAAEH,UAAU,CAACC,GAAG,CAAC;EAEjD,OAAOD,UAAU;AACnB,CAAC","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ export * from "./DeunaSDK.js";
4
+ export * from "./components/DeunaWidget.js";
5
+ export * from "./types/index.js";
6
+ export * from "./interfaces/index.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,cAAc,eAAY;AAC1B,cAAc,6BAA0B;AACxC,cAAc,kBAAS;AACvB,cAAc,uBAAc","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ export const constants = {
4
+ apmSaveId: 'apmSaveId',
5
+ metadata: 'metadata',
6
+ voucherPdfDownloadUrl: 'voucherPdfDownloadUrl'
7
+ };
8
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["constants","apmSaveId","metadata","voucherPdfDownloadUrl"],"sourceRoot":"../../../src","sources":["interfaces/constants.ts"],"mappings":";;AAAA,OAAO,MAAMA,SAAS,GAAG;EACvBC,SAAS,EAAE,WAAW;EACtBC,QAAQ,EAAE,UAAU;EACpBC,qBAAqB,EAAE;AACzB,CAAC","ignoreList":[]}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ export const initializationError = {
4
+ type: 'INITIALIZATION_ERROR',
5
+ code: 'INITIALIZATION_ERROR',
6
+ message: 'Failed to initialize the widget'
7
+ };
8
+ export const submitError = {
9
+ status: 'error',
10
+ code: 'error',
11
+ message: 'Error al procesar la solicitud.'
12
+ };
13
+ export let PaymentErrorType = /*#__PURE__*/function (PaymentErrorType) {
14
+ PaymentErrorType["noInternetConnection"] = "noInternetConnection";
15
+ PaymentErrorType["invalidOrderToken"] = "invalidOrderToken";
16
+ PaymentErrorType["initializationFailed"] = "initializationFailed";
17
+ PaymentErrorType["errorWhileLoadingTheURL"] = "errorWhileLoadingTheURL";
18
+ PaymentErrorType["orderNotFound"] = "orderNotFound";
19
+ PaymentErrorType["orderCouldNotBeRetrieved"] = "orderCouldNotBeRetrieved";
20
+ PaymentErrorType["paymentError"] = "paymentError";
21
+ PaymentErrorType["userError"] = "userError";
22
+ PaymentErrorType["unknownError"] = "unknownError";
23
+ return PaymentErrorType;
24
+ }({});
25
+ export let ElementsErrorType = /*#__PURE__*/function (ElementsErrorType) {
26
+ ElementsErrorType["noInternetConnection"] = "noInternetConnection";
27
+ ElementsErrorType["initializationFailed"] = "initializationFailed";
28
+ ElementsErrorType["errorWhileLoadingTheURL"] = "errorWhileLoadingTheURL";
29
+ ElementsErrorType["userError"] = "userError";
30
+ ElementsErrorType["invalidUserToken"] = "invalidUserToken";
31
+ ElementsErrorType["unknownError"] = "unknownError";
32
+ ElementsErrorType["vaultSaveError"] = "vaultSaveError";
33
+ ElementsErrorType["vaultFailed"] = "vaultFailed";
34
+ return ElementsErrorType;
35
+ }({});
36
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["initializationError","type","code","message","submitError","status","PaymentErrorType","ElementsErrorType"],"sourceRoot":"../../../src","sources":["interfaces/errors.ts"],"mappings":";;AAAA,OAAO,MAAMA,mBAAmB,GAAG;EACjCC,IAAI,EAAE,sBAAsB;EAC5BC,IAAI,EAAE,sBAAsB;EAC5BC,OAAO,EAAE;AACX,CAAC;AAED,OAAO,MAAMC,WAAW,GAAG;EACzBC,MAAM,EAAE,OAAO;EACfH,IAAI,EAAE,OAAO;EACbC,OAAO,EAAE;AACX,CAAC;AAED,WAAYG,gBAAgB,0BAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAA,OAAhBA,gBAAgB;AAAA;AAY5B,WAAYC,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA","ignoreList":[]}