@evervault/react-native 2.5.0 → 2.6.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 (197) 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 +10 -22
  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
  158. package/src/Card/Cvc.test.tsx +0 -41
  159. package/src/Card/Cvc.tsx +0 -58
  160. package/src/Card/Expiry.tsx +0 -26
  161. package/src/Card/Holder.tsx +0 -27
  162. package/src/Card/Number.test.tsx +0 -76
  163. package/src/Card/Number.tsx +0 -54
  164. package/src/Card/Root.test.tsx +0 -341
  165. package/src/Card/Root.tsx +0 -150
  166. package/src/Card/index.ts +0 -28
  167. package/src/Card/schema.ts +0 -41
  168. package/src/Card/types.ts +0 -57
  169. package/src/Card/utils.test.ts +0 -271
  170. package/src/Card/utils.ts +0 -129
  171. package/src/EvervaultProvider.test.tsx +0 -24
  172. package/src/EvervaultProvider.tsx +0 -43
  173. package/src/Input.test.tsx +0 -420
  174. package/src/Input.tsx +0 -182
  175. package/src/ThreeDSecure/Frame.test.tsx +0 -87
  176. package/src/ThreeDSecure/Frame.tsx +0 -50
  177. package/src/ThreeDSecure/Root.test.tsx +0 -67
  178. package/src/ThreeDSecure/Root.tsx +0 -23
  179. package/src/ThreeDSecure/config.ts +0 -3
  180. package/src/ThreeDSecure/context.ts +0 -6
  181. package/src/ThreeDSecure/event.ts +0 -19
  182. package/src/ThreeDSecure/index.ts +0 -17
  183. package/src/ThreeDSecure/session.test.ts +0 -524
  184. package/src/ThreeDSecure/session.ts +0 -184
  185. package/src/ThreeDSecure/types.ts +0 -80
  186. package/src/ThreeDSecure/useThreeDSecure.test.tsx +0 -244
  187. package/src/ThreeDSecure/useThreeDSecure.ts +0 -64
  188. package/src/__mocks__/NativeEvervault.ts +0 -13
  189. package/src/__mocks__/react-native-webview.tsx +0 -6
  190. package/src/context.ts +0 -14
  191. package/src/index.ts +0 -21
  192. package/src/sdk.test.ts +0 -122
  193. package/src/sdk.ts +0 -71
  194. package/src/specs/NativeEvervault.ts +0 -67
  195. package/src/useEvervault.test.tsx +0 -31
  196. package/src/useEvervault.ts +0 -14
  197. package/src/utils.ts +0 -41
@@ -0,0 +1,37 @@
1
+ import * as React from 'react';
2
+ import { TextInput } from 'react-native';
3
+ import useMaskedInputProps from './useMaskedInputProps.js';
4
+
5
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
6
+ var MaskInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
7
+ const {
8
+ mask,
9
+ value,
10
+ onChangeText,
11
+ placeholderFillCharacter = '_',
12
+ obfuscationCharacter,
13
+ showObfuscatedValue,
14
+ selection,
15
+ maskAutoComplete,
16
+ ...rest
17
+ } = props;
18
+ const maskedInputProps = useMaskedInputProps({
19
+ value,
20
+ mask,
21
+ maskAutoComplete,
22
+ obfuscationCharacter,
23
+ onChangeText,
24
+ placeholderFillCharacter,
25
+ showObfuscatedValue
26
+ });
27
+ return /*#__PURE__*/React.createElement(TextInput, _extends({
28
+ placeholder: maskedInputProps.placeholder
29
+ }, rest, {
30
+ selection: maskedInputProps.selection || selection,
31
+ value: maskedInputProps.value,
32
+ onChangeText: maskedInputProps.onChangeText,
33
+ ref: ref
34
+ }));
35
+ });
36
+
37
+ export { MaskInput as default };
@@ -0,0 +1,88 @@
1
+ function formatWithMask(props) {
2
+ const {
3
+ text,
4
+ mask,
5
+ obfuscationCharacter = '*',
6
+ maskAutoComplete = false
7
+ } = props; // make sure it'll not break with null or undefined inputs
8
+
9
+ if (!text) return {
10
+ masked: '',
11
+ unmasked: '',
12
+ obfuscated: ''
13
+ };
14
+ if (!mask) return {
15
+ masked: text || '',
16
+ unmasked: text || '',
17
+ obfuscated: text || ''
18
+ };
19
+ let maskArray = typeof mask === 'function' ? mask(text) : mask;
20
+ let masked = '';
21
+ let obfuscated = '';
22
+ let unmasked = '';
23
+ let maskCharIndex = 0;
24
+ let valueCharIndex = 0;
25
+
26
+ while (true) {
27
+ // if mask is ended, break.
28
+ if (maskCharIndex === maskArray.length) {
29
+ break;
30
+ }
31
+
32
+ let maskChar = maskArray[maskCharIndex];
33
+ let valueChar = text[valueCharIndex]; // if value is ended, break.
34
+
35
+ if (valueCharIndex === text.length) {
36
+ if (typeof maskChar === 'string' && maskAutoComplete) {
37
+ masked += maskChar;
38
+ obfuscated += maskChar;
39
+ maskCharIndex += 1;
40
+ continue;
41
+ }
42
+
43
+ break;
44
+ } // value equals mask: add to masked result and advance on both mask and value indexes
45
+
46
+
47
+ if (maskChar === valueChar) {
48
+ masked += maskChar;
49
+ obfuscated += maskChar;
50
+ valueCharIndex += 1;
51
+ maskCharIndex += 1;
52
+ continue;
53
+ }
54
+
55
+ let unmaskedValueChar = text[valueCharIndex]; // it's a regex maskChar: let's advance on value index and validate the value within the regex
56
+
57
+ if (typeof maskChar === 'object') {
58
+ // advance on value index
59
+ valueCharIndex += 1;
60
+ const shouldObsfucateChar = Array.isArray(maskChar);
61
+ const maskCharRegex = Array.isArray(maskChar) ? maskChar[0] : maskChar;
62
+ const matchRegex = RegExp(maskCharRegex).test(valueChar); // value match regex: add to masked and unmasked result and advance on mask index too
63
+
64
+ if (matchRegex) {
65
+ masked += valueChar;
66
+ obfuscated += shouldObsfucateChar ? obfuscationCharacter : valueChar;
67
+ unmasked += unmaskedValueChar;
68
+ maskCharIndex += 1;
69
+ }
70
+
71
+ continue;
72
+ } else {
73
+ // it's a fixed maskChar: add to maskedResult and advance on mask index
74
+ masked += maskChar;
75
+ obfuscated += maskChar;
76
+ maskCharIndex += 1;
77
+ continue;
78
+ }
79
+ }
80
+
81
+ return {
82
+ masked,
83
+ unmasked,
84
+ obfuscated
85
+ };
86
+ }
87
+
88
+ export { formatWithMask as default };
@@ -0,0 +1,6 @@
1
+ import MaskInput from './MaskInput.js';
2
+ import 'react';
3
+
4
+
5
+
6
+ export { MaskInput as default };
@@ -0,0 +1,70 @@
1
+ import * as React from 'react';
2
+ import formatWithMask from './formatWithMask.js';
3
+
4
+ var useMaskedInputProps = (props => {
5
+ const {
6
+ value,
7
+ mask,
8
+ onChangeText,
9
+ placeholderFillCharacter = '_',
10
+ obfuscationCharacter,
11
+ showObfuscatedValue,
12
+ maskAutoComplete
13
+ } = props;
14
+ const maskArray = React.useMemo(() => typeof mask === 'function' ? mask(value) : mask, [mask, value]);
15
+ const formattedValueResult = React.useMemo(() => {
16
+ return formatWithMask({
17
+ text: value || '',
18
+ mask,
19
+ obfuscationCharacter
20
+ });
21
+ }, [mask, obfuscationCharacter, value]);
22
+ const maskHasObfuscation = React.useMemo(() => maskArray && !!maskArray.find(maskItem => Array.isArray(maskItem)), [maskArray]);
23
+ const isValueObfuscated = React.useMemo(() => !!maskHasObfuscation && !!showObfuscatedValue, [maskHasObfuscation, showObfuscatedValue]);
24
+ const handleChangeText = React.useCallback(text => {
25
+ let textToFormat = text;
26
+
27
+ if (isValueObfuscated) {
28
+ textToFormat = formattedValueResult.masked || '';
29
+
30
+ if (textToFormat.length > text.length) {
31
+ textToFormat = textToFormat.slice(0, -1);
32
+ } else if (textToFormat.length < text.length) {
33
+ textToFormat = textToFormat + text[text.length - 1];
34
+ }
35
+ }
36
+
37
+ const result = formatWithMask({
38
+ text: textToFormat,
39
+ mask,
40
+ obfuscationCharacter,
41
+ maskAutoComplete: maskAutoComplete && textToFormat.length > formattedValueResult.masked.length
42
+ });
43
+ onChangeText && onChangeText(result.masked, result.unmasked, result.obfuscated);
44
+ }, [isValueObfuscated, mask, obfuscationCharacter, onChangeText, formattedValueResult.masked, maskAutoComplete]);
45
+ const defaultPlaceholder = React.useMemo(() => {
46
+ if (maskArray) {
47
+ return maskArray.map(maskChar => {
48
+ if (typeof maskChar === 'string') {
49
+ return maskChar;
50
+ } else {
51
+ return placeholderFillCharacter;
52
+ }
53
+ }).join('');
54
+ } else {
55
+ return undefined;
56
+ }
57
+ }, [maskArray, placeholderFillCharacter]);
58
+ const inputValue = isValueObfuscated ? formattedValueResult.obfuscated : formattedValueResult.masked;
59
+ return {
60
+ onChangeText: handleChangeText,
61
+ value: inputValue,
62
+ selection: isValueObfuscated ? {
63
+ start: inputValue.length,
64
+ end: inputValue.length
65
+ } : undefined,
66
+ placeholder: defaultPlaceholder
67
+ };
68
+ });
69
+
70
+ export { useMaskedInputProps as default };