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.
Files changed (54) hide show
  1. package/.github/workflows/codeql.yml +1 -1
  2. package/.github/workflows/npm-release.yml +1 -1
  3. package/.github/workflows/snyk.yml +1 -1
  4. package/.github/workflows/test.yml +2 -2
  5. package/.husky/pre-commit +4 -0
  6. package/.version +1 -1
  7. package/CHANGELOG.md +28 -0
  8. package/README.md +1 -1
  9. package/lib/__tests__/auth_button.js +21 -6
  10. package/lib/__tests__/connection/database/login_pane.js +12 -5
  11. package/lib/__tests__/connection/database/reset_password.js +15 -12
  12. package/lib/__tests__/connection/enterprise/hrd_pane.js +16 -6
  13. package/lib/__tests__/connection/enterprise/hrd_screen.js +27 -18
  14. package/lib/__tests__/connection/passwordless/ask_vcode.js +15 -7
  15. package/lib/__tests__/core/sso/last_login_screen.js +91 -40
  16. package/lib/__tests__/engine/classic/mfa_login_screen.js +9 -3
  17. package/lib/__tests__/engine/classic/sign_up_pane.js +16 -6
  18. package/lib/__tests__/engine/classic/sign_up_screen.js +0 -1
  19. package/lib/__tests__/field/captcha/arkose.js +7 -0
  20. package/lib/__tests__/field/captcha/auth0_v2.js +6 -0
  21. package/lib/__tests__/field/captcha/friendlyCaptcha.js +6 -0
  22. package/lib/__tests__/field/captcha/hcaptcha.js +6 -0
  23. package/lib/__tests__/field/captcha/recaptcha_enterprise.js +6 -0
  24. package/lib/__tests__/field/captcha/recaptchav2.js +6 -0
  25. package/lib/__tests__/field/captcha/third_party_captcha.js +97 -64
  26. package/lib/__tests__/field/captcha.js +76 -143
  27. package/lib/__tests__/field/custom_input.js +7 -5
  28. package/lib/__tests__/field/email_pane.js +27 -11
  29. package/lib/__tests__/field/login_pane.js +6 -3
  30. package/lib/__tests__/field/mfa_code_pane.js +13 -6
  31. package/lib/__tests__/field/option_selection_pane.js +17 -7
  32. package/lib/__tests__/field/password_pane.js +8 -10
  33. package/lib/__tests__/field/phone_number_pane.js +7 -5
  34. package/lib/__tests__/field/social_buttons_pane.js +12 -9
  35. package/lib/__tests__/field/username_pane.js +33 -14
  36. package/lib/__tests__/field/vcode_pane.js +9 -5
  37. package/lib/__tests__/setup-tests.js +1 -7
  38. package/lib/__tests__/testUtils.js +27 -42
  39. package/lib/__tests__/ui/box/global_message.js +75 -42
  40. package/lib/__tests__/ui/input/email_input.js +4 -4
  41. package/lib/__tests__/ui/input/password/password_strength.js +8 -7
  42. package/lib/__tests__/ui/input/password_input.js +18 -14
  43. package/lib/avatar/gravatar_provider.js +1 -2
  44. package/lib/connection/database/index.js +1 -2
  45. package/lib/core/index.js +1 -2
  46. package/lib/core/web_api/helper.js +1 -1
  47. package/lib/field/email.js +1 -2
  48. package/lib/field/index.js +4 -5
  49. package/lib/field/mfa_code.js +1 -3
  50. package/lib/field/username.js +2 -4
  51. package/lib/i18n.js +1 -1
  52. package/lib/lock.js +1 -1
  53. package/lib/passwordless.js +1 -1
  54. package/package.json +13 -10
@@ -1,10 +1,29 @@
1
1
  "use strict";
2
2
 
3
3
  var _react = _interopRequireDefault(require("react"));
4
- var _enzyme = require("enzyme");
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(_global_message.default, {
29
- type: "success",
30
- message: "foo",
31
- scrollIntoView: true
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
- wrapper.getDOMNode().getBoundingClientRect = getBoundingClientRectSpy;
38
- wrapper.getDOMNode().scrollIntoView = scrollIntoViewSpy;
39
- wrapper.instance().componentDidMount();
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(_global_message.default, {
45
- type: "success",
46
- message: "foo",
47
- scrollIntoView: true
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
- wrapper.getDOMNode().getBoundingClientRect = getBoundingClientRectSpy;
54
- wrapper.getDOMNode().scrollIntoView = scrollIntoViewSpy;
55
- wrapper.instance().componentDidMount();
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(_global_message.default, {
61
- type: "success",
62
- message: "foo"
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
- wrapper.getDOMNode().getBoundingClientRect = getBoundingClientRectSpy;
69
- wrapper.getDOMNode().scrollIntoView = scrollIntoViewSpy;
70
- wrapper.instance().componentDidMount();
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(_global_message.default, {
76
- type: "success",
77
- message: "foo",
78
- scrollIntoView: false
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
- wrapper.getDOMNode().getBoundingClientRect = getBoundingClientRectSpy;
85
- wrapper.getDOMNode().scrollIntoView = scrollIntoViewSpy;
86
- wrapper.instance().componentDidMount();
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(_global_message.default, {
96
- type: "success",
97
- message: message
98
- }));
99
- expect(wrapper.html()).toBe('<div class="auth0-global-message auth0-global-message-success"><span class="animated fadeInUp">' + '<span><b>Success!</b></span></span></div>');
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(_global_message.default, {
103
- type: "success",
104
- message: "<b>Success!</b>"
105
- }));
106
- expect(wrapper.html()).toBe('<div class="auth0-global-message auth0-global-message-success"><span class="animated fadeInUp">' + '&lt;b&gt;Success!&lt;/b&gt;</span></div>');
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">' + '&lt;b&gt;Success!&lt;/b&gt;</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 _enzyme = require("enzyme");
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 component = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(Input, defaultProps));
26
- expect(component.html()).toMatchSnapshot();
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 _enzyme = require("enzyme");
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(_password_strength.default, {
26
- policy: policy,
27
- password: "the-password",
28
- messages: messages
29
- }));
30
- expect(wrapper.html()).toMatchSnapshot();
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 _enzyme = require("enzyme");
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(Input, defaultProps));
47
- wrapper.find('input').simulate('focus');
48
- wrapper.find('input').simulate('change', {
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, _testUtils2.extractPropsFromWrapper)(wrapper);
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(Input, defaultProps));
68
- expect(wrapper.find('input').props().autoComplete).toBe('on');
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(Input, defaultProps));
76
- expect(wrapper.find('input').props().autoComplete).toBe('off');
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 wrapper = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(Input, defaultProps));
81
- expect(wrapper.find(_input_wrap.default).props().invalidHint).toBe('invalidHint');
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' ? (0, _trim.default)(str.toLowerCase()) : '';
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' && (0, _trim.default)(opts[name]).length > 0;
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' : (0, _trim.default)(options.language || '').toLowerCase(),
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,
@@ -169,5 +169,5 @@ function trimAuthParams() {
169
169
  return p;
170
170
  }
171
171
  function getVersion() {
172
- return "14.3.0";
172
+ return "15.0.1";
173
173
  }
@@ -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 = (0, _trim.default)(str);
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) {
@@ -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((0, _trim.default)(str), 1, 150);
42
+ return minMax(str.trim(), 1, 150);
44
43
  };
45
44
  case 'name':
46
45
  return function (str) {
47
- return minMax((0, _trim.default)(str), 1, 300);
46
+ return minMax(str.trim(), 1, 300);
48
47
  };
49
48
  case 'nickname':
50
49
  return function (str) {
51
- return minMax((0, _trim.default)(str), 1, 300);
50
+ return minMax(str.trim(), 1, 300);
52
51
  };
53
52
  default:
54
53
  return function (str) {
55
- return (0, _trim.default)(str).length > 0;
54
+ return str.trim().length > 0;
56
55
  };
57
56
  }
58
57
  };
@@ -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 = (0, _trim.default)(str);
19
+ var value = str.trim();
22
20
 
23
21
  // check min value matched
24
22
  if (value.length < settings.length) {
@@ -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 (0, _trim.default)(str).length > 0;
25
+ return str.trim().length > 0;
28
26
  }
29
- var lowercased = (0, _trim.default)(str.toLowerCase());
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("14.3.0", "/").concat(language, ".js"),
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 = "14.3.0";
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?
@@ -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 = "14.3.0";
39
+ Auth0LockPasswordless.version = "15.0.1";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "auth0-lock",
3
- "version": "14.3.0",
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": "^9.29.0",
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
- "setupFiles": [
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": {