@evervault/react-native 2.5.1 → 2.6.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 (157) hide show
  1. package/README.md +0 -2
  2. package/build/cjs/Card/Cvc.js +29 -0
  3. package/build/cjs/Card/Expiry.js +12 -0
  4. package/build/cjs/Card/Holder.js +15 -0
  5. package/build/cjs/Card/Number.js +27 -0
  6. package/build/cjs/Card/Root.js +70 -0
  7. package/build/cjs/Card/index.js +20 -0
  8. package/build/cjs/Card/schema.js +32 -0
  9. package/build/cjs/Card/types.js +21 -0
  10. package/build/cjs/Card/utils.js +87 -0
  11. package/build/cjs/EvervaultProvider.js +17 -0
  12. package/build/cjs/Input.js +107 -0
  13. package/build/cjs/ThreeDSecure/Frame.js +37 -0
  14. package/build/cjs/ThreeDSecure/Root.js +14 -0
  15. package/build/cjs/ThreeDSecure/config.js +7 -0
  16. package/build/cjs/ThreeDSecure/context.js +7 -0
  17. package/build/cjs/ThreeDSecure/event.js +20 -0
  18. package/build/cjs/ThreeDSecure/index.js +12 -0
  19. package/build/cjs/ThreeDSecure/session.js +141 -0
  20. package/build/cjs/ThreeDSecure/types.js +2 -0
  21. package/build/cjs/ThreeDSecure/useThreeDSecure.js +44 -0
  22. package/build/cjs/__mocks__/NativeEvervault.js +14 -0
  23. package/build/cjs/__mocks__/react-native-webview.js +10 -0
  24. package/build/cjs/context.js +7 -0
  25. package/build/cjs/index.js +25 -0
  26. package/build/cjs/node_modules/@hookform/resolvers/dist/resolvers.js +8 -0
  27. package/build/cjs/node_modules/@hookform/resolvers/zod/dist/zod.js +8 -0
  28. package/build/cjs/node_modules/react-hook-form/dist/index.esm.js +2221 -0
  29. package/build/cjs/node_modules/react-native-mask-input/lib/module/MaskInput.js +60 -0
  30. package/build/cjs/node_modules/react-native-mask-input/lib/module/formatWithMask.js +92 -0
  31. package/build/cjs/node_modules/react-native-mask-input/lib/module/index.js +10 -0
  32. package/build/cjs/node_modules/react-native-mask-input/lib/module/useMaskedInputProps.js +93 -0
  33. package/build/{index.cjs.js → cjs/node_modules/zod/lib/index.js} +193 -3490
  34. package/build/cjs/packages/card-validator/dist/evervault-card-validator.main.js +349 -0
  35. package/build/cjs/sdk.js +53 -0
  36. package/build/cjs/specs/NativeEvervault.js +7 -0
  37. package/build/cjs/useEvervault.js +14 -0
  38. package/build/cjs/utils.js +34 -0
  39. package/build/{Card → esm/Card}/Cvc.d.ts +0 -1
  40. package/build/esm/Card/Cvc.js +27 -0
  41. package/build/{Card → esm/Card}/Expiry.d.ts +0 -1
  42. package/build/esm/Card/Expiry.js +10 -0
  43. package/build/{Card → esm/Card}/Holder.d.ts +0 -1
  44. package/build/esm/Card/Holder.js +13 -0
  45. package/build/{Card → esm/Card}/Number.d.ts +0 -1
  46. package/build/esm/Card/Number.js +25 -0
  47. package/build/{Card → esm/Card}/Root.d.ts +0 -1
  48. package/build/esm/Card/Root.js +68 -0
  49. package/build/{Card → esm/Card}/index.d.ts +0 -1
  50. package/build/esm/Card/index.js +14 -0
  51. package/build/{Card → esm/Card}/schema.d.ts +0 -1
  52. package/build/esm/Card/schema.js +30 -0
  53. package/build/{Card → esm/Card}/types.d.ts +0 -1
  54. package/build/esm/Card/types.js +19 -0
  55. package/build/{Card → esm/Card}/utils.d.ts +0 -1
  56. package/build/esm/Card/utils.js +82 -0
  57. package/build/{EvervaultProvider.d.ts → esm/EvervaultProvider.d.ts} +0 -1
  58. package/build/esm/EvervaultProvider.js +15 -0
  59. package/build/{Input.d.ts → esm/Input.d.ts} +0 -1
  60. package/build/esm/Input.js +103 -0
  61. package/build/{ThreeDSecure → esm/ThreeDSecure}/Frame.d.ts +0 -1
  62. package/build/esm/ThreeDSecure/Frame.js +35 -0
  63. package/build/{ThreeDSecure → esm/ThreeDSecure}/Root.d.ts +0 -1
  64. package/build/esm/ThreeDSecure/Root.js +12 -0
  65. package/build/{ThreeDSecure → esm/ThreeDSecure}/config.d.ts +0 -1
  66. package/build/esm/ThreeDSecure/config.js +4 -0
  67. package/build/{ThreeDSecure → esm/ThreeDSecure}/context.d.ts +0 -1
  68. package/build/esm/ThreeDSecure/context.js +5 -0
  69. package/build/{ThreeDSecure → esm/ThreeDSecure}/event.d.ts +0 -1
  70. package/build/esm/ThreeDSecure/event.js +18 -0
  71. package/build/{ThreeDSecure → esm/ThreeDSecure}/index.d.ts +0 -1
  72. package/build/esm/ThreeDSecure/index.js +9 -0
  73. package/build/{ThreeDSecure → esm/ThreeDSecure}/session.d.ts +0 -1
  74. package/build/esm/ThreeDSecure/session.js +136 -0
  75. package/build/{ThreeDSecure → esm/ThreeDSecure}/types.d.ts +0 -1
  76. package/build/esm/ThreeDSecure/types.js +1 -0
  77. package/build/{ThreeDSecure → esm/ThreeDSecure}/useThreeDSecure.d.ts +0 -1
  78. package/build/esm/ThreeDSecure/useThreeDSecure.js +42 -0
  79. package/build/{__mocks__ → esm/__mocks__}/NativeEvervault.d.ts +0 -1
  80. package/build/esm/__mocks__/NativeEvervault.js +11 -0
  81. package/build/{__mocks__ → esm/__mocks__}/react-native-webview.d.ts +0 -1
  82. package/build/esm/__mocks__/react-native-webview.js +8 -0
  83. package/build/{context.d.ts → esm/context.d.ts} +0 -1
  84. package/build/esm/context.js +5 -0
  85. package/build/{index.d.ts → esm/index.d.ts} +0 -1
  86. package/build/esm/index.js +14 -0
  87. package/build/esm/node_modules/@hookform/resolvers/dist/resolvers.js +5 -0
  88. package/build/esm/node_modules/@hookform/resolvers/zod/dist/zod.js +6 -0
  89. package/build/esm/node_modules/react-hook-form/dist/index.esm.js +2211 -0
  90. package/build/esm/node_modules/react-native-mask-input/lib/module/MaskInput.js +37 -0
  91. package/build/esm/node_modules/react-native-mask-input/lib/module/formatWithMask.js +88 -0
  92. package/build/esm/node_modules/react-native-mask-input/lib/module/index.js +6 -0
  93. package/build/esm/node_modules/react-native-mask-input/lib/module/useMaskedInputProps.js +70 -0
  94. package/build/{index.esm.js → esm/node_modules/zod/lib/index.js} +1 -3377
  95. package/build/esm/packages/card-validator/dist/evervault-card-validator.main.js +345 -0
  96. package/build/{sdk.d.ts → esm/sdk.d.ts} +0 -1
  97. package/build/esm/sdk.js +51 -0
  98. package/build/{specs → esm/specs}/NativeEvervault.d.ts +0 -1
  99. package/build/esm/specs/NativeEvervault.js +5 -0
  100. package/build/{useEvervault.d.ts → esm/useEvervault.d.ts} +0 -1
  101. package/build/esm/useEvervault.js +12 -0
  102. package/build/{utils.d.ts → esm/utils.d.ts} +0 -1
  103. package/build/esm/utils.js +31 -0
  104. package/package.json +9 -20
  105. package/build/Card/Cvc.d.ts.map +0 -1
  106. package/build/Card/Cvc.test.d.ts +0 -2
  107. package/build/Card/Cvc.test.d.ts.map +0 -1
  108. package/build/Card/Expiry.d.ts.map +0 -1
  109. package/build/Card/Holder.d.ts.map +0 -1
  110. package/build/Card/Number.d.ts.map +0 -1
  111. package/build/Card/Number.test.d.ts +0 -2
  112. package/build/Card/Number.test.d.ts.map +0 -1
  113. package/build/Card/Root.d.ts.map +0 -1
  114. package/build/Card/Root.test.d.ts +0 -2
  115. package/build/Card/Root.test.d.ts.map +0 -1
  116. package/build/Card/index.d.ts.map +0 -1
  117. package/build/Card/schema.d.ts.map +0 -1
  118. package/build/Card/types.d.ts.map +0 -1
  119. package/build/Card/utils.d.ts.map +0 -1
  120. package/build/Card/utils.test.d.ts +0 -2
  121. package/build/Card/utils.test.d.ts.map +0 -1
  122. package/build/EvervaultProvider.d.ts.map +0 -1
  123. package/build/EvervaultProvider.test.d.ts +0 -2
  124. package/build/EvervaultProvider.test.d.ts.map +0 -1
  125. package/build/Input.d.ts.map +0 -1
  126. package/build/Input.test.d.ts +0 -2
  127. package/build/Input.test.d.ts.map +0 -1
  128. package/build/ThreeDSecure/Frame.d.ts.map +0 -1
  129. package/build/ThreeDSecure/Frame.test.d.ts +0 -2
  130. package/build/ThreeDSecure/Frame.test.d.ts.map +0 -1
  131. package/build/ThreeDSecure/Root.d.ts.map +0 -1
  132. package/build/ThreeDSecure/Root.test.d.ts +0 -2
  133. package/build/ThreeDSecure/Root.test.d.ts.map +0 -1
  134. package/build/ThreeDSecure/config.d.ts.map +0 -1
  135. package/build/ThreeDSecure/context.d.ts.map +0 -1
  136. package/build/ThreeDSecure/event.d.ts.map +0 -1
  137. package/build/ThreeDSecure/index.d.ts.map +0 -1
  138. package/build/ThreeDSecure/session.d.ts.map +0 -1
  139. package/build/ThreeDSecure/session.test.d.ts +0 -2
  140. package/build/ThreeDSecure/session.test.d.ts.map +0 -1
  141. package/build/ThreeDSecure/types.d.ts.map +0 -1
  142. package/build/ThreeDSecure/useThreeDSecure.d.ts.map +0 -1
  143. package/build/ThreeDSecure/useThreeDSecure.test.d.ts +0 -2
  144. package/build/ThreeDSecure/useThreeDSecure.test.d.ts.map +0 -1
  145. package/build/__mocks__/NativeEvervault.d.ts.map +0 -1
  146. package/build/__mocks__/react-native-webview.d.ts.map +0 -1
  147. package/build/context.d.ts.map +0 -1
  148. package/build/index.cjs.js.map +0 -1
  149. package/build/index.d.ts.map +0 -1
  150. package/build/sdk.d.ts.map +0 -1
  151. package/build/sdk.test.d.ts +0 -2
  152. package/build/sdk.test.d.ts.map +0 -1
  153. package/build/specs/NativeEvervault.d.ts.map +0 -1
  154. package/build/useEvervault.d.ts.map +0 -1
  155. package/build/useEvervault.test.d.ts +0 -2
  156. package/build/useEvervault.test.d.ts.map +0 -1
  157. package/build/utils.d.ts.map +0 -1
@@ -0,0 +1,141 @@
1
+ 'use strict';
2
+
3
+ var config = require('./config.js');
4
+ var event = require('./event.js');
5
+
6
+ function stopPolling(intervalRef, setIsVisible) {
7
+ setIsVisible(false);
8
+ if (intervalRef.current) {
9
+ clearInterval(intervalRef.current);
10
+ intervalRef.current = null;
11
+ }
12
+ }
13
+ async function startSession(session, options, intervalRef, setIsVisible) {
14
+ try {
15
+ const sessionState = await session.get();
16
+ function fail() {
17
+ stopPolling(intervalRef, setIsVisible);
18
+ options?.onFailure?.(new Error("3DS session failed"));
19
+ }
20
+ switch (sessionState.status) {
21
+ case "success": {
22
+ stopPolling(intervalRef, setIsVisible);
23
+ options?.onSuccess?.();
24
+ break;
25
+ }
26
+ case "failure": {
27
+ fail();
28
+ break;
29
+ }
30
+ case "action-required": {
31
+ const failOnChallenge = typeof options?.failOnChallenge === "function"
32
+ ? await options.failOnChallenge()
33
+ : options?.failOnChallenge ?? false;
34
+ if (failOnChallenge) {
35
+ fail();
36
+ break;
37
+ }
38
+ const event$1 = new event.ThreeDSecureEvent("requestChallenge", session);
39
+ options?.onRequestChallenge?.(event$1);
40
+ if (event$1.defaultPrevented) {
41
+ fail();
42
+ break;
43
+ }
44
+ setIsVisible(true);
45
+ pollSession(session, options, intervalRef, setIsVisible);
46
+ }
47
+ }
48
+ }
49
+ catch (error) {
50
+ console.error("Error checking session state", error);
51
+ options?.onError?.(new Error("Failed to check 3DS session state"));
52
+ }
53
+ }
54
+ function pollSession(session, options, intervalRef, setIsVisible, interval = 3000) {
55
+ function fail() {
56
+ stopPolling(intervalRef, setIsVisible);
57
+ options?.onFailure?.(new Error("3DS session failed"));
58
+ }
59
+ intervalRef.current = setInterval(async () => {
60
+ try {
61
+ const pollResponse = await session.get();
62
+ switch (pollResponse.status) {
63
+ case "success": {
64
+ stopPolling(intervalRef, setIsVisible);
65
+ options?.onSuccess?.();
66
+ break;
67
+ }
68
+ case "failure": {
69
+ fail();
70
+ break;
71
+ }
72
+ case "action-required": {
73
+ const failOnChallenge = typeof options?.failOnChallenge === "function"
74
+ ? await options.failOnChallenge()
75
+ : options?.failOnChallenge ?? false;
76
+ if (failOnChallenge) {
77
+ fail();
78
+ break;
79
+ }
80
+ const event$1 = new event.ThreeDSecureEvent("requestChallenge", session);
81
+ options?.onRequestChallenge?.(event$1);
82
+ if (event$1.defaultPrevented) {
83
+ fail();
84
+ break;
85
+ }
86
+ setIsVisible(true);
87
+ }
88
+ }
89
+ }
90
+ catch (error) {
91
+ stopPolling(intervalRef, setIsVisible);
92
+ console.error("Error polling session", error);
93
+ options?.onError?.(new Error("Error polling 3DS session"));
94
+ }
95
+ }, interval);
96
+ }
97
+ function threeDSecureSession({ sessionId, appId, options, intervalRef, setIsVisible, }) {
98
+ async function get() {
99
+ try {
100
+ const response = await fetch(`https://${config.EV_API_DOMAIN}/frontend/3ds/browser-sessions/${sessionId}`, {
101
+ headers: {
102
+ "x-evervault-app-id": appId,
103
+ },
104
+ });
105
+ const result = (await response.json());
106
+ return result;
107
+ }
108
+ catch (error) {
109
+ console.error("Error fetching 3DS session status", error);
110
+ throw error;
111
+ }
112
+ }
113
+ async function cancel() {
114
+ try {
115
+ await fetch(`https://${config.EV_API_DOMAIN}/frontend/3ds/browser-sessions/${sessionId}`, {
116
+ method: "PATCH",
117
+ headers: {
118
+ "Content-Type": "application/json",
119
+ "x-evervault-app-id": appId,
120
+ },
121
+ body: JSON.stringify({ outcome: "cancelled" }),
122
+ });
123
+ options?.onFailure?.(new Error("3DS session cancelled by user"));
124
+ stopPolling(intervalRef, setIsVisible);
125
+ }
126
+ catch (error) {
127
+ console.error("Error cancelling 3DS session", error);
128
+ throw error;
129
+ }
130
+ }
131
+ return {
132
+ sessionId,
133
+ get,
134
+ cancel,
135
+ };
136
+ }
137
+
138
+ exports.pollSession = pollSession;
139
+ exports.startSession = startSession;
140
+ exports.stopPolling = stopPolling;
141
+ exports.threeDSecureSession = threeDSecureSession;
@@ -0,0 +1,2 @@
1
+ 'use strict';
2
+
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var session = require('./session.js');
5
+ var useEvervault = require('../useEvervault.js');
6
+
7
+ function useThreeDSecure(options) {
8
+ const { appId } = useEvervault.useEvervault();
9
+ const intervalRef = React.useRef(null);
10
+ const [session$1, setSession] = React.useState(null);
11
+ const [isVisible, setIsVisible] = React.useState(false);
12
+ const failOnChallenge = options?.failOnChallenge ?? false;
13
+ const start = React.useCallback((sessionId, options) => {
14
+ const startOptions = {
15
+ ...options,
16
+ failOnChallenge: options?.failOnChallenge ?? failOnChallenge,
17
+ };
18
+ const session$1 = session.threeDSecureSession({
19
+ sessionId,
20
+ appId,
21
+ options: startOptions,
22
+ intervalRef,
23
+ setIsVisible,
24
+ });
25
+ setSession(session$1);
26
+ session.startSession(session$1, startOptions, intervalRef, setIsVisible);
27
+ }, [appId, failOnChallenge]);
28
+ const cancel = React.useCallback(async () => {
29
+ if (session$1) {
30
+ await session$1.cancel();
31
+ }
32
+ else {
33
+ console.warn("No 3DS session to cancel");
34
+ }
35
+ }, [session$1]);
36
+ return React.useMemo(() => ({
37
+ start,
38
+ cancel,
39
+ session: session$1,
40
+ isVisible,
41
+ }), [start, cancel, session$1, isVisible]);
42
+ }
43
+
44
+ exports.useThreeDSecure = useThreeDSecure;
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ const encryptedValue = "ev:W98t:uu98aas09udya863ty9372y7y23h97rg6gfs678987";
4
+ const NativeEvervault = {
5
+ initialize: vi.fn(),
6
+ encryptString: vi.fn(() => Promise.resolve(encryptedValue)),
7
+ encryptNumber: vi.fn(() => Promise.resolve(encryptedValue)),
8
+ encryptBoolean: vi.fn(() => Promise.resolve(encryptedValue)),
9
+ encryptObject: vi.fn(),
10
+ encryptArray: vi.fn(),
11
+ };
12
+
13
+ exports.NativeEvervault = NativeEvervault;
14
+ exports.encryptedValue = encryptedValue;
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var reactNative = require('react-native');
5
+
6
+ function WebView(props) {
7
+ return jsxRuntime.jsx(reactNative.View, { testID: "webview", ...props });
8
+ }
9
+
10
+ exports.WebView = WebView;
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+
5
+ const EvervaultContext = React.createContext(null);
6
+
7
+ exports.EvervaultContext = EvervaultContext;
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ var sdk = require('./sdk.js');
4
+ var EvervaultProvider = require('./EvervaultProvider.js');
5
+ var useEvervault = require('./useEvervault.js');
6
+ var index = require('./Card');
7
+ var index$1 = require('./ThreeDSecure');
8
+ var Holder = require('./Card/Holder.js');
9
+ var Expiry = require('./Card/Expiry.js');
10
+ var Cvc = require('./Card/Cvc.js');
11
+ var Number = require('./Card/Number.js');
12
+ var useThreeDSecure = require('./ThreeDSecure/useThreeDSecure.js');
13
+
14
+ const verifyInstallation = sdk.sdk.verify;
15
+
16
+ exports.EvervaultProvider = EvervaultProvider.EvervaultProvider;
17
+ exports.useEvervault = useEvervault.useEvervault;
18
+ exports.Card = index.Card;
19
+ exports.ThreeDSecure = index$1.ThreeDSecure;
20
+ exports.CardHolder = Holder.CardHolder;
21
+ exports.CardExpiry = Expiry.CardExpiry;
22
+ exports.CardCvc = Cvc.CardCvc;
23
+ exports.CardNumber = Number.CardNumber;
24
+ exports.useThreeDSecure = useThreeDSecure.useThreeDSecure;
25
+ exports.verifyInstallation = verifyInstallation;
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ var index_esm = require('../../../react-hook-form/dist/index.esm.js');
4
+
5
+ const r=(t,r,o)=>{if(t&&"reportValidity"in t){const s=index_esm.get(o,r);t.setCustomValidity(s&&s.message||""),t.reportValidity();}},o=(e,t)=>{for(const o in t.fields){const s=t.fields[o];s&&s.ref&&"reportValidity"in s.ref?r(s.ref,o,e):s&&s.refs&&s.refs.forEach(t=>r(t,o,e));}},s=(r,s)=>{s.shouldUseNativeValidation&&o(r,s);const n={};for(const o in r){const f=index_esm.get(s.fields,o),c=Object.assign(r[o]||{},{ref:f&&f.ref});if(i(s.names||Object.keys(r),o)){const r=Object.assign({},index_esm.get(n,o));index_esm.set(r,"root",c),index_esm.set(n,o,r);}else index_esm.set(n,o,c);}return n},i=(e,t)=>{const r=n(t);return e.some(e=>n(e).match(`^${r}\\.\\d+`))};function n(e){return e.replace(/\]|\[/g,"")}
6
+
7
+ exports.toNestErrors = s;
8
+ exports.validateFieldsNatively = o;
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ var resolvers = require('../../dist/resolvers.js');
4
+ var index_esm = require('../../../../react-hook-form/dist/index.esm.js');
5
+
6
+ function n(r,e){for(var n={};r.length;){var s=r[0],t=s.code,i=s.message,a=s.path.join(".");if(!n[a])if("unionErrors"in s){var u=s.unionErrors[0].errors[0];n[a]={message:u.message,type:u.code};}else n[a]={message:i,type:t};if("unionErrors"in s&&s.unionErrors.forEach(function(e){return e.errors.forEach(function(e){return r.push(e)})}),e){var c=n[a].types,f=c&&c[s.code];n[a]=index_esm.appendErrors(a,e,n,t,f?[].concat(f,s.message):s.message);}r.shift();}return n}function s(o,s,t){return void 0===t&&(t={}),function(i,a,u){try{return Promise.resolve(function(e,n){try{var a=Promise.resolve(o["sync"===t.mode?"parse":"parseAsync"](i,s)).then(function(e){return u.shouldUseNativeValidation&&resolvers.validateFieldsNatively({},u),{errors:{},values:t.raw?Object.assign({},i):e}});}catch(r){return n(r)}return a&&a.then?a.then(void 0,n):a}(0,function(r){if(function(r){return Array.isArray(null==r?void 0:r.errors)}(r))return {values:{},errors:resolvers.toNestErrors(n(r.errors,!u.shouldUseNativeValidation&&"all"===u.criteriaMode),u)};throw r}))}catch(r){return Promise.reject(r)}}}
7
+
8
+ exports.zodResolver = s;