@evervault/react-native 2.5.1 → 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.
- package/README.md +0 -2
- package/build/cjs/Card/Cvc.js +29 -0
- package/build/cjs/Card/Expiry.js +12 -0
- package/build/cjs/Card/Holder.js +15 -0
- package/build/cjs/Card/Number.js +27 -0
- package/build/cjs/Card/Root.js +70 -0
- package/build/cjs/Card/index.js +20 -0
- package/build/cjs/Card/schema.js +32 -0
- package/build/cjs/Card/types.js +21 -0
- package/build/cjs/Card/utils.js +87 -0
- package/build/cjs/EvervaultProvider.js +17 -0
- package/build/cjs/Input.js +107 -0
- package/build/cjs/ThreeDSecure/Frame.js +37 -0
- package/build/cjs/ThreeDSecure/Root.js +14 -0
- package/build/cjs/ThreeDSecure/config.js +7 -0
- package/build/cjs/ThreeDSecure/context.js +7 -0
- package/build/cjs/ThreeDSecure/event.js +20 -0
- package/build/cjs/ThreeDSecure/index.js +12 -0
- package/build/cjs/ThreeDSecure/session.js +141 -0
- package/build/cjs/ThreeDSecure/types.js +2 -0
- package/build/cjs/ThreeDSecure/useThreeDSecure.js +44 -0
- package/build/cjs/__mocks__/NativeEvervault.js +14 -0
- package/build/cjs/__mocks__/react-native-webview.js +10 -0
- package/build/cjs/context.js +7 -0
- package/build/cjs/index.js +25 -0
- package/build/cjs/node_modules/@hookform/resolvers/dist/resolvers.js +8 -0
- package/build/cjs/node_modules/@hookform/resolvers/zod/dist/zod.js +8 -0
- package/build/cjs/node_modules/react-hook-form/dist/index.esm.js +2221 -0
- package/build/cjs/node_modules/react-native-mask-input/lib/module/MaskInput.js +60 -0
- package/build/cjs/node_modules/react-native-mask-input/lib/module/formatWithMask.js +92 -0
- package/build/cjs/node_modules/react-native-mask-input/lib/module/index.js +10 -0
- package/build/cjs/node_modules/react-native-mask-input/lib/module/useMaskedInputProps.js +93 -0
- package/build/{index.cjs.js → cjs/node_modules/zod/lib/index.js} +193 -3490
- package/build/cjs/packages/card-validator/dist/evervault-card-validator.main.js +349 -0
- package/build/cjs/sdk.js +53 -0
- package/build/cjs/specs/NativeEvervault.js +7 -0
- package/build/cjs/useEvervault.js +14 -0
- package/build/cjs/utils.js +34 -0
- package/build/{Card → esm/Card}/Cvc.d.ts +0 -1
- package/build/esm/Card/Cvc.js +27 -0
- package/build/{Card → esm/Card}/Expiry.d.ts +0 -1
- package/build/esm/Card/Expiry.js +10 -0
- package/build/{Card → esm/Card}/Holder.d.ts +0 -1
- package/build/esm/Card/Holder.js +13 -0
- package/build/{Card → esm/Card}/Number.d.ts +0 -1
- package/build/esm/Card/Number.js +25 -0
- package/build/{Card → esm/Card}/Root.d.ts +0 -1
- package/build/esm/Card/Root.js +68 -0
- package/build/{Card → esm/Card}/index.d.ts +0 -1
- package/build/esm/Card/index.js +14 -0
- package/build/{Card → esm/Card}/schema.d.ts +0 -1
- package/build/esm/Card/schema.js +30 -0
- package/build/{Card → esm/Card}/types.d.ts +0 -1
- package/build/esm/Card/types.js +19 -0
- package/build/{Card → esm/Card}/utils.d.ts +0 -1
- package/build/esm/Card/utils.js +82 -0
- package/build/{EvervaultProvider.d.ts → esm/EvervaultProvider.d.ts} +0 -1
- package/build/esm/EvervaultProvider.js +15 -0
- package/build/{Input.d.ts → esm/Input.d.ts} +0 -1
- package/build/esm/Input.js +103 -0
- package/build/{ThreeDSecure → esm/ThreeDSecure}/Frame.d.ts +0 -1
- package/build/esm/ThreeDSecure/Frame.js +35 -0
- package/build/{ThreeDSecure → esm/ThreeDSecure}/Root.d.ts +0 -1
- package/build/esm/ThreeDSecure/Root.js +12 -0
- package/build/{ThreeDSecure → esm/ThreeDSecure}/config.d.ts +0 -1
- package/build/esm/ThreeDSecure/config.js +4 -0
- package/build/{ThreeDSecure → esm/ThreeDSecure}/context.d.ts +0 -1
- package/build/esm/ThreeDSecure/context.js +5 -0
- package/build/{ThreeDSecure → esm/ThreeDSecure}/event.d.ts +0 -1
- package/build/esm/ThreeDSecure/event.js +18 -0
- package/build/{ThreeDSecure → esm/ThreeDSecure}/index.d.ts +0 -1
- package/build/esm/ThreeDSecure/index.js +9 -0
- package/build/{ThreeDSecure → esm/ThreeDSecure}/session.d.ts +0 -1
- package/build/esm/ThreeDSecure/session.js +136 -0
- package/build/{ThreeDSecure → esm/ThreeDSecure}/types.d.ts +0 -1
- package/build/esm/ThreeDSecure/types.js +1 -0
- package/build/{ThreeDSecure → esm/ThreeDSecure}/useThreeDSecure.d.ts +0 -1
- package/build/esm/ThreeDSecure/useThreeDSecure.js +42 -0
- package/build/{__mocks__ → esm/__mocks__}/NativeEvervault.d.ts +0 -1
- package/build/esm/__mocks__/NativeEvervault.js +11 -0
- package/build/{__mocks__ → esm/__mocks__}/react-native-webview.d.ts +0 -1
- package/build/esm/__mocks__/react-native-webview.js +8 -0
- package/build/{context.d.ts → esm/context.d.ts} +0 -1
- package/build/esm/context.js +5 -0
- package/build/{index.d.ts → esm/index.d.ts} +0 -1
- package/build/esm/index.js +14 -0
- package/build/esm/node_modules/@hookform/resolvers/dist/resolvers.js +5 -0
- package/build/esm/node_modules/@hookform/resolvers/zod/dist/zod.js +6 -0
- package/build/esm/node_modules/react-hook-form/dist/index.esm.js +2211 -0
- package/build/esm/node_modules/react-native-mask-input/lib/module/MaskInput.js +37 -0
- package/build/esm/node_modules/react-native-mask-input/lib/module/formatWithMask.js +88 -0
- package/build/esm/node_modules/react-native-mask-input/lib/module/index.js +6 -0
- package/build/esm/node_modules/react-native-mask-input/lib/module/useMaskedInputProps.js +70 -0
- package/build/{index.esm.js → esm/node_modules/zod/lib/index.js} +1 -3377
- package/build/esm/packages/card-validator/dist/evervault-card-validator.main.js +345 -0
- package/build/{sdk.d.ts → esm/sdk.d.ts} +0 -1
- package/build/esm/sdk.js +51 -0
- package/build/{specs → esm/specs}/NativeEvervault.d.ts +0 -1
- package/build/esm/specs/NativeEvervault.js +5 -0
- package/build/{useEvervault.d.ts → esm/useEvervault.d.ts} +0 -1
- package/build/esm/useEvervault.js +12 -0
- package/build/{utils.d.ts → esm/utils.d.ts} +0 -1
- package/build/esm/utils.js +31 -0
- package/package.json +9 -21
- package/build/Card/Cvc.d.ts.map +0 -1
- package/build/Card/Cvc.test.d.ts +0 -2
- package/build/Card/Cvc.test.d.ts.map +0 -1
- package/build/Card/Expiry.d.ts.map +0 -1
- package/build/Card/Holder.d.ts.map +0 -1
- package/build/Card/Number.d.ts.map +0 -1
- package/build/Card/Number.test.d.ts +0 -2
- package/build/Card/Number.test.d.ts.map +0 -1
- package/build/Card/Root.d.ts.map +0 -1
- package/build/Card/Root.test.d.ts +0 -2
- package/build/Card/Root.test.d.ts.map +0 -1
- package/build/Card/index.d.ts.map +0 -1
- package/build/Card/schema.d.ts.map +0 -1
- package/build/Card/types.d.ts.map +0 -1
- package/build/Card/utils.d.ts.map +0 -1
- package/build/Card/utils.test.d.ts +0 -2
- package/build/Card/utils.test.d.ts.map +0 -1
- package/build/EvervaultProvider.d.ts.map +0 -1
- package/build/EvervaultProvider.test.d.ts +0 -2
- package/build/EvervaultProvider.test.d.ts.map +0 -1
- package/build/Input.d.ts.map +0 -1
- package/build/Input.test.d.ts +0 -2
- package/build/Input.test.d.ts.map +0 -1
- package/build/ThreeDSecure/Frame.d.ts.map +0 -1
- package/build/ThreeDSecure/Frame.test.d.ts +0 -2
- package/build/ThreeDSecure/Frame.test.d.ts.map +0 -1
- package/build/ThreeDSecure/Root.d.ts.map +0 -1
- package/build/ThreeDSecure/Root.test.d.ts +0 -2
- package/build/ThreeDSecure/Root.test.d.ts.map +0 -1
- package/build/ThreeDSecure/config.d.ts.map +0 -1
- package/build/ThreeDSecure/context.d.ts.map +0 -1
- package/build/ThreeDSecure/event.d.ts.map +0 -1
- package/build/ThreeDSecure/index.d.ts.map +0 -1
- package/build/ThreeDSecure/session.d.ts.map +0 -1
- package/build/ThreeDSecure/session.test.d.ts +0 -2
- package/build/ThreeDSecure/session.test.d.ts.map +0 -1
- package/build/ThreeDSecure/types.d.ts.map +0 -1
- package/build/ThreeDSecure/useThreeDSecure.d.ts.map +0 -1
- package/build/ThreeDSecure/useThreeDSecure.test.d.ts +0 -2
- package/build/ThreeDSecure/useThreeDSecure.test.d.ts.map +0 -1
- package/build/__mocks__/NativeEvervault.d.ts.map +0 -1
- package/build/__mocks__/react-native-webview.d.ts.map +0 -1
- package/build/context.d.ts.map +0 -1
- package/build/index.cjs.js.map +0 -1
- package/build/index.d.ts.map +0 -1
- package/build/sdk.d.ts.map +0 -1
- package/build/sdk.test.d.ts +0 -2
- package/build/sdk.test.d.ts.map +0 -1
- package/build/specs/NativeEvervault.d.ts.map +0 -1
- package/build/useEvervault.d.ts.map +0 -1
- package/build/useEvervault.test.d.ts +0 -2
- package/build/useEvervault.test.d.ts.map +0 -1
- package/build/utils.d.ts.map +0 -1
- package/src/Card/Cvc.test.tsx +0 -41
- package/src/Card/Cvc.tsx +0 -58
- package/src/Card/Expiry.tsx +0 -26
- package/src/Card/Holder.tsx +0 -27
- package/src/Card/Number.test.tsx +0 -76
- package/src/Card/Number.tsx +0 -54
- package/src/Card/Root.test.tsx +0 -341
- package/src/Card/Root.tsx +0 -150
- package/src/Card/index.ts +0 -28
- package/src/Card/schema.ts +0 -41
- package/src/Card/types.ts +0 -57
- package/src/Card/utils.test.ts +0 -271
- package/src/Card/utils.ts +0 -129
- package/src/EvervaultProvider.test.tsx +0 -24
- package/src/EvervaultProvider.tsx +0 -43
- package/src/Input.test.tsx +0 -420
- package/src/Input.tsx +0 -182
- package/src/ThreeDSecure/Frame.test.tsx +0 -87
- package/src/ThreeDSecure/Frame.tsx +0 -50
- package/src/ThreeDSecure/Root.test.tsx +0 -67
- package/src/ThreeDSecure/Root.tsx +0 -23
- package/src/ThreeDSecure/config.ts +0 -3
- package/src/ThreeDSecure/context.ts +0 -6
- package/src/ThreeDSecure/event.ts +0 -19
- package/src/ThreeDSecure/index.ts +0 -17
- package/src/ThreeDSecure/session.test.ts +0 -524
- package/src/ThreeDSecure/session.ts +0 -184
- package/src/ThreeDSecure/types.ts +0 -80
- package/src/ThreeDSecure/useThreeDSecure.test.tsx +0 -244
- package/src/ThreeDSecure/useThreeDSecure.ts +0 -64
- package/src/__mocks__/NativeEvervault.ts +0 -13
- package/src/__mocks__/react-native-webview.tsx +0 -6
- package/src/context.ts +0 -14
- package/src/index.ts +0 -21
- package/src/sdk.test.ts +0 -122
- package/src/sdk.ts +0 -71
- package/src/specs/NativeEvervault.ts +0 -67
- package/src/useEvervault.test.tsx +0 -31
- package/src/useEvervault.ts +0 -14
- 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,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 };
|