@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.
- 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 -20
- 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
|
@@ -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 };
|