lwc 2.45.1 → 2.45.3

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 (68) hide show
  1. package/dist/engine-dom/esm/es2017/engine-dom.js +101 -60
  2. package/dist/engine-dom/esm/es2017/engine-dom.js.map +1 -1
  3. package/dist/engine-dom/iife/es2017/engine-dom.js +101 -60
  4. package/dist/engine-dom/iife/es2017/engine-dom.js.map +1 -1
  5. package/dist/engine-dom/iife/es2017/engine-dom.min.js +1 -1
  6. package/dist/engine-dom/iife/es2017/engine-dom_debug.js +110 -58
  7. package/dist/engine-dom/iife/es2017/engine-dom_debug.js.map +1 -1
  8. package/dist/engine-dom/iife/es5/engine-dom.js +114 -62
  9. package/dist/engine-dom/iife/es5/engine-dom.js.map +1 -1
  10. package/dist/engine-dom/iife/es5/engine-dom.min.js +1 -1
  11. package/dist/engine-dom/iife/es5/engine-dom_debug.js +123 -60
  12. package/dist/engine-dom/iife/es5/engine-dom_debug.js.map +1 -1
  13. package/dist/engine-dom/umd/es2017/engine-dom.js +101 -60
  14. package/dist/engine-dom/umd/es2017/engine-dom.js.map +1 -1
  15. package/dist/engine-dom/umd/es2017/engine-dom.min.js +1 -1
  16. package/dist/engine-dom/umd/es2017/engine-dom_debug.js +110 -58
  17. package/dist/engine-dom/umd/es2017/engine-dom_debug.js.map +1 -1
  18. package/dist/engine-dom/umd/es5/engine-dom.js +114 -62
  19. package/dist/engine-dom/umd/es5/engine-dom.js.map +1 -1
  20. package/dist/engine-dom/umd/es5/engine-dom.min.js +1 -1
  21. package/dist/engine-dom/umd/es5/engine-dom_debug.js +123 -60
  22. package/dist/engine-dom/umd/es5/engine-dom_debug.js.map +1 -1
  23. package/dist/engine-server/commonjs/es2017/engine-server.js +7796 -92
  24. package/dist/engine-server/commonjs/es2017/engine-server.js.map +1 -1
  25. package/dist/engine-server/commonjs/es2017/engine-server.min.js +1 -1
  26. package/dist/engine-server/esm/es2017/engine-server.js +7795 -72
  27. package/dist/engine-server/esm/es2017/engine-server.js.map +1 -1
  28. package/dist/synthetic-shadow/esm/es2017/synthetic-shadow.js +72 -13
  29. package/dist/synthetic-shadow/esm/es2017/synthetic-shadow.js.map +1 -1
  30. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow.js +72 -13
  31. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow.js.map +1 -1
  32. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow.min.js +40 -2
  33. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow_debug.js +56 -6
  34. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow_debug.js.map +1 -1
  35. package/dist/synthetic-shadow/iife/es5/synthetic-shadow.js +71 -12
  36. package/dist/synthetic-shadow/iife/es5/synthetic-shadow.js.map +1 -1
  37. package/dist/synthetic-shadow/iife/es5/synthetic-shadow.min.js +39 -1
  38. package/dist/synthetic-shadow/iife/es5/synthetic-shadow_debug.js +43 -4
  39. package/dist/synthetic-shadow/iife/es5/synthetic-shadow_debug.js.map +1 -1
  40. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow.js +72 -13
  41. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow.js.map +1 -1
  42. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow.min.js +40 -2
  43. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow_debug.js +56 -6
  44. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow_debug.js.map +1 -1
  45. package/dist/synthetic-shadow/umd/es5/synthetic-shadow.js +71 -12
  46. package/dist/synthetic-shadow/umd/es5/synthetic-shadow.js.map +1 -1
  47. package/dist/synthetic-shadow/umd/es5/synthetic-shadow.min.js +39 -1
  48. package/dist/synthetic-shadow/umd/es5/synthetic-shadow_debug.js +43 -4
  49. package/dist/synthetic-shadow/umd/es5/synthetic-shadow_debug.js.map +1 -1
  50. package/dist/wire-service/esm/es2017/wire-service.js +10 -4
  51. package/dist/wire-service/esm/es2017/wire-service.js.map +1 -1
  52. package/dist/wire-service/iife/es2017/wire-service.js +10 -4
  53. package/dist/wire-service/iife/es2017/wire-service.js.map +1 -1
  54. package/dist/wire-service/iife/es2017/wire-service_debug.js +10 -4
  55. package/dist/wire-service/iife/es2017/wire-service_debug.js.map +1 -1
  56. package/dist/wire-service/iife/es5/wire-service.js +10 -4
  57. package/dist/wire-service/iife/es5/wire-service.js.map +1 -1
  58. package/dist/wire-service/iife/es5/wire-service_debug.js +10 -4
  59. package/dist/wire-service/iife/es5/wire-service_debug.js.map +1 -1
  60. package/dist/wire-service/umd/es2017/wire-service.js +10 -4
  61. package/dist/wire-service/umd/es2017/wire-service.js.map +1 -1
  62. package/dist/wire-service/umd/es2017/wire-service_debug.js +10 -4
  63. package/dist/wire-service/umd/es2017/wire-service_debug.js.map +1 -1
  64. package/dist/wire-service/umd/es5/wire-service.js +10 -4
  65. package/dist/wire-service/umd/es5/wire-service.js.map +1 -1
  66. package/dist/wire-service/umd/es5/wire-service_debug.js +10 -4
  67. package/dist/wire-service/umd/es5/wire-service_debug.js.map +1 -1
  68. package/package.json +7 -7
@@ -4,9 +4,11 @@
4
4
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.LWC = {}));
5
5
  })(this, (function (exports) { 'use strict';
6
6
 
7
- /* proxy-compat-disable */
8
7
  /**
9
- * Copyright (C) 2018 salesforce.com, inc.
8
+ * Copyright (C) 2023 salesforce.com, inc.
9
+ */
10
+ /**
11
+ * Copyright (C) 2023 salesforce.com, inc.
10
12
  */
11
13
  /*
12
14
  * Copyright (c) 2018, salesforce.com, inc.
@@ -49,7 +51,16 @@
49
51
  */
50
52
  const { assign, create, defineProperties, defineProperty, freeze, getOwnPropertyDescriptor: getOwnPropertyDescriptor$1, getOwnPropertyNames: getOwnPropertyNames$1, getPrototypeOf: getPrototypeOf$1, hasOwnProperty: hasOwnProperty$1, isFrozen, keys, seal, setPrototypeOf, } = Object;
51
53
  const { isArray: isArray$1 } = Array;
52
- const { concat: ArrayConcat$1, copyWithin: ArrayCopyWithin, fill: ArrayFill, filter: ArrayFilter, find: ArrayFind, findIndex: ArrayFindIndex, indexOf: ArrayIndexOf, join: ArrayJoin, map: ArrayMap, pop: ArrayPop, push: ArrayPush$1, reduce: ArrayReduce, reverse: ArrayReverse, shift: ArrayShift, slice: ArraySlice, some: ArraySome, sort: ArraySort, splice: ArraySplice, unshift: ArrayUnshift, forEach, } = Array.prototype;
54
+ const { concat: ArrayConcat$1, copyWithin: ArrayCopyWithin, every: ArrayEvery, fill: ArrayFill, filter: ArrayFilter, find: ArrayFind, findIndex: ArrayFindIndex, includes: ArrayIncludes, indexOf: ArrayIndexOf, join: ArrayJoin, map: ArrayMap, pop: ArrayPop, push: ArrayPush$1, reduce: ArrayReduce, reverse: ArrayReverse, shift: ArrayShift, slice: ArraySlice, some: ArraySome, sort: ArraySort, splice: ArraySplice, unshift: ArrayUnshift, forEach, } = Array.prototype;
55
+ // The type of the return value of Array.prototype.every is `this is T[]`. However, once this
56
+ // Array method is pulled out of the prototype, the function is now referencing `this` where
57
+ // `this` is meaningless, resulting in a TypeScript compilation error.
58
+ //
59
+ // Exposing this helper function is the closest we can get to preserving the usage patterns
60
+ // of Array.prototype methods used elsewhere in the codebase.
61
+ function arrayEvery(arr, predicate) {
62
+ return ArrayEvery.call(arr, predicate);
63
+ }
53
64
  const { fromCharCode: StringFromCharCode } = String;
54
65
  const { charCodeAt: StringCharCodeAt, replace: StringReplace, split: StringSplit, slice: StringSlice, toLowerCase: StringToLowerCase, } = String.prototype;
55
66
  function isUndefined$1(obj) {
@@ -190,7 +201,7 @@
190
201
  })();
191
202
  // These attributes take either an ID or a list of IDs as values.
192
203
  // This includes aria-* attributes as well as the special non-ARIA "for" attribute
193
- const ID_REFERENCING_ATTRIBUTES_SET = new Set([
204
+ const ID_REFERENCING_ATTRIBUTES_SET = /*@__PURE__*/ new Set([
194
205
  'aria-activedescendant',
195
206
  'aria-controls',
196
207
  'aria-describedby',
@@ -277,11 +288,11 @@
277
288
  /**
278
289
  * Map associating previously transformed HTML property into HTML attribute.
279
290
  */
280
- const CACHED_PROPERTY_ATTRIBUTE_MAPPING = new Map();
291
+ const CACHED_PROPERTY_ATTRIBUTE_MAPPING = /*@__PURE__@*/ new Map();
281
292
  /**
282
293
  * Map associating previously transformed HTML attribute into HTML property.
283
294
  */
284
- const CACHED_ATTRIBUTE_PROPERTY_MAPPING = new Map();
295
+ const CACHED_ATTRIBUTE_PROPERTY_MAPPING = /*@__PURE__@*/ new Map();
285
296
  function htmlPropertyToAttribute(propName) {
286
297
  const ariaAttributeName = AriaPropNameToAttrNameMap[propName];
287
298
  if (!isUndefined$1(ariaAttributeName)) {
@@ -335,12 +346,12 @@
335
346
  * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
336
347
  */
337
348
  // Increment whenever the LWC template compiler changes
338
- const LWC_VERSION = "2.45.1";
349
+ const LWC_VERSION = "2.45.3";
339
350
  const LWC_VERSION_COMMENT_REGEX = /\/\*LWC compiler v([\d.]+)\*\/\s*}/;
340
- /** version: 2.45.1 */
351
+ /** version: 2.45.3 */
341
352
 
342
353
  /**
343
- * Copyright (C) 2018 salesforce.com, inc.
354
+ * Copyright (C) 2023 salesforce.com, inc.
344
355
  */
345
356
 
346
357
  /*
@@ -415,10 +426,10 @@
415
426
  setFeatureFlag(name, value);
416
427
  }
417
428
  }
418
- /** version: 2.45.1 */
429
+ /** version: 2.45.3 */
419
430
 
420
431
  /**
421
- * Copyright (C) 2018 salesforce.com, inc.
432
+ * Copyright (C) 2023 salesforce.com, inc.
422
433
  */
423
434
 
424
435
  /*
@@ -479,7 +490,7 @@
479
490
  }
480
491
  }
481
492
  }
482
- /** version: 2.45.1 */
493
+ /** version: 2.45.3 */
483
494
 
484
495
  /*
485
496
  * Copyright (c) 2018, salesforce.com, inc.
@@ -493,7 +504,9 @@
493
504
  applyAriaReflection();
494
505
  }
495
506
 
496
- /* proxy-compat-disable */
507
+ /**
508
+ * Copyright (C) 2023 salesforce.com, inc.
509
+ */
497
510
 
498
511
  /*
499
512
  * Copyright (c) 2018, salesforce.com, inc.
@@ -922,19 +935,6 @@
922
935
  'tabIndex',
923
936
  'title',
924
937
  ];
925
- let controlledElement = null;
926
- let controlledAttributeName;
927
- function isAttributeLocked(elm, attrName) {
928
- return elm !== controlledElement || attrName !== controlledAttributeName;
929
- }
930
- function lockAttribute(_elm, _key) {
931
- controlledElement = null;
932
- controlledAttributeName = undefined;
933
- }
934
- function unlockAttribute(elm, key) {
935
- controlledElement = elm;
936
- controlledAttributeName = key;
937
- }
938
938
 
939
939
  /*
940
940
  * Copyright (c) 2018, salesforce.com, inc.
@@ -973,6 +973,7 @@
973
973
  * SPDX-License-Identifier: MIT
974
974
  * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
975
975
  */
976
+ /* eslint @lwc/lwc-internal/no-production-assert: "off" */
976
977
  function generateDataDescriptor(options) {
977
978
  return assign({
978
979
  configurable: true,
@@ -1802,6 +1803,14 @@
1802
1803
  * SPDX-License-Identifier: MIT
1803
1804
  * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
1804
1805
  */
1806
+ /**
1807
+ * This module is responsible for producing the ComponentDef object that is always
1808
+ * accessible via `vm.def`. This is lazily created during the creation of the first
1809
+ * instance of a component class, and shared across all instances.
1810
+ *
1811
+ * This structure can be used to synthetically create proxies, and understand the
1812
+ * shape of a component. It is also used internally to apply extra optimizations.
1813
+ */
1805
1814
  /**
1806
1815
  * This operation is called with a descriptor of an standard html property
1807
1816
  * that a Custom Element can support (including AOM properties), which
@@ -1965,15 +1974,11 @@
1965
1974
  removeAttribute(name) {
1966
1975
  const vm = getAssociatedVM(this);
1967
1976
  const { elm, renderer: { removeAttribute }, } = vm;
1968
- unlockAttribute(elm, name);
1969
1977
  removeAttribute(elm, name);
1970
- lockAttribute();
1971
1978
  },
1972
1979
  removeAttributeNS(namespace, name) {
1973
1980
  const { elm, renderer: { removeAttribute }, } = getAssociatedVM(this);
1974
- unlockAttribute(elm, name);
1975
1981
  removeAttribute(elm, name, namespace);
1976
- lockAttribute();
1977
1982
  },
1978
1983
  getAttribute(name) {
1979
1984
  const vm = getAssociatedVM(this);
@@ -1995,9 +2000,7 @@
1995
2000
  logError(`Failed to construct '${getComponentTag(vm)}': The result must not have attributes.`);
1996
2001
  }
1997
2002
  }
1998
- unlockAttribute(elm, name);
1999
2003
  setAttribute(elm, name, value);
2000
- lockAttribute();
2001
2004
  },
2002
2005
  setAttributeNS(namespace, name, value) {
2003
2006
  const vm = getAssociatedVM(this);
@@ -2007,9 +2010,7 @@
2007
2010
  logError(`Failed to construct '${getComponentTag(vm)}': The result must not have attributes.`);
2008
2011
  }
2009
2012
  }
2010
- unlockAttribute(elm, name);
2011
2013
  setAttribute(elm, name, value, namespace);
2012
- lockAttribute();
2013
2014
  },
2014
2015
  getBoundingClientRect() {
2015
2016
  const vm = getAssociatedVM(this);
@@ -2391,7 +2392,7 @@
2391
2392
  });
2392
2393
  runWithBoundaryProtection(vm, vm, noop, () => {
2393
2394
  // job
2394
- connector = new adapter(dataCallback);
2395
+ connector = new adapter(dataCallback, { tagName: vm.tagName });
2395
2396
  }, noop);
2396
2397
  const updateConnectorConfig = (config) => {
2397
2398
  // every time the config is recomputed due to tracking,
@@ -2959,6 +2960,10 @@
2959
2960
  * SPDX-License-Identifier: MIT
2960
2961
  * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
2961
2962
  */
2963
+ /**
2964
+ * This module is responsible for creating the base bridge class BaseBridgeElement
2965
+ * that represents the HTMLElement extension used for any LWC inserted in the DOM.
2966
+ */
2962
2967
  // A bridge descriptor is a descriptor whose job is just to get the component instance
2963
2968
  // from the element instance, and get the value or set a new value on the component.
2964
2969
  // This means that across different elements, similar names can get the exact same
@@ -3012,14 +3017,6 @@
3012
3017
  }
3013
3018
  return;
3014
3019
  }
3015
- if (!isAttributeLocked(this, attrName)) {
3016
- // Ignore changes triggered by the engine itself during:
3017
- // * diffing when public props are attempting to reflect to the DOM
3018
- // * component via `this.setAttribute()`, should never update the prop
3019
- // Both cases, the setAttribute call is always wrapped by the unlocking of the
3020
- // attribute to be changed
3021
- return;
3022
- }
3023
3020
  // Reflect attribute change to the corresponding property when changed from outside.
3024
3021
  this[propName] = newValue;
3025
3022
  };
@@ -3364,6 +3361,14 @@
3364
3361
  * SPDX-License-Identifier: MIT
3365
3362
  * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
3366
3363
  */
3364
+ /**
3365
+ * This module is responsible for producing the ComponentDef object that is always
3366
+ * accessible via `vm.def`. This is lazily created during the creation of the first
3367
+ * instance of a component class, and shared across all instances.
3368
+ *
3369
+ * This structure can be used to synthetically create proxies, and understand the
3370
+ * shape of a component. It is also used internally to apply extra optimizations.
3371
+ */
3367
3372
  const CtorToDefMap = new WeakMap();
3368
3373
  function getCtorProto(Ctor) {
3369
3374
  let proto = getPrototypeOf$1(Ctor);
@@ -3805,7 +3810,6 @@
3805
3810
  const cur = attrs[key];
3806
3811
  const old = oldAttrs[key];
3807
3812
  if (old !== cur) {
3808
- unlockAttribute(elm, key);
3809
3813
  if (StringCharCodeAt.call(key, 3) === ColonCharCode$1) {
3810
3814
  // Assume xml namespace
3811
3815
  setAttribute(elm, key, cur, XML_NAMESPACE);
@@ -3820,7 +3824,6 @@
3820
3824
  else {
3821
3825
  setAttribute(elm, key, cur);
3822
3826
  }
3823
- lockAttribute();
3824
3827
  }
3825
3828
  }
3826
3829
  }
@@ -6708,6 +6711,27 @@
6708
6711
  }
6709
6712
  return false;
6710
6713
  }
6714
+ // The validationOptOut static property can be an array of attribute names.
6715
+ // Any attribute names specified in that array will not be validated, and the
6716
+ // LWC runtime will assume that VDOM attrs and DOM attrs are in sync.
6717
+ function getValidationPredicate(optOutStaticProp) {
6718
+ if (isUndefined$1(optOutStaticProp)) {
6719
+ return (_attrName) => true;
6720
+ }
6721
+ // If validationOptOut is true, no attributes will be checked for correctness
6722
+ // and the runtime will assume VDOM attrs and DOM attrs are in sync.
6723
+ if (isTrue(optOutStaticProp)) {
6724
+ return (_attrName) => false;
6725
+ }
6726
+ // If validationOptOut is an array of strings, attributes specified in the
6727
+ // array will be "opted out". Attributes not specified in the array will still
6728
+ // be validated.
6729
+ if (isArray$1(optOutStaticProp) && arrayEvery(optOutStaticProp, isString)) {
6730
+ return (attrName) => !ArrayIncludes.call(optOutStaticProp, attrName);
6731
+ }
6732
+ logWarn('Validation opt out must be `true` or an array of attributes that should not be validated.');
6733
+ return (_attrName) => true;
6734
+ }
6711
6735
  function hydrateText(node, vnode, renderer) {
6712
6736
  var _a;
6713
6737
  if (!hasCorrectNodeType(vnode, node, 3 /* EnvNodeTypes.TEXT */, renderer)) {
@@ -6786,8 +6810,19 @@
6786
6810
  return elm;
6787
6811
  }
6788
6812
  function hydrateCustomElement(elm, vnode, renderer) {
6813
+ const { validationOptOut } = vnode.ctor;
6814
+ const shouldValidateAttr = getValidationPredicate(validationOptOut);
6815
+ // The validationOptOut static property can be an array of attribute names.
6816
+ // Any attribute names specified in that array will not be validated, and the
6817
+ // LWC runtime will assume that VDOM attrs and DOM attrs are in sync.
6818
+ //
6819
+ // If validationOptOut is true, no attributes will be checked for correctness
6820
+ // and the runtime will assume VDOM attrs and DOM attrs are in sync.
6821
+ //
6822
+ // Therefore, if validationOptOut is falsey or an array of strings, we need to
6823
+ // examine some or all of the custom element's attributes.
6789
6824
  if (!hasCorrectNodeType(vnode, elm, 1 /* EnvNodeTypes.ELEMENT */, renderer) ||
6790
- !isMatchingElement(vnode, elm, renderer)) {
6825
+ !isMatchingElement(vnode, elm, renderer, shouldValidateAttr)) {
6791
6826
  return handleMismatch(elm, vnode, renderer);
6792
6827
  }
6793
6828
  const { sel, mode, ctor, owner } = vnode;
@@ -6818,14 +6853,12 @@
6818
6853
  function hydrateChildren(node, children, parentNode, owner) {
6819
6854
  let hasWarned = false;
6820
6855
  let nextNode = node;
6821
- let anchor = null;
6822
6856
  const { renderer } = owner;
6823
6857
  for (let i = 0; i < children.length; i++) {
6824
6858
  const childVnode = children[i];
6825
6859
  if (!isNull(childVnode)) {
6826
6860
  if (nextNode) {
6827
6861
  nextNode = hydrateNode(nextNode, childVnode, renderer);
6828
- anchor = childVnode.elm;
6829
6862
  }
6830
6863
  else {
6831
6864
  hasMismatch = true;
@@ -6835,8 +6868,8 @@
6835
6868
  logError(`Hydration mismatch: incorrect number of rendered nodes. Client produced more nodes than the server.`, owner);
6836
6869
  }
6837
6870
  }
6838
- mount(childVnode, parentNode, renderer, anchor);
6839
- anchor = childVnode.elm;
6871
+ mount(childVnode, parentNode, renderer, nextNode);
6872
+ nextNode = renderer.nextSibling(childVnode.elm);
6840
6873
  }
6841
6874
  }
6842
6875
  }
@@ -6881,7 +6914,7 @@
6881
6914
  }
6882
6915
  return true;
6883
6916
  }
6884
- function isMatchingElement(vnode, elm, renderer) {
6917
+ function isMatchingElement(vnode, elm, renderer, shouldValidateAttr = () => true) {
6885
6918
  const { getProperty } = renderer;
6886
6919
  if (vnode.sel.toLowerCase() !== getProperty(elm, 'tagName').toLowerCase()) {
6887
6920
  if (process.env.NODE_ENV !== 'production') {
@@ -6889,10 +6922,14 @@
6889
6922
  }
6890
6923
  return false;
6891
6924
  }
6892
- const hasIncompatibleAttrs = validateAttrs(vnode, elm, renderer);
6893
- const hasIncompatibleClass = validateClassAttr(vnode, elm, renderer);
6894
- const hasIncompatibleStyle = validateStyleAttr(vnode, elm, renderer);
6895
- return hasIncompatibleAttrs && hasIncompatibleClass && hasIncompatibleStyle;
6925
+ const hasCompatibleAttrs = validateAttrs(vnode, elm, renderer, shouldValidateAttr);
6926
+ const hasCompatibleClass = shouldValidateAttr('class')
6927
+ ? validateClassAttr(vnode, elm, renderer)
6928
+ : true;
6929
+ const hasCompatibleStyle = shouldValidateAttr('style')
6930
+ ? validateStyleAttr(vnode, elm, renderer)
6931
+ : true;
6932
+ return hasCompatibleAttrs && hasCompatibleClass && hasCompatibleStyle;
6896
6933
  }
6897
6934
  function attributeValuesAreEqual(vnodeValue, value) {
6898
6935
  const vnodeValueAsString = String(vnodeValue);
@@ -6907,12 +6944,15 @@
6907
6944
  // In all other cases, the two values are not considered equal
6908
6945
  return false;
6909
6946
  }
6910
- function validateAttrs(vnode, elm, renderer) {
6947
+ function validateAttrs(vnode, elm, renderer, shouldValidateAttr) {
6911
6948
  const { data: { attrs = {} }, } = vnode;
6912
6949
  let nodesAreCompatible = true;
6913
6950
  // Validate attributes, though we could always recovery from those by running the update mods.
6914
6951
  // Note: intentionally ONLY matching vnodes.attrs to elm.attrs, in case SSR is adding extra attributes.
6915
6952
  for (const [attrName, attrValue] of Object.entries(attrs)) {
6953
+ if (!shouldValidateAttr(attrName)) {
6954
+ continue;
6955
+ }
6916
6956
  const { owner } = vnode;
6917
6957
  const { getAttribute } = renderer;
6918
6958
  const elmAttrValue = getAttribute(elm, attrName);
@@ -7336,7 +7376,7 @@
7336
7376
  }
7337
7377
  return getReadOnlyProxy(obj);
7338
7378
  }
7339
- /* version: 2.45.1 */
7379
+ /** version: 2.45.3 */
7340
7380
 
7341
7381
  /*
7342
7382
  * Copyright (c) 2018, salesforce.com, inc.
@@ -7598,6 +7638,7 @@
7598
7638
  * SPDX-License-Identifier: MIT
7599
7639
  * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
7600
7640
  */
7641
+ new WeakMap();
7601
7642
  // Creates a custom element for compat (legacy) browser environments
7602
7643
  const createCustomElementCompat = (tagName, upgradeCallback) => {
7603
7644
  const elm = document.createElement(tagName);
@@ -7724,7 +7765,7 @@
7724
7765
  const renderer = (function (exports) {
7725
7766
 
7726
7767
  /**
7727
- * Copyright (C) 2018 salesforce.com, inc.
7768
+ * Copyright (C) 2023 salesforce.com, inc.
7728
7769
  */
7729
7770
  /*
7730
7771
  * Copyright (c) 2018, salesforce.com, inc.
@@ -7764,7 +7805,7 @@
7764
7805
  function isNull(obj) {
7765
7806
  return obj === null;
7766
7807
  }
7767
- /** version: 2.45.1 */
7808
+ /** version: 2.45.3 */
7768
7809
 
7769
7810
  /*
7770
7811
  * Copyright (c) 2023, salesforce.com, inc.
@@ -8383,7 +8424,7 @@
8383
8424
  });
8384
8425
  }));
8385
8426
  }
8386
- /* version: 2.45.1 */
8427
+ /** version: 2.45.3 */
8387
8428
 
8388
8429
  exports.LightningElement = LightningElement;
8389
8430
  exports.__unstable__ProfilerControl = profilerControl;