auth0-lock 14.3.0 → 15.0.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/.github/workflows/codeql.yml +1 -1
- package/.github/workflows/npm-release.yml +1 -1
- package/.github/workflows/snyk.yml +1 -1
- package/.github/workflows/test.yml +2 -2
- package/.husky/pre-commit +4 -0
- package/.version +1 -1
- package/CHANGELOG.md +28 -0
- package/README.md +1 -1
- package/lib/__tests__/auth_button.js +21 -6
- package/lib/__tests__/connection/database/login_pane.js +12 -5
- package/lib/__tests__/connection/database/reset_password.js +15 -12
- package/lib/__tests__/connection/enterprise/hrd_pane.js +16 -6
- package/lib/__tests__/connection/enterprise/hrd_screen.js +27 -18
- package/lib/__tests__/connection/passwordless/ask_vcode.js +15 -7
- package/lib/__tests__/core/sso/last_login_screen.js +91 -40
- package/lib/__tests__/engine/classic/mfa_login_screen.js +9 -3
- package/lib/__tests__/engine/classic/sign_up_pane.js +16 -6
- package/lib/__tests__/engine/classic/sign_up_screen.js +0 -1
- package/lib/__tests__/field/captcha/arkose.js +7 -0
- package/lib/__tests__/field/captcha/auth0_v2.js +6 -0
- package/lib/__tests__/field/captcha/friendlyCaptcha.js +6 -0
- package/lib/__tests__/field/captcha/hcaptcha.js +6 -0
- package/lib/__tests__/field/captcha/recaptcha_enterprise.js +6 -0
- package/lib/__tests__/field/captcha/recaptchav2.js +6 -0
- package/lib/__tests__/field/captcha/third_party_captcha.js +97 -64
- package/lib/__tests__/field/captcha.js +76 -143
- package/lib/__tests__/field/custom_input.js +7 -5
- package/lib/__tests__/field/email_pane.js +27 -11
- package/lib/__tests__/field/login_pane.js +6 -3
- package/lib/__tests__/field/mfa_code_pane.js +13 -6
- package/lib/__tests__/field/option_selection_pane.js +17 -7
- package/lib/__tests__/field/password_pane.js +8 -10
- package/lib/__tests__/field/phone_number_pane.js +7 -5
- package/lib/__tests__/field/social_buttons_pane.js +12 -9
- package/lib/__tests__/field/username_pane.js +33 -14
- package/lib/__tests__/field/vcode_pane.js +9 -5
- package/lib/__tests__/setup-tests.js +1 -7
- package/lib/__tests__/testUtils.js +27 -42
- package/lib/__tests__/ui/box/global_message.js +75 -42
- package/lib/__tests__/ui/input/email_input.js +4 -4
- package/lib/__tests__/ui/input/password/password_strength.js +8 -7
- package/lib/__tests__/ui/input/password_input.js +18 -14
- package/lib/avatar/gravatar_provider.js +1 -2
- package/lib/connection/database/index.js +1 -2
- package/lib/core/index.js +1 -2
- package/lib/core/web_api/helper.js +1 -1
- package/lib/field/email.js +1 -2
- package/lib/field/index.js +4 -5
- package/lib/field/mfa_code.js +1 -3
- package/lib/field/username.js +2 -4
- package/lib/i18n.js +1 -1
- package/lib/lock.js +1 -1
- package/lib/passwordless.js +1 -1
- package/package.json +13 -10
|
@@ -1,10 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _react = _interopRequireDefault(require("react"));
|
|
4
|
-
var
|
|
4
|
+
var _react2 = require("@testing-library/react");
|
|
5
5
|
var _testUtils = require("../../testUtils");
|
|
6
6
|
var _global_message = _interopRequireDefault(require("ui/box/global_message"));
|
|
7
7
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
9
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
10
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
11
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
12
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
13
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
14
|
+
// Helper: render and get the instance via a callback ref (class component)
|
|
15
|
+
var renderWithInstance = function renderWithInstance(element) {
|
|
16
|
+
var instance = null;
|
|
17
|
+
var elementWithRef = /*#__PURE__*/_react.default.cloneElement(element, {
|
|
18
|
+
ref: function ref(r) {
|
|
19
|
+
instance = r;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
var result = (0, _react2.render)(elementWithRef);
|
|
23
|
+
return _objectSpread(_objectSpread({}, result), {}, {
|
|
24
|
+
instance: instance
|
|
25
|
+
});
|
|
26
|
+
};
|
|
8
27
|
describe('GlobalMessage', function () {
|
|
9
28
|
it('renders correctly given a success type', function () {
|
|
10
29
|
(0, _testUtils.expectComponent)(/*#__PURE__*/_react.default.createElement(_global_message.default, {
|
|
@@ -25,65 +44,77 @@ describe('GlobalMessage', function () {
|
|
|
25
44
|
})).toMatchSnapshot();
|
|
26
45
|
});
|
|
27
46
|
it('should call scrollIntoView if parameter is set and top < 0', function () {
|
|
28
|
-
var
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
47
|
+
var _renderWithInstance = renderWithInstance(/*#__PURE__*/_react.default.createElement(_global_message.default, {
|
|
48
|
+
type: "success",
|
|
49
|
+
message: "foo",
|
|
50
|
+
scrollIntoView: true
|
|
51
|
+
})),
|
|
52
|
+
container = _renderWithInstance.container,
|
|
53
|
+
instance = _renderWithInstance.instance;
|
|
54
|
+
var el = container.firstChild;
|
|
33
55
|
var getBoundingClientRectSpy = jest.fn().mockReturnValue({
|
|
34
56
|
top: -1
|
|
35
57
|
});
|
|
36
58
|
var scrollIntoViewSpy = jest.fn();
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
59
|
+
el.getBoundingClientRect = getBoundingClientRectSpy;
|
|
60
|
+
el.scrollIntoView = scrollIntoViewSpy;
|
|
61
|
+
instance.componentDidMount();
|
|
40
62
|
expect(getBoundingClientRectSpy).toHaveBeenCalled();
|
|
41
63
|
expect(scrollIntoViewSpy).toHaveBeenCalledWith(true);
|
|
42
64
|
});
|
|
43
65
|
it('should not call scrollIntoView if parameter is set and top >= 0', function () {
|
|
44
|
-
var
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
66
|
+
var _renderWithInstance2 = renderWithInstance(/*#__PURE__*/_react.default.createElement(_global_message.default, {
|
|
67
|
+
type: "success",
|
|
68
|
+
message: "foo",
|
|
69
|
+
scrollIntoView: true
|
|
70
|
+
})),
|
|
71
|
+
container = _renderWithInstance2.container,
|
|
72
|
+
instance = _renderWithInstance2.instance;
|
|
73
|
+
var el = container.firstChild;
|
|
49
74
|
var getBoundingClientRectSpy = jest.fn().mockReturnValue({
|
|
50
75
|
top: 0
|
|
51
76
|
});
|
|
52
77
|
var scrollIntoViewSpy = jest.fn();
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
78
|
+
el.getBoundingClientRect = getBoundingClientRectSpy;
|
|
79
|
+
el.scrollIntoView = scrollIntoViewSpy;
|
|
80
|
+
instance.componentDidMount();
|
|
56
81
|
expect(getBoundingClientRectSpy).toHaveBeenCalled();
|
|
57
82
|
expect(scrollIntoViewSpy).not.toHaveBeenCalled();
|
|
58
83
|
});
|
|
59
84
|
it('should call scrollIntoView if parameter is not set (default is true)', function () {
|
|
60
|
-
var
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
85
|
+
var _renderWithInstance3 = renderWithInstance(/*#__PURE__*/_react.default.createElement(_global_message.default, {
|
|
86
|
+
type: "success",
|
|
87
|
+
message: "foo"
|
|
88
|
+
})),
|
|
89
|
+
container = _renderWithInstance3.container,
|
|
90
|
+
instance = _renderWithInstance3.instance;
|
|
91
|
+
var el = container.firstChild;
|
|
64
92
|
var getBoundingClientRectSpy = jest.fn().mockReturnValue({
|
|
65
93
|
top: -1
|
|
66
94
|
});
|
|
67
95
|
var scrollIntoViewSpy = jest.fn();
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
96
|
+
el.getBoundingClientRect = getBoundingClientRectSpy;
|
|
97
|
+
el.scrollIntoView = scrollIntoViewSpy;
|
|
98
|
+
instance.componentDidMount();
|
|
71
99
|
expect(getBoundingClientRectSpy).toHaveBeenCalled();
|
|
72
100
|
expect(scrollIntoViewSpy).toHaveBeenCalledWith(true);
|
|
73
101
|
});
|
|
74
102
|
it('should not call scrollIntoView if parameter is set to false', function () {
|
|
75
|
-
var
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
103
|
+
var _renderWithInstance4 = renderWithInstance(/*#__PURE__*/_react.default.createElement(_global_message.default, {
|
|
104
|
+
type: "success",
|
|
105
|
+
message: "foo",
|
|
106
|
+
scrollIntoView: false
|
|
107
|
+
})),
|
|
108
|
+
container = _renderWithInstance4.container,
|
|
109
|
+
instance = _renderWithInstance4.instance;
|
|
110
|
+
var el = container.firstChild;
|
|
80
111
|
var getBoundingClientRectSpy = jest.fn().mockReturnValue({
|
|
81
112
|
top: -1
|
|
82
113
|
});
|
|
83
114
|
var scrollIntoViewSpy = jest.fn();
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
115
|
+
el.getBoundingClientRect = getBoundingClientRectSpy;
|
|
116
|
+
el.scrollIntoView = scrollIntoViewSpy;
|
|
117
|
+
instance.componentDidMount();
|
|
87
118
|
expect(scrollIntoViewSpy).not.toHaveBeenCalled();
|
|
88
119
|
});
|
|
89
120
|
it('should NOT strip out HTML tags if given a React node', function () {
|
|
@@ -92,17 +123,19 @@ describe('GlobalMessage', function () {
|
|
|
92
123
|
__html: '<b>Success!</b>'
|
|
93
124
|
}
|
|
94
125
|
});
|
|
95
|
-
var
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
126
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_global_message.default, {
|
|
127
|
+
type: "success",
|
|
128
|
+
message: message
|
|
129
|
+
})),
|
|
130
|
+
container = _render.container;
|
|
131
|
+
expect(container.innerHTML).toBe('<div class="auth0-global-message auth0-global-message-success"><span class="animated fadeInUp">' + '<span><b>Success!</b></span></span></div>');
|
|
100
132
|
});
|
|
101
133
|
it('should strip out HTML tags if given a string', function () {
|
|
102
|
-
var
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
134
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_global_message.default, {
|
|
135
|
+
type: "success",
|
|
136
|
+
message: "<b>Success!</b>"
|
|
137
|
+
})),
|
|
138
|
+
container = _render2.container;
|
|
139
|
+
expect(container.innerHTML).toBe('<div class="auth0-global-message auth0-global-message-success"><span class="animated fadeInUp">' + '<b>Success!</b></span></div>');
|
|
107
140
|
});
|
|
108
141
|
});
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _react = _interopRequireDefault(require("react"));
|
|
4
|
-
var
|
|
4
|
+
var _react2 = require("@testing-library/react");
|
|
5
5
|
var _testUtils = require("testUtils");
|
|
6
|
-
var _testUtils2 = require("../../testUtils");
|
|
7
6
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
7
|
jest.mock('ui/input/input_wrap', function () {
|
|
9
8
|
return (0, _testUtils.mockComponent)('input_wrap');
|
|
@@ -22,7 +21,8 @@ describe('EmailInput', function () {
|
|
|
22
21
|
};
|
|
23
22
|
test('renders without issue', function () {
|
|
24
23
|
var Input = getComponent();
|
|
25
|
-
var
|
|
26
|
-
|
|
24
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(Input, defaultProps)),
|
|
25
|
+
container = _render.container;
|
|
26
|
+
expect(container.innerHTML).toMatchSnapshot();
|
|
27
27
|
});
|
|
28
28
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _react = _interopRequireDefault(require("react"));
|
|
4
|
-
var
|
|
4
|
+
var _react2 = require("@testing-library/react");
|
|
5
5
|
var _password_strength = _interopRequireDefault(require("../../../../ui/input/password/password_strength"));
|
|
6
6
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
7
|
describe('PasswordStrength', function () {
|
|
@@ -22,12 +22,13 @@ describe('PasswordStrength', function () {
|
|
|
22
22
|
var messages = {
|
|
23
23
|
foo: 'the-message'
|
|
24
24
|
};
|
|
25
|
-
var
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_password_strength.default, {
|
|
26
|
+
policy: policy,
|
|
27
|
+
password: "the-password",
|
|
28
|
+
messages: messages
|
|
29
|
+
})),
|
|
30
|
+
container = _render.container;
|
|
31
|
+
expect(container.innerHTML).toMatchSnapshot();
|
|
31
32
|
});
|
|
32
33
|
});
|
|
33
34
|
});
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _react = _interopRequireDefault(require("react"));
|
|
4
|
-
var
|
|
4
|
+
var _react2 = require("@testing-library/react");
|
|
5
5
|
var _testUtils = require("testUtils");
|
|
6
|
-
var _testUtils2 = require("../../testUtils");
|
|
7
|
-
var _input_wrap = _interopRequireDefault(require("../../../ui/input/input_wrap"));
|
|
8
6
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
7
|
jest.mock('ui/input/input_wrap', function () {
|
|
10
8
|
return (0, _testUtils.mockComponent)('input_wrap');
|
|
@@ -43,15 +41,17 @@ describe('PasswordInput', function () {
|
|
|
43
41
|
};
|
|
44
42
|
test('sends PasswordStrength as the `after` param', function () {
|
|
45
43
|
var Input = getComponent();
|
|
46
|
-
var
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(Input, defaultProps)),
|
|
45
|
+
container = _render.container;
|
|
46
|
+
var inputEl = container.querySelector('input');
|
|
47
|
+
_react2.fireEvent.focus(inputEl);
|
|
48
|
+
_react2.fireEvent.change(inputEl, {
|
|
49
49
|
target: {
|
|
50
50
|
value: 'pass'
|
|
51
51
|
}
|
|
52
52
|
});
|
|
53
|
-
var props = (0,
|
|
54
|
-
expect(props.after.props).toEqual({
|
|
53
|
+
var props = (0, _testUtils.extractPropsFromWrapper)(container, 'input_wrap');
|
|
54
|
+
expect(props.after && props.after.props).toEqual({
|
|
55
55
|
messages: {
|
|
56
56
|
strengthMessages: 'strengthMessages'
|
|
57
57
|
},
|
|
@@ -64,20 +64,24 @@ describe('PasswordInput', function () {
|
|
|
64
64
|
return true;
|
|
65
65
|
};
|
|
66
66
|
var Input = getComponent();
|
|
67
|
-
var
|
|
68
|
-
|
|
67
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(Input, defaultProps)),
|
|
68
|
+
container = _render2.container;
|
|
69
|
+
expect(container.querySelector('input').getAttribute('autocomplete')).toBe('on');
|
|
69
70
|
});
|
|
70
71
|
test('`allowPasswordAutocomplete=false` sets `autoComplete` as off', function () {
|
|
71
72
|
require('core/index').ui.allowPasswordAutocomplete = function () {
|
|
72
73
|
return false;
|
|
73
74
|
};
|
|
74
75
|
var Input = getComponent();
|
|
75
|
-
var
|
|
76
|
-
|
|
76
|
+
var _render3 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(Input, defaultProps)),
|
|
77
|
+
container = _render3.container;
|
|
78
|
+
expect(container.querySelector('input').getAttribute('autocomplete')).toBe('off');
|
|
77
79
|
});
|
|
78
80
|
test('shows invalid Hint', function () {
|
|
79
81
|
var Input = getComponent();
|
|
80
|
-
var
|
|
81
|
-
|
|
82
|
+
var _render4 = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(Input, defaultProps)),
|
|
83
|
+
container = _render4.container;
|
|
84
|
+
var inputWrap = container.querySelector('[data-__type="input_wrap"]');
|
|
85
|
+
expect((0, _testUtils.getMockProps)(inputWrap).invalidHint).toBe('invalidHint');
|
|
82
86
|
});
|
|
83
87
|
});
|
|
@@ -6,13 +6,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.displayName = displayName;
|
|
7
7
|
exports.url = url;
|
|
8
8
|
var _blueimpMd = _interopRequireDefault(require("blueimp-md5"));
|
|
9
|
-
var _trim = _interopRequireDefault(require("trim"));
|
|
10
9
|
var _jsonp_utils = _interopRequireDefault(require("../utils/jsonp_utils"));
|
|
11
10
|
var _email = require("../field/email");
|
|
12
11
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
12
|
var md5 = _blueimpMd.default.md5 || _blueimpMd.default;
|
|
14
13
|
function normalize(str) {
|
|
15
|
-
return typeof str === 'string' ?
|
|
14
|
+
return typeof str === 'string' ? str.toLowerCase().trim() : '';
|
|
16
15
|
}
|
|
17
16
|
function displayName(email, cb) {
|
|
18
17
|
email = normalize(email);
|
|
@@ -38,7 +38,6 @@ var l = _interopRequireWildcard(require("../../core/index"));
|
|
|
38
38
|
var _index2 = require("../../field/index");
|
|
39
39
|
var _data_utils = require("../../utils/data_utils");
|
|
40
40
|
var _sync = _interopRequireDefault(require("../../sync"));
|
|
41
|
-
var _trim = _interopRequireDefault(require("trim"));
|
|
42
41
|
var _tenant = require("../../core/tenant");
|
|
43
42
|
var _enterprise = require("../../connection/enterprise");
|
|
44
43
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -66,7 +65,7 @@ function assertMaybeEnum(opts, name, a) {
|
|
|
66
65
|
return valid;
|
|
67
66
|
}
|
|
68
67
|
function assertMaybeString(opts, name) {
|
|
69
|
-
var valid = opts[name] === undefined || typeof opts[name] === 'string' &&
|
|
68
|
+
var valid = opts[name] === undefined || typeof opts[name] === 'string' && opts[name].trim().length > 0;
|
|
70
69
|
if (!valid) l.warn(opts, "The `".concat(name, "` option will be ignored, because it is not a non-empty string."));
|
|
71
70
|
return valid;
|
|
72
71
|
}
|
package/lib/core/index.js
CHANGED
|
@@ -81,7 +81,6 @@ var _media_utils = require("../utils/media_utils");
|
|
|
81
81
|
var _string_utils = require("../utils/string_utils");
|
|
82
82
|
var _url_utils = require("../utils/url_utils");
|
|
83
83
|
var i18n = _interopRequireWildcard(require("../i18n"));
|
|
84
|
-
var _trim = _interopRequireDefault(require("trim"));
|
|
85
84
|
var gp = _interopRequireWildcard(require("../avatar/gravatar_provider"));
|
|
86
85
|
var _data_utils = require("../utils/data_utils");
|
|
87
86
|
var _index = require("./client/index");
|
|
@@ -243,7 +242,7 @@ function extractUIOptions(id, options) {
|
|
|
243
242
|
closable: closable,
|
|
244
243
|
hideMainScreenTitle: !!hideMainScreenTitle,
|
|
245
244
|
labeledSubmitButton: undefined === labeledSubmitButton ? true : !!labeledSubmitButton,
|
|
246
|
-
language: undefined === options.language ? 'en' : (
|
|
245
|
+
language: undefined === options.language ? 'en' : (options.language || '').trim().toLowerCase(),
|
|
247
246
|
dict: _typeof(options.languageDictionary) === 'object' ? options.languageDictionary : {},
|
|
248
247
|
disableWarnings: options.disableWarnings === undefined ? false : !!options.disableWarnings,
|
|
249
248
|
mobile: undefined === options.mobile ? false : !!options.mobile,
|
package/lib/field/email.js
CHANGED
|
@@ -9,7 +9,6 @@ exports.emailLocalPart = emailLocalPart;
|
|
|
9
9
|
exports.isEmail = isEmail;
|
|
10
10
|
exports.setEmail = setEmail;
|
|
11
11
|
exports.validateEmail = validateEmail;
|
|
12
|
-
var _trim = _interopRequireDefault(require("trim"));
|
|
13
12
|
var _isEmail2 = _interopRequireDefault(require("validator/lib/isEmail"));
|
|
14
13
|
var _index = require("./index");
|
|
15
14
|
var _enterprise = require("../connection/enterprise");
|
|
@@ -25,7 +24,7 @@ function isEmail(str) {
|
|
|
25
24
|
if (typeof str !== 'string') {
|
|
26
25
|
return false;
|
|
27
26
|
}
|
|
28
|
-
var trimmed =
|
|
27
|
+
var trimmed = str.trim();
|
|
29
28
|
return strictValidation ? (0, _isEmail2.default)(str) : trimmed.indexOf('@') >= 0 && trimmed.indexOf('.') >= 0 && trimmed.indexOf(' ') === -1;
|
|
30
29
|
}
|
|
31
30
|
function setEmail(m, str) {
|
package/lib/field/index.js
CHANGED
|
@@ -26,7 +26,6 @@ exports.username = username;
|
|
|
26
26
|
exports.vcode = vcode;
|
|
27
27
|
var _react = _interopRequireDefault(require("react"));
|
|
28
28
|
var _immutable = require("immutable");
|
|
29
|
-
var _trim = _interopRequireDefault(require("trim"));
|
|
30
29
|
var _option_selection_pane = _interopRequireDefault(require("./option_selection_pane"));
|
|
31
30
|
var l = _interopRequireWildcard(require("../core/index"));
|
|
32
31
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
@@ -40,19 +39,19 @@ var getDefaultValidator = function getDefaultValidator(field) {
|
|
|
40
39
|
case 'family_name':
|
|
41
40
|
case 'given_name':
|
|
42
41
|
return function (str) {
|
|
43
|
-
return minMax(
|
|
42
|
+
return minMax(str.trim(), 1, 150);
|
|
44
43
|
};
|
|
45
44
|
case 'name':
|
|
46
45
|
return function (str) {
|
|
47
|
-
return minMax(
|
|
46
|
+
return minMax(str.trim(), 1, 300);
|
|
48
47
|
};
|
|
49
48
|
case 'nickname':
|
|
50
49
|
return function (str) {
|
|
51
|
-
return minMax(
|
|
50
|
+
return minMax(str.trim(), 1, 300);
|
|
52
51
|
};
|
|
53
52
|
default:
|
|
54
53
|
return function (str) {
|
|
55
|
-
return
|
|
54
|
+
return str.trim().length > 0;
|
|
56
55
|
};
|
|
57
56
|
}
|
|
58
57
|
};
|
package/lib/field/mfa_code.js
CHANGED
|
@@ -8,8 +8,6 @@ exports.setMFACode = setMFACode;
|
|
|
8
8
|
var _index = require("./index");
|
|
9
9
|
var _email = require("./email");
|
|
10
10
|
var _database = require("../connection/database");
|
|
11
|
-
var _trim = _interopRequireDefault(require("trim"));
|
|
12
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
11
|
var DEFAULT_VALIDATION = {
|
|
14
12
|
mfa_code: {
|
|
15
13
|
length: 6
|
|
@@ -18,7 +16,7 @@ var DEFAULT_VALIDATION = {
|
|
|
18
16
|
var regExp = /^[0-9]+$/;
|
|
19
17
|
function validateMFACode(str) {
|
|
20
18
|
var settings = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_VALIDATION.mfa_code;
|
|
21
|
-
var value =
|
|
19
|
+
var value = str.trim();
|
|
22
20
|
|
|
23
21
|
// check min value matched
|
|
24
22
|
if (value.length < settings.length) {
|
package/lib/field/username.js
CHANGED
|
@@ -9,8 +9,6 @@ exports.usernameLooksLikeEmail = usernameLooksLikeEmail;
|
|
|
9
9
|
var _index = require("./index");
|
|
10
10
|
var _email = require("./email");
|
|
11
11
|
var _database = require("../connection/database");
|
|
12
|
-
var _trim = _interopRequireDefault(require("trim"));
|
|
13
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
12
|
var DEFAULT_CONNECTION_VALIDATION = {
|
|
15
13
|
username: {
|
|
16
14
|
min: 1,
|
|
@@ -24,9 +22,9 @@ function validateUsername(str, validateFormat) {
|
|
|
24
22
|
// If the connection does not have validation settings, it should only check if the field is empty.
|
|
25
23
|
// validateFormat overrides this logic to disable validation on login (login should never validate format)
|
|
26
24
|
if (!validateFormat || settings == null) {
|
|
27
|
-
return
|
|
25
|
+
return str.trim().length > 0;
|
|
28
26
|
}
|
|
29
|
-
var lowercased =
|
|
27
|
+
var lowercased = str.toLowerCase().trim();
|
|
30
28
|
|
|
31
29
|
// check min value matched
|
|
32
30
|
if (lowercased.length < settings.min) {
|
package/lib/i18n.js
CHANGED
|
@@ -90,7 +90,7 @@ function assertLanguage(m, language, base) {
|
|
|
90
90
|
function syncLang(m, language, _cb) {
|
|
91
91
|
(0, _cdn_utils.load)({
|
|
92
92
|
method: 'registerLanguageDictionary',
|
|
93
|
-
url: "".concat(l.languageBaseUrl(m), "/js/lock/").concat("
|
|
93
|
+
url: "".concat(l.languageBaseUrl(m), "/js/lock/").concat("15.0.1", "/").concat(language, ".js"),
|
|
94
94
|
check: function check(str) {
|
|
95
95
|
return str && str === language;
|
|
96
96
|
},
|
package/lib/lock.js
CHANGED
|
@@ -36,7 +36,7 @@ var Auth0Lock = exports.default = /*#__PURE__*/function (_Core) {
|
|
|
36
36
|
_inherits(Auth0Lock, _Core);
|
|
37
37
|
return _createClass(Auth0Lock);
|
|
38
38
|
}(_core.default); // telemetry
|
|
39
|
-
Auth0Lock.version = "
|
|
39
|
+
Auth0Lock.version = "15.0.1";
|
|
40
40
|
|
|
41
41
|
// TODO: should we have different telemetry for classic/passwordless?
|
|
42
42
|
// TODO: should we set telemetry info before each request?
|
package/lib/passwordless.js
CHANGED
|
@@ -36,4 +36,4 @@ var Auth0LockPasswordless = exports.default = /*#__PURE__*/function (_Core) {
|
|
|
36
36
|
_inherits(Auth0LockPasswordless, _Core);
|
|
37
37
|
return _createClass(Auth0LockPasswordless);
|
|
38
38
|
}(_core.default);
|
|
39
|
-
Auth0LockPasswordless.version = "
|
|
39
|
+
Auth0LockPasswordless.version = "15.0.1";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "auth0-lock",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "15.0.1",
|
|
4
4
|
"description": "Auth0 Lock",
|
|
5
5
|
"author": "Auth0 <support@auth0.com> (http://auth0.com)",
|
|
6
6
|
"license": "MIT",
|
|
@@ -38,7 +38,8 @@
|
|
|
38
38
|
"publish:cdn": "ccu --trace",
|
|
39
39
|
"i18n:translate": "grunt dist && node scripts/complete-translations.js && npm run i18n:prettier && npm run build",
|
|
40
40
|
"i18n:prettier": "prettier --write src/i18n/*",
|
|
41
|
-
"i18n:validate": "node scripts/lang-audit.mjs"
|
|
41
|
+
"i18n:validate": "node scripts/lang-audit.mjs",
|
|
42
|
+
"prepare": "husky install"
|
|
42
43
|
},
|
|
43
44
|
"devDependencies": {
|
|
44
45
|
"@auth0/component-cdn-uploader": "^3.0.2",
|
|
@@ -62,8 +63,10 @@
|
|
|
62
63
|
"@babel/plugin-syntax-import-meta": "^7.0.0",
|
|
63
64
|
"@babel/preset-env": "^7.0.0",
|
|
64
65
|
"@babel/preset-react": "^7.0.0",
|
|
65
|
-
"@cfaester/enzyme-adapter-react-18": "^0.8.0",
|
|
66
66
|
"@google-cloud/translate": "^9.1.0",
|
|
67
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
68
|
+
"@testing-library/react": "^16.3.2",
|
|
69
|
+
"@testing-library/user-event": "^14.6.1",
|
|
67
70
|
"@types/auth0-js": "^9.21.6",
|
|
68
71
|
"babel-jest": "^29.3.1",
|
|
69
72
|
"babel-loader": "8.4.1",
|
|
@@ -77,7 +80,6 @@
|
|
|
77
80
|
"cross-env": "^7.0.3",
|
|
78
81
|
"css-loader": "^7.1.2",
|
|
79
82
|
"emojic": "^1.1.17",
|
|
80
|
-
"enzyme": "^3.1.1",
|
|
81
83
|
"es-check": "^6.0.0",
|
|
82
84
|
"eslint": "^8.45.0",
|
|
83
85
|
"eslint-config-prettier": "^8.8.0",
|
|
@@ -108,7 +110,6 @@
|
|
|
108
110
|
"mocha": "^11.5.0",
|
|
109
111
|
"prettier": "^2.4.1",
|
|
110
112
|
"puppeteer": "^24.9.0",
|
|
111
|
-
"react-test-renderer": "^18.2.0",
|
|
112
113
|
"sinon": "^1.15.4",
|
|
113
114
|
"stylus": "^0.64.0",
|
|
114
115
|
"stylus-loader": "^3.0.2",
|
|
@@ -120,7 +121,7 @@
|
|
|
120
121
|
"webpack-dev-server": "^5.2.1"
|
|
121
122
|
},
|
|
122
123
|
"dependencies": {
|
|
123
|
-
"auth0-js": "^
|
|
124
|
+
"auth0-js": "^10.0.0",
|
|
124
125
|
"auth0-password-policies": "^3.1.0",
|
|
125
126
|
"blueimp-md5": "^2.19.0",
|
|
126
127
|
"classnames": "^2.3.2",
|
|
@@ -131,10 +132,9 @@
|
|
|
131
132
|
"password-sheriff": "^2.0.0",
|
|
132
133
|
"prop-types": "^15.8.0",
|
|
133
134
|
"qs": "^6.14.1",
|
|
134
|
-
"react": "^18.2.0",
|
|
135
|
-
"react-dom": "^18.2.0",
|
|
135
|
+
"react": "^18.2.0 || ^19.0.0",
|
|
136
|
+
"react-dom": "^18.2.0 || ^19.0.0",
|
|
136
137
|
"react-transition-group": "^4.4.5",
|
|
137
|
-
"trim": "^1.0.1",
|
|
138
138
|
"url-join": "^1.1.0",
|
|
139
139
|
"validator": "^13.15.22"
|
|
140
140
|
},
|
|
@@ -158,7 +158,7 @@
|
|
|
158
158
|
"<rootDir>/src/",
|
|
159
159
|
"<rootDir>/src/__tests__"
|
|
160
160
|
],
|
|
161
|
-
"
|
|
161
|
+
"setupFilesAfterEnv": [
|
|
162
162
|
"<rootDir>/src/__tests__/setup-tests.js"
|
|
163
163
|
],
|
|
164
164
|
"coveragePathIgnorePatterns": [
|
|
@@ -187,6 +187,9 @@
|
|
|
187
187
|
],
|
|
188
188
|
"*.{js,jsx,json}": [
|
|
189
189
|
"prettier --write"
|
|
190
|
+
],
|
|
191
|
+
"package-lock.json": [
|
|
192
|
+
"node scripts/strip-lock-resolved.js"
|
|
190
193
|
]
|
|
191
194
|
},
|
|
192
195
|
"optionalDependencies": {
|