lwc 2.38.1 → 2.39.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 (64) hide show
  1. package/dist/engine-dom/esm/es2017/engine-dom.js +203 -122
  2. package/dist/engine-dom/esm/es2017/engine-dom.js.map +1 -1
  3. package/dist/engine-dom/iife/es2017/engine-dom.js +203 -122
  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 +154 -40
  7. package/dist/engine-dom/iife/es2017/engine-dom_debug.js.map +1 -1
  8. package/dist/engine-dom/iife/es5/engine-dom.js +353 -207
  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 +305 -153
  12. package/dist/engine-dom/iife/es5/engine-dom_debug.js.map +1 -1
  13. package/dist/engine-dom/umd/es2017/engine-dom.js +203 -122
  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 +154 -40
  17. package/dist/engine-dom/umd/es2017/engine-dom_debug.js.map +1 -1
  18. package/dist/engine-dom/umd/es5/engine-dom.js +353 -207
  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 +305 -153
  22. package/dist/engine-dom/umd/es5/engine-dom_debug.js.map +1 -1
  23. package/dist/engine-server/commonjs/es2017/engine-server.js +168 -75
  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 +168 -75
  27. package/dist/engine-server/esm/es2017/engine-server.js.map +1 -1
  28. package/dist/synthetic-shadow/esm/es2017/synthetic-shadow.js +3 -3
  29. package/dist/synthetic-shadow/esm/es2017/synthetic-shadow.js.map +1 -1
  30. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow.js +3 -3
  31. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow.js.map +1 -1
  32. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow_debug.js +3 -3
  33. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow_debug.js.map +1 -1
  34. package/dist/synthetic-shadow/iife/es5/synthetic-shadow.js +3 -3
  35. package/dist/synthetic-shadow/iife/es5/synthetic-shadow.js.map +1 -1
  36. package/dist/synthetic-shadow/iife/es5/synthetic-shadow_debug.js +3 -3
  37. package/dist/synthetic-shadow/iife/es5/synthetic-shadow_debug.js.map +1 -1
  38. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow.js +3 -3
  39. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow.js.map +1 -1
  40. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow_debug.js +3 -3
  41. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow_debug.js.map +1 -1
  42. package/dist/synthetic-shadow/umd/es5/synthetic-shadow.js +3 -3
  43. package/dist/synthetic-shadow/umd/es5/synthetic-shadow.js.map +1 -1
  44. package/dist/synthetic-shadow/umd/es5/synthetic-shadow_debug.js +3 -3
  45. package/dist/synthetic-shadow/umd/es5/synthetic-shadow_debug.js.map +1 -1
  46. package/dist/wire-service/esm/es2017/wire-service.js +2 -2
  47. package/dist/wire-service/esm/es2017/wire-service.js.map +1 -1
  48. package/dist/wire-service/iife/es2017/wire-service.js +2 -2
  49. package/dist/wire-service/iife/es2017/wire-service.js.map +1 -1
  50. package/dist/wire-service/iife/es2017/wire-service_debug.js +2 -2
  51. package/dist/wire-service/iife/es2017/wire-service_debug.js.map +1 -1
  52. package/dist/wire-service/iife/es5/wire-service.js +2 -2
  53. package/dist/wire-service/iife/es5/wire-service.js.map +1 -1
  54. package/dist/wire-service/iife/es5/wire-service_debug.js +2 -2
  55. package/dist/wire-service/iife/es5/wire-service_debug.js.map +1 -1
  56. package/dist/wire-service/umd/es2017/wire-service.js +2 -2
  57. package/dist/wire-service/umd/es2017/wire-service.js.map +1 -1
  58. package/dist/wire-service/umd/es2017/wire-service_debug.js +2 -2
  59. package/dist/wire-service/umd/es2017/wire-service_debug.js.map +1 -1
  60. package/dist/wire-service/umd/es5/wire-service.js +2 -2
  61. package/dist/wire-service/umd/es5/wire-service.js.map +1 -1
  62. package/dist/wire-service/umd/es5/wire-service_debug.js +2 -2
  63. package/dist/wire-service/umd/es5/wire-service_debug.js.map +1 -1
  64. package/package.json +7 -7
@@ -444,9 +444,9 @@ function htmlEscape(str, attrMode = false) {
444
444
  * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
445
445
  */
446
446
  // Increment whenever the LWC template compiler changes
447
- const LWC_VERSION = "2.38.1";
447
+ const LWC_VERSION = "2.39.1";
448
448
  const LWC_VERSION_COMMENT_REGEX = /\/\*LWC compiler v([\d.]+)\*\/\s*}/;
449
- /** version: 2.38.1 */
449
+ /** version: 2.39.1 */
450
450
 
451
451
  /**
452
452
  * Copyright (C) 2018 salesforce.com, inc.
@@ -525,7 +525,7 @@ function setFeatureFlagForTest(name, value) {
525
525
  setFeatureFlag(name, value);
526
526
  }
527
527
  }
528
- /** version: 2.38.1 */
528
+ /** version: 2.39.1 */
529
529
 
530
530
  /*
531
531
  * Copyright (c) 2020, salesforce.com, inc.
@@ -621,7 +621,7 @@ function applyAriaReflection(prototype = Element.prototype) {
621
621
  }
622
622
  }
623
623
  }
624
- /** version: 2.38.1 */
624
+ /** version: 2.39.1 */
625
625
 
626
626
  /* proxy-compat-disable */
627
627
 
@@ -3106,6 +3106,93 @@ const BaseBridgeElement = HTMLBridgeElementFactory(HTMLElementConstructor, getOw
3106
3106
  freeze(BaseBridgeElement);
3107
3107
  seal(BaseBridgeElement.prototype);
3108
3108
 
3109
+ /*
3110
+ * Copyright (c) 2023, salesforce.com, inc.
3111
+ * All rights reserved.
3112
+ * SPDX-License-Identifier: MIT
3113
+ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
3114
+ */
3115
+ const supportsWeakRefs = typeof WeakRef === 'function' && typeof FinalizationRegistry === 'function';
3116
+ // In browsers that doesn't support WeakRefs, the values will still leak, but at least the keys won't
3117
+ class LegacyWeakMultiMap {
3118
+ constructor() {
3119
+ this._map = new WeakMap();
3120
+ }
3121
+ _getValues(key) {
3122
+ let values = this._map.get(key);
3123
+ if (isUndefined$1(values)) {
3124
+ values = new Set();
3125
+ this._map.set(key, values);
3126
+ }
3127
+ return values;
3128
+ }
3129
+ get(key) {
3130
+ return this._getValues(key);
3131
+ }
3132
+ add(key, vm) {
3133
+ const set = this._getValues(key);
3134
+ set.add(vm);
3135
+ }
3136
+ delete(key) {
3137
+ this._map.delete(key);
3138
+ }
3139
+ }
3140
+ // This implementation relies on the WeakRef/FinalizationRegistry proposal.
3141
+ // For some background, see: https://github.com/tc39/proposal-weakrefs
3142
+ class ModernWeakMultiMap {
3143
+ constructor() {
3144
+ this._map = new WeakMap();
3145
+ this._registry = new FinalizationRegistry((weakRefs) => {
3146
+ // This should be considered an optional cleanup method to remove GC'ed values from their respective arrays.
3147
+ // JS VMs are not obligated to call FinalizationRegistry callbacks.
3148
+ // Work backwards, removing stale VMs
3149
+ for (let i = weakRefs.length - 1; i >= 0; i--) {
3150
+ const vm = weakRefs[i].deref();
3151
+ if (isUndefined$1(vm)) {
3152
+ ArraySplice.call(weakRefs, i, 1); // remove
3153
+ }
3154
+ }
3155
+ });
3156
+ }
3157
+ _getWeakRefs(key) {
3158
+ let weakRefs = this._map.get(key);
3159
+ if (isUndefined$1(weakRefs)) {
3160
+ weakRefs = [];
3161
+ this._map.set(key, weakRefs);
3162
+ }
3163
+ return weakRefs;
3164
+ }
3165
+ get(key) {
3166
+ const weakRefs = this._getWeakRefs(key);
3167
+ const result = new Set();
3168
+ for (const weakRef of weakRefs) {
3169
+ const vm = weakRef.deref();
3170
+ if (!isUndefined$1(vm)) {
3171
+ result.add(vm);
3172
+ }
3173
+ }
3174
+ return result;
3175
+ }
3176
+ add(key, value) {
3177
+ const weakRefs = this._getWeakRefs(key);
3178
+ // We could check for duplicate values here, but it doesn't seem worth it.
3179
+ // We transform the output into a Set anyway
3180
+ ArrayPush$1.call(weakRefs, new WeakRef(value));
3181
+ // It's important here not to leak the second argument, which is the "held value." The FinalizationRegistry
3182
+ // effectively creates a strong reference between the first argument (the "target") and the held value. When
3183
+ // the target is GC'ed, the callback is called, and then the held value is GC'ed.
3184
+ // Putting the key here would mean the key is not GC'ed until the value is GC'ed, which defeats the purpose
3185
+ // of the WeakMap. Whereas putting the weakRefs array here is fine, because it doesn't have a strong reference
3186
+ // to anything. See also this example:
3187
+ // https://gist.github.com/nolanlawson/79a3d36e8e6cc25c5048bb17c1795aea
3188
+ this._registry.register(value, weakRefs);
3189
+ }
3190
+ delete(key) {
3191
+ this._map.delete(key);
3192
+ }
3193
+ }
3194
+ const WeakMultiMap = supportsWeakRefs ? ModernWeakMultiMap : LegacyWeakMultiMap;
3195
+
3109
3196
  /*
3110
3197
  * Copyright (c) 2020, salesforce.com, inc.
3111
3198
  * All rights reserved.
@@ -3115,9 +3202,13 @@ seal(BaseBridgeElement.prototype);
3115
3202
  const swappedTemplateMap = new WeakMap();
3116
3203
  const swappedComponentMap = new WeakMap();
3117
3204
  const swappedStyleMap = new WeakMap();
3118
- const activeTemplates = new WeakMap();
3119
- const activeComponents = new WeakMap();
3120
- const activeStyles = new WeakMap();
3205
+ // The important thing here is the weak values – VMs are transient (one per component instance) and should be GC'ed,
3206
+ // so we don't want to create strong references to them.
3207
+ // The weak keys are kind of useless, because Templates, LightningElementConstructors, and StylesheetFactories are
3208
+ // never GC'ed. But maybe they will be someday, so we may as well use weak keys too.
3209
+ const activeTemplates = new WeakMultiMap();
3210
+ const activeComponents = new WeakMultiMap();
3211
+ const activeStyles = new WeakMultiMap();
3121
3212
  function getTemplateOrSwappedTemplate(tpl) {
3122
3213
  assertNotProd(); // this method should never leak to prod
3123
3214
  const visited = new Set();
@@ -3149,72 +3240,27 @@ function setActiveVM(vm) {
3149
3240
  assertNotProd(); // this method should never leak to prod
3150
3241
  // tracking active component
3151
3242
  const Ctor = vm.def.ctor;
3152
- let componentVMs = activeComponents.get(Ctor);
3153
- if (isUndefined$1(componentVMs)) {
3154
- componentVMs = new Set();
3155
- activeComponents.set(Ctor, componentVMs);
3156
- }
3157
3243
  // this will allow us to keep track of the hot components
3158
- componentVMs.add(vm);
3244
+ activeComponents.add(Ctor, vm);
3159
3245
  // tracking active template
3160
3246
  const tpl = vm.cmpTemplate;
3161
3247
  if (tpl) {
3162
- let templateVMs = activeTemplates.get(tpl);
3163
- if (isUndefined$1(templateVMs)) {
3164
- templateVMs = new Set();
3165
- activeTemplates.set(tpl, templateVMs);
3166
- }
3167
3248
  // this will allow us to keep track of the templates that are
3168
3249
  // being used by a hot component
3169
- templateVMs.add(vm);
3250
+ activeTemplates.add(tpl, vm);
3170
3251
  // tracking active styles associated to template
3171
3252
  const stylesheets = tpl.stylesheets;
3172
3253
  if (!isUndefined$1(stylesheets)) {
3173
- flattenStylesheets(stylesheets).forEach((stylesheet) => {
3254
+ for (const stylesheet of flattenStylesheets(stylesheets)) {
3174
3255
  // this is necessary because we don't hold the list of styles
3175
3256
  // in the vm, we only hold the selected (already swapped template)
3176
3257
  // but the styles attached to the template might not be the actual
3177
3258
  // active ones, but the swapped versions of those.
3178
- stylesheet = getStyleOrSwappedStyle(stylesheet);
3179
- let stylesheetVMs = activeStyles.get(stylesheet);
3180
- if (isUndefined$1(stylesheetVMs)) {
3181
- stylesheetVMs = new Set();
3182
- activeStyles.set(stylesheet, stylesheetVMs);
3183
- }
3259
+ const swappedStylesheet = getStyleOrSwappedStyle(stylesheet);
3184
3260
  // this will allow us to keep track of the stylesheet that are
3185
3261
  // being used by a hot component
3186
- stylesheetVMs.add(vm);
3187
- });
3188
- }
3189
- }
3190
- }
3191
- function removeActiveVM(vm) {
3192
- assertNotProd(); // this method should never leak to prod
3193
- // tracking inactive component
3194
- const Ctor = vm.def.ctor;
3195
- let list = activeComponents.get(Ctor);
3196
- if (!isUndefined$1(list)) {
3197
- // deleting the vm from the set to avoid leaking memory
3198
- list.delete(vm);
3199
- }
3200
- // removing inactive template
3201
- const tpl = vm.cmpTemplate;
3202
- if (tpl) {
3203
- list = activeTemplates.get(tpl);
3204
- if (!isUndefined$1(list)) {
3205
- // deleting the vm from the set to avoid leaking memory
3206
- list.delete(vm);
3207
- }
3208
- // removing active styles associated to template
3209
- const styles = tpl.stylesheets;
3210
- if (!isUndefined$1(styles)) {
3211
- flattenStylesheets(styles).forEach((style) => {
3212
- list = activeStyles.get(style);
3213
- if (!isUndefined$1(list)) {
3214
- // deleting the vm from the set to avoid leaking memory
3215
- list.delete(vm);
3216
- }
3217
- });
3262
+ activeStyles.add(swappedStylesheet, vm);
3263
+ }
3218
3264
  }
3219
3265
  }
3220
3266
  }
@@ -3591,6 +3637,9 @@ function isVBaseElement(vnode) {
3591
3637
  function isSameVnode(vnode1, vnode2) {
3592
3638
  return vnode1.key === vnode2.key && vnode1.sel === vnode2.sel;
3593
3639
  }
3640
+ function isVCustomElement(vnode) {
3641
+ return vnode.type === 3 /* VNodeType.CustomElement */;
3642
+ }
3594
3643
  function isVFragment(vnode) {
3595
3644
  return vnode.type === 5 /* VNodeType.Fragment */;
3596
3645
  }
@@ -3896,7 +3945,12 @@ function patch(n1, n2, parent, renderer) {
3896
3945
  return;
3897
3946
  }
3898
3947
  if (process.env.NODE_ENV !== 'production') {
3899
- if (!isSameVnode(n1, n2)) {
3948
+ if (!isSameVnode(n1, n2) &&
3949
+ // Currently the only scenario when patch does not receive the same vnodes are for
3950
+ // dynamic components. When a dynamic component's constructor changes, the value of its
3951
+ // tag name (sel) will be different. The engine will unmount the previous element
3952
+ // and mount the new one using the new constructor in patchCustomElement.
3953
+ !(isVCustomElement(n1) && isVCustomElement(n2))) {
3900
3954
  throw new Error('Expected these VNodes to be the same: ' +
3901
3955
  JSON.stringify({ sel: n1.sel, key: n1.key }) +
3902
3956
  ', ' +
@@ -4084,8 +4138,9 @@ function mountCustomElement(vnode, parent, anchor, renderer) {
4084
4138
  }
4085
4139
  }
4086
4140
  function patchCustomElement(n1, n2, parent, renderer) {
4141
+ // TODO [#3331]: This if branch should be removed in 246 with lwc:dynamic
4087
4142
  if (n1.ctor !== n2.ctor) {
4088
- // If the constructor, unmount the current component and mount a new one using the new
4143
+ // If the constructor differs, unmount the current component and mount a new one using the new
4089
4144
  // constructor.
4090
4145
  const anchor = renderer.nextSibling(n1.elm);
4091
4146
  unmount(n1, parent, renderer, true);
@@ -4578,9 +4633,17 @@ function updateStaticChildren(c1, c2, parent, renderer) {
4578
4633
  if (n2 !== n1) {
4579
4634
  if (isVNode(n1)) {
4580
4635
  if (isVNode(n2)) {
4581
- // both vnodes are equivalent, and we just need to patch them
4582
- patch(n1, n2, parent, renderer);
4583
- anchor = n2.elm;
4636
+ if (isSameVnode(n1, n2)) {
4637
+ // both vnodes are equivalent, and we just need to patch them
4638
+ patch(n1, n2, parent, renderer);
4639
+ anchor = n2.elm;
4640
+ }
4641
+ else {
4642
+ // removing the old vnode since the new one is different
4643
+ unmount(n1, parent, renderer, true);
4644
+ mount(n2, parent, renderer, anchor);
4645
+ anchor = n2.elm;
4646
+ }
4584
4647
  }
4585
4648
  else {
4586
4649
  // removing the old vnode since the new one is null
@@ -4982,16 +5045,18 @@ function fid(url) {
4982
5045
  return url;
4983
5046
  }
4984
5047
  /**
4985
- * create a dynamic component via `<x-foo lwc:dynamic={Ctor}>`
5048
+ * [ddc] - create a (deprecated) dynamic component via `<x-foo lwc:dynamic={Ctor}>`
5049
+ *
5050
+ * TODO [#3331]: remove usage of lwc:dynamic in 246
4986
5051
  */
4987
- function dc(sel, Ctor, data, children = EmptyArray) {
5052
+ function ddc(sel, Ctor, data, children = EmptyArray) {
4988
5053
  if (process.env.NODE_ENV !== 'production') {
4989
5054
  assert.isTrue(isString(sel), `dc() 1st argument sel must be a string.`);
4990
5055
  assert.isTrue(isObject(data), `dc() 3nd argument data must be an object.`);
4991
5056
  assert.isTrue(arguments.length === 3 || isArray$1(children), `dc() 4nd argument data must be an array.`);
4992
5057
  }
4993
5058
  // null or undefined values should produce a null value in the VNodes
4994
- if (Ctor == null) {
5059
+ if (isNull(Ctor) || isUndefined$1(Ctor)) {
4995
5060
  return null;
4996
5061
  }
4997
5062
  if (!isComponentConstructor(Ctor)) {
@@ -4999,6 +5064,30 @@ function dc(sel, Ctor, data, children = EmptyArray) {
4999
5064
  }
5000
5065
  return c(sel, Ctor, data, children);
5001
5066
  }
5067
+ /**
5068
+ * [dc] - create a dynamic component via `<lwc:component lwc:is={Ctor}>`
5069
+ */
5070
+ function dc(Ctor, data, children = EmptyArray) {
5071
+ if (process.env.NODE_ENV !== 'production') {
5072
+ assert.isTrue(isObject(data), `dc() 2nd argument data must be an object.`);
5073
+ assert.isTrue(arguments.length === 3 || isArray$1(children), `dc() 3rd argument data must be an array.`);
5074
+ }
5075
+ // Null or undefined values should produce a null value in the VNodes.
5076
+ // This is the only value at compile time as the constructor will not be known.
5077
+ if (isNull(Ctor) || isUndefined$1(Ctor)) {
5078
+ return null;
5079
+ }
5080
+ if (!isComponentConstructor(Ctor)) {
5081
+ throw new Error(`Invalid constructor ${toString$1(Ctor)} is not a LightningElement constructor.`);
5082
+ }
5083
+ // Look up the dynamic component's name at runtime once the constructor is available.
5084
+ // This information is only known at runtime and is stored as part of registerComponent.
5085
+ const sel = getComponentRegisteredName(Ctor);
5086
+ if (isUndefined$1(sel) || sel === '') {
5087
+ throw new Error(`Invalid LWC constructor ${toString$1(Ctor)} does not have a registered name`);
5088
+ }
5089
+ return c(sel, Ctor, data, children);
5090
+ }
5002
5091
  /**
5003
5092
  * slow children collection marking mechanism. this API allows the compiler to signal
5004
5093
  * to the engine that a particular collection of children must be diffed using the slow
@@ -5061,6 +5150,7 @@ const api = freeze({
5061
5150
  fid,
5062
5151
  shc,
5063
5152
  ssf,
5153
+ ddc,
5064
5154
  });
5065
5155
 
5066
5156
  /*
@@ -5421,28 +5511,34 @@ function invokeEventListener(vm, fn, thisValue, event) {
5421
5511
  * SPDX-License-Identifier: MIT
5422
5512
  * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
5423
5513
  */
5424
- const signedTemplateMap = new Map();
5514
+ const registeredComponentMap = new Map();
5425
5515
  /**
5426
5516
  * INTERNAL: This function can only be invoked by compiled code. The compiler
5427
5517
  * will prevent this function from being imported by userland code.
5428
5518
  */
5429
5519
  function registerComponent(
5430
5520
  // We typically expect a LightningElementConstructor, but technically you can call this with anything
5431
- Ctor, { tmpl }) {
5521
+ Ctor, metadata) {
5432
5522
  if (isFunction$1(Ctor)) {
5433
5523
  if (process.env.NODE_ENV !== 'production') {
5434
5524
  // There is no point in running this in production, because the version mismatch check relies
5435
5525
  // on code comments which are stripped out in production by minifiers
5436
5526
  checkVersionMismatch(Ctor, 'component');
5437
5527
  }
5438
- signedTemplateMap.set(Ctor, tmpl);
5528
+ // TODO [#3331]: add validation to check the value of metadata.sel is not an empty string.
5529
+ registeredComponentMap.set(Ctor, metadata);
5439
5530
  }
5440
5531
  // chaining this method as a way to wrap existing assignment of component constructor easily,
5441
5532
  // without too much transformation
5442
5533
  return Ctor;
5443
5534
  }
5444
5535
  function getComponentRegisteredTemplate(Ctor) {
5445
- return signedTemplateMap.get(Ctor);
5536
+ var _a;
5537
+ return (_a = registeredComponentMap.get(Ctor)) === null || _a === void 0 ? void 0 : _a.tmpl;
5538
+ }
5539
+ function getComponentRegisteredName(Ctor) {
5540
+ var _a;
5541
+ return (_a = registeredComponentMap.get(Ctor)) === null || _a === void 0 ? void 0 : _a.sel;
5446
5542
  }
5447
5543
  function getTemplateReactiveObserver(vm) {
5448
5544
  return createReactiveObserver();
@@ -5572,9 +5668,6 @@ function resetComponentStateWhenRemoved(vm) {
5572
5668
  runChildNodesDisconnectedCallback(vm);
5573
5669
  runLightChildNodesDisconnectedCallback(vm);
5574
5670
  }
5575
- if (process.env.NODE_ENV !== 'production') {
5576
- removeActiveVM(vm);
5577
- }
5578
5671
  }
5579
5672
  // this method is triggered by the diffing algo only when a vnode from the
5580
5673
  // old vnode.children is removed from the DOM.
@@ -6219,7 +6312,7 @@ function readonly(obj) {
6219
6312
  }
6220
6313
  return getReadOnlyProxy(obj);
6221
6314
  }
6222
- /* version: 2.38.1 */
6315
+ /* version: 2.39.1 */
6223
6316
 
6224
6317
  /*
6225
6318
  * Copyright (c) 2020, salesforce.com, inc.
@@ -6754,7 +6847,7 @@ seal(LightningElement.prototype);
6754
6847
  function createElement() {
6755
6848
  throw new Error('createElement is not supported in @lwc/engine-server, only @lwc/engine-dom.');
6756
6849
  }
6757
- /* version: 2.38.1 */
6850
+ /* version: 2.39.1 */
6758
6851
 
6759
6852
  exports.LightningElement = LightningElement;
6760
6853
  exports.api = api$1;