auth0-lock 14.3.0 → 15.0.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.
@@ -56,4 +56,4 @@ jobs:
56
56
  run: npm run test:e2e
57
57
 
58
58
  - name: Upload coverage
59
- uses: codecov/codecov-action@1af58845a975a7985b0beb0cbe6fbbb71a41dbad # pin@5.5.3
59
+ uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # pin@6.0.1
@@ -0,0 +1,4 @@
1
+ #!/bin/sh
2
+ . "$(dirname "$0")/_/husky.sh"
3
+
4
+ ./node_modules/.bin/lint-staged
package/.version CHANGED
@@ -1 +1 @@
1
- v14.3.0
1
+ v15.0.0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # Change Log
2
2
 
3
+ ## [v15.0.0](https://github.com/auth0/lock/tree/v15.0.0) (2026-06-05)
4
+ [Full Changelog](https://github.com/auth0/lock/compare/v14.3.0...v15.0.0)
5
+
6
+ ### Highlights
7
+
8
+ This release upgrades `auth0-js` to [v10.0.0](https://github.com/auth0/auth0.js/releases/tag/v10.0.0), which resolves [CVE-2026-42280](https://www.cve.org/CVERecord?id=CVE-2026-42280) — a security vulnerability in token validation for browser-based applications.
9
+
10
+ **⚠️ Breaking Changes**
11
+
12
+ - feat!: upgrade auth0-js from v9 to v10 [\#2810](https://github.com/auth0/lock/pull/2810) ([cschetan77](https://github.com/cschetan77))
13
+
14
+ **HS256 is no longer supported.** Applications configured with HS256 as the JWT Signature Algorithm will see `parseHash()` return an `invalid_token` error. HS256 requires the client secret to be present in the browser to verify tokens, which is a security vulnerability. Applications using RS256 are not affected.
15
+
16
+ **Migration:** Switch to RS256 before upgrading:
17
+ > Auth0 Dashboard → Applications → [Your App] → Settings → Advanced Settings → OAuth → JsonWebToken Signature Algorithm → **RS256**
18
+
19
+ **Changed**
20
+
21
+ - fix(deps): remove `trim` dependency [\#2783](https://github.com/auth0/lock/pull/2783) ([gameroman](https://github.com/gameroman))
22
+
23
+ The third-party `trim` package has been removed. All string trimming now uses the native `String.prototype.trim()` method, which has been available in all supported browsers and Node.js versions for many years. This removes one dependency from the shipped package with no change in behaviour.
24
+
3
25
  ## [v14.3.0](https://github.com/auth0/lock/tree/v14.3.0) (2026-04-06)
4
26
  [Full Changelog](https://github.com/auth0/lock/compare/v14.2.5...v14.3.0)
5
27
 
package/README.md CHANGED
@@ -31,7 +31,7 @@ From CDN
31
31
 
32
32
  ```html
33
33
  <!-- Latest patch release (recommended for production) -->
34
- <script src="https://cdn.auth0.com/js/lock/14.3.0/lock.min.js"></script>
34
+ <script src="https://cdn.auth0.com/js/lock/15.0.0/lock.min.js"></script>
35
35
  ```
36
36
 
37
37
  ### Configure Auth0
@@ -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.0";
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.0", "/").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.0";
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.0";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "auth0-lock",
3
- "version": "14.3.0",
3
+ "version": "15.0.0",
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",
@@ -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",
@@ -134,7 +135,6 @@
134
135
  "react": "^18.2.0",
135
136
  "react-dom": "^18.2.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
  },
@@ -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": {