@lwc/ssr-runtime 8.3.0 → 8.4.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.
package/dist/index.cjs.js CHANGED
@@ -5,8 +5,6 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- var shared = require('@lwc/shared');
9
-
10
8
  /*
11
9
  * Copyright (c) 2024, Salesforce, Inc.
12
10
  * All rights reserved.
@@ -118,6 +116,224 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
118
116
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
119
117
  };
120
118
 
119
+ /**
120
+ * Copyright (c) 2024 Salesforce, Inc.
121
+ */
122
+ /*
123
+ * Copyright (c) 2018, salesforce.com, inc.
124
+ * All rights reserved.
125
+ * SPDX-License-Identifier: MIT
126
+ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
127
+ */
128
+ /**
129
+ *
130
+ * @param value
131
+ * @param msg
132
+ */
133
+
134
+ /*
135
+ * Copyright (c) 2024, Salesforce, Inc.
136
+ * All rights reserved.
137
+ * SPDX-License-Identifier: MIT
138
+ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
139
+ */
140
+ const {
141
+ /** Detached {@linkcode Object.assign}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign MDN Reference}. */
142
+ assign,
143
+ /** Detached {@linkcode Object.create}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create MDN Reference}. */
144
+ create,
145
+ /** Detached {@linkcode Object.defineProperties}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties MDN Reference}. */
146
+ defineProperties,
147
+ /** Detached {@linkcode Object.defineProperty}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty MDN Reference}. */
148
+ defineProperty,
149
+ /** Detached {@linkcode Object.entries}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries MDN Reference}. */
150
+ entries,
151
+ /** Detached {@linkcode Object.freeze}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze MDN Reference}. */
152
+ freeze,
153
+ /** Detached {@linkcode Object.getOwnPropertyDescriptor}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor MDN Reference}. */
154
+ getOwnPropertyDescriptor,
155
+ /** Detached {@linkcode Object.getOwnPropertyDescriptors}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors MDN Reference}. */
156
+ getOwnPropertyDescriptors,
157
+ /** Detached {@linkcode Object.getOwnPropertyNames}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames MDN Reference}. */
158
+ getOwnPropertyNames,
159
+ /** Detached {@linkcode Object.getOwnPropertySymbols}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols MDN Reference}. */
160
+ getOwnPropertySymbols,
161
+ /** Detached {@linkcode Object.getPrototypeOf}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf MDN Reference}. */
162
+ getPrototypeOf,
163
+ /** Detached {@linkcode Object.hasOwnProperty}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty MDN Reference}. */
164
+ hasOwnProperty,
165
+ /** Detached {@linkcode Object.isFrozen}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen MDN Reference}. */
166
+ isFrozen,
167
+ /** Detached {@linkcode Object.keys}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys MDN Reference}. */
168
+ keys,
169
+ /** Detached {@linkcode Object.seal}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/seal MDN Reference}. */
170
+ seal,
171
+ /** Detached {@linkcode Object.setPrototypeOf}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf MDN Reference}. */
172
+ setPrototypeOf, } = Object;
173
+ const {
174
+ /** Detached {@linkcode Array.isArray}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray MDN Reference}. */
175
+ isArray,
176
+ /** Detached {@linkcode Array.from}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from MDN Reference}. */
177
+ from: ArrayFrom, } = Array;
178
+ // For some reason, JSDoc don't get picked up for multiple renamed destructured constants (even
179
+ // though it works fine for one, e.g. isArray), so comments for these are added to the export
180
+ // statement, rather than this declaration.
181
+ const { concat: ArrayConcat, copyWithin: ArrayCopyWithin, every: ArrayEvery, fill: ArrayFill, filter: ArrayFilter, find: ArrayFind, findIndex: ArrayFindIndex, includes: ArrayIncludes, indexOf: ArrayIndexOf, join: ArrayJoin, map: ArrayMap, pop: ArrayPop, push: ArrayPush, reduce: ArrayReduce, reverse: ArrayReverse, shift: ArrayShift, slice: ArraySlice, some: ArraySome, sort: ArraySort, splice: ArraySplice, unshift: ArrayUnshift, forEach, // Weird anomaly!
182
+ } = Array.prototype;
183
+ // No JSDocs here - see comment for Array.prototype
184
+ const { charAt: StringCharAt, charCodeAt: StringCharCodeAt, replace: StringReplace, split: StringSplit, slice: StringSlice, toLowerCase: StringToLowerCase, trim: StringTrim, } = String.prototype;
185
+ /**
186
+ * Determines whether the argument is `null`.
187
+ * @param obj Value to test
188
+ * @returns `true` if the value is `null`.
189
+ */
190
+ function isNull(obj) {
191
+ return obj === null;
192
+ }
193
+ const OtS = {}.toString;
194
+ /**
195
+ * Converts the argument to a string, safely accounting for objects with "null" prototype.
196
+ * Note that `toString(null)` returns `"[object Null]"` rather than `"null"`.
197
+ * @param obj Value to convert to a string.
198
+ * @returns String representation of the value.
199
+ */
200
+ function toString(obj) {
201
+ if (obj?.toString) {
202
+ // Arrays might hold objects with "null" prototype So using
203
+ // Array.prototype.toString directly will cause an error Iterate through
204
+ // all the items and handle individually.
205
+ if (isArray(obj)) {
206
+ // This behavior is slightly different from Array#toString:
207
+ // 1. Array#toString calls `this.join`, rather than Array#join
208
+ // Ex: arr = []; arr.join = () => 1; arr.toString() === 1; toString(arr) === ''
209
+ // 2. Array#toString delegates to Object#toString if `this.join` is not a function
210
+ // Ex: arr = []; arr.join = 'no'; arr.toString() === '[object Array]; toString(arr) = ''
211
+ // 3. Array#toString converts null/undefined to ''
212
+ // Ex: arr = [null, undefined]; arr.toString() === ','; toString(arr) === '[object Null],undefined'
213
+ // 4. Array#toString converts recursive references to arrays to ''
214
+ // Ex: arr = [1]; arr.push(arr, 2); arr.toString() === '1,,2'; toString(arr) throws
215
+ // Ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toString
216
+ return ArrayJoin.call(ArrayMap.call(obj, toString), ',');
217
+ }
218
+ return obj.toString();
219
+ }
220
+ else if (typeof obj === 'object') {
221
+ // This catches null and returns "[object Null]". Weird, but kept for backwards compatibility.
222
+ return OtS.call(obj);
223
+ }
224
+ else {
225
+ return String(obj);
226
+ }
227
+ }
228
+
229
+ /*
230
+ * Copyright (c) 2018, salesforce.com, inc.
231
+ * All rights reserved.
232
+ * SPDX-License-Identifier: MIT
233
+ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
234
+ */
235
+ /**
236
+ * According to the following list, there are 48 aria attributes of which two (ariaDropEffect and
237
+ * ariaGrabbed) are deprecated:
238
+ * https://www.w3.org/TR/wai-aria-1.1/#x6-6-definitions-of-states-and-properties-all-aria-attributes
239
+ *
240
+ * The above list of 46 aria attributes is consistent with the following resources:
241
+ * https://github.com/w3c/aria/pull/708/files#diff-eacf331f0ffc35d4b482f1d15a887d3bR11060
242
+ * https://wicg.github.io/aom/spec/aria-reflection.html
243
+ *
244
+ * NOTE: If you update this list, please update test files that implicitly reference this list!
245
+ * Searching the codebase for `aria-flowto` and `ariaFlowTo` should be good enough to find all usages.
246
+ */
247
+ const AriaPropertyNames = [
248
+ 'ariaActiveDescendant',
249
+ 'ariaAtomic',
250
+ 'ariaAutoComplete',
251
+ 'ariaBusy',
252
+ 'ariaChecked',
253
+ 'ariaColCount',
254
+ 'ariaColIndex',
255
+ 'ariaColIndexText',
256
+ 'ariaColSpan',
257
+ 'ariaControls',
258
+ 'ariaCurrent',
259
+ 'ariaDescribedBy',
260
+ 'ariaDescription',
261
+ 'ariaDetails',
262
+ 'ariaDisabled',
263
+ 'ariaErrorMessage',
264
+ 'ariaExpanded',
265
+ 'ariaFlowTo',
266
+ 'ariaHasPopup',
267
+ 'ariaHidden',
268
+ 'ariaInvalid',
269
+ 'ariaKeyShortcuts',
270
+ 'ariaLabel',
271
+ 'ariaLabelledBy',
272
+ 'ariaLevel',
273
+ 'ariaLive',
274
+ 'ariaModal',
275
+ 'ariaMultiLine',
276
+ 'ariaMultiSelectable',
277
+ 'ariaOrientation',
278
+ 'ariaOwns',
279
+ 'ariaPlaceholder',
280
+ 'ariaPosInSet',
281
+ 'ariaPressed',
282
+ 'ariaReadOnly',
283
+ 'ariaRelevant',
284
+ 'ariaRequired',
285
+ 'ariaRoleDescription',
286
+ 'ariaRowCount',
287
+ 'ariaRowIndex',
288
+ 'ariaRowIndexText',
289
+ 'ariaRowSpan',
290
+ 'ariaSelected',
291
+ 'ariaSetSize',
292
+ 'ariaSort',
293
+ 'ariaValueMax',
294
+ 'ariaValueMin',
295
+ 'ariaValueNow',
296
+ 'ariaValueText',
297
+ 'ariaBrailleLabel',
298
+ 'ariaBrailleRoleDescription',
299
+ 'role',
300
+ ];
301
+ const { AriaAttrNameToPropNameMap, AriaPropNameToAttrNameMap } = /*@__PURE__*/ (() => {
302
+ const AriaAttrNameToPropNameMap = create(null);
303
+ const AriaPropNameToAttrNameMap = create(null);
304
+ // Synthetic creation of all AOM property descriptors for Custom Elements
305
+ forEach.call(AriaPropertyNames, (propName) => {
306
+ const attrName = StringToLowerCase.call(StringReplace.call(propName, /^aria/, () => 'aria-'));
307
+ AriaAttrNameToPropNameMap[attrName] = propName;
308
+ AriaPropNameToAttrNameMap[propName] = attrName;
309
+ });
310
+ return { AriaAttrNameToPropNameMap, AriaPropNameToAttrNameMap };
311
+ })();
312
+
313
+ /*
314
+ * Copyright (c) 2020, salesforce.com, inc.
315
+ * All rights reserved.
316
+ * SPDX-License-Identifier: MIT
317
+ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
318
+ */
319
+ const ESCAPED_CHARS = {
320
+ '"': '"',
321
+ "'": ''',
322
+ '<': '&lt;',
323
+ '>': '&gt;',
324
+ '&': '&amp;',
325
+ };
326
+ /**
327
+ *
328
+ * @param str
329
+ * @param attrMode
330
+ */
331
+ function htmlEscape(str, attrMode = false) {
332
+ const searchValue = attrMode ? /["&]/g : /["'<>&]/g;
333
+ return str.replace(searchValue, (char) => ESCAPED_CHARS[char]);
334
+ }
335
+ /** version: 8.4.0 */
336
+
121
337
  /*
122
338
  * Copyright (c) 2024, Salesforce, Inc.
123
339
  * All rights reserved.
@@ -159,41 +375,70 @@ class MutationTracker {
159
375
  _MutationTracker_enabledSet = new WeakMap(), _MutationTracker_mutationMap = new WeakMap();
160
376
  const mutationTracker = new MutationTracker();
161
377
 
378
+ /*
379
+ * Copyright (c) 2024, Salesforce, Inc.
380
+ * All rights reserved.
381
+ * SPDX-License-Identifier: MIT
382
+ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
383
+ */
384
+ // Eventually include globals that also reflect
385
+ const attrsToProps = AriaAttrNameToPropNameMap;
386
+ function reflectAttrToProp(instance, attrName, attrValue) {
387
+ const reflectedPropName = attrsToProps[attrName];
388
+ // If it is a reflected property and it was not overridden by the instance
389
+ if (reflectedPropName && !hasOwnProperty.call(instance, reflectedPropName)) {
390
+ const currentValue = instance[reflectedPropName];
391
+ if (currentValue !== attrValue) {
392
+ instance[reflectedPropName] = attrValue;
393
+ }
394
+ }
395
+ }
396
+ const descriptors = create(null);
397
+ for (const [attrName, propName] of entries(attrsToProps)) {
398
+ descriptors[propName] = {
399
+ get() {
400
+ return this.getAttribute(attrName);
401
+ },
402
+ set(newValue) {
403
+ const currentValue = this.getAttribute(attrName);
404
+ if (newValue !== currentValue) {
405
+ // TODO [#3284]: According to the spec, IDL nullable type values
406
+ // (null and undefined) should remove the attribute; however, we
407
+ // only do so in the case of null for historical reasons.
408
+ // See also https://github.com/w3c/aria/issues/1858
409
+ if (isNull(newValue)) {
410
+ this.removeAttribute(attrName);
411
+ }
412
+ else {
413
+ this.setAttribute(attrName, toString(newValue));
414
+ }
415
+ }
416
+ },
417
+ configurable: true,
418
+ enumerable: true,
419
+ };
420
+ }
421
+
162
422
  /*
163
423
  * Copyright (c) 2024, salesforce.com, inc.
164
424
  * All rights reserved.
165
425
  * SPDX-License-Identifier: MIT
166
426
  * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
167
427
  */
168
- var _LightningElement_instances, _LightningElement_attrs, _LightningElement_classList, _LightningElement_setAttribute;
428
+ var _LightningElement_attrs, _LightningElement_classList;
169
429
  const SYMBOL__SET_INTERNALS = Symbol('set-internals');
170
430
  class LightningElement {
171
431
  constructor(propsAvailableAtConstruction) {
172
- _LightningElement_instances.add(this);
173
432
  this.isConnected = false;
174
433
  this.className = '';
175
434
  _LightningElement_attrs.set(this, void 0);
176
435
  _LightningElement_classList.set(this, null);
177
- Object.assign(this, propsAvailableAtConstruction);
436
+ assign(this, propsAvailableAtConstruction);
178
437
  }
179
- [(_LightningElement_attrs = new WeakMap(), _LightningElement_classList = new WeakMap(), _LightningElement_instances = new WeakSet(), SYMBOL__SET_INTERNALS)](props, reflectedProps, attrs) {
180
- Object.assign(this, props);
438
+ [(_LightningElement_attrs = new WeakMap(), _LightningElement_classList = new WeakMap(), SYMBOL__SET_INTERNALS)](props, attrs) {
181
439
  __classPrivateFieldSet(this, _LightningElement_attrs, attrs, "f");
182
- // Whenever a reflected prop changes, we'll update the original props object
183
- // that was passed in. That'll be referenced when the attrs are rendered later.
184
- for (const reflectedPropName of reflectedProps) {
185
- Object.defineProperty(this, reflectedPropName, {
186
- get() {
187
- return props[reflectedPropName] ?? null;
188
- },
189
- set(newValue) {
190
- props[reflectedPropName] = newValue;
191
- mutationTracker.add(this, shared.htmlPropertyToAttribute(reflectedPropName));
192
- },
193
- enumerable: true,
194
- });
195
- }
196
- Object.defineProperty(this, 'className', {
440
+ assign(this, props);
441
+ defineProperty(this, 'className', {
197
442
  get() {
198
443
  return props.class ?? '';
199
444
  },
@@ -211,29 +456,29 @@ class LightningElement {
211
456
  return (__classPrivateFieldSet(this, _LightningElement_classList, new ClassList(this), "f"));
212
457
  }
213
458
  setAttribute(attrName, attrValue) {
214
- __classPrivateFieldGet(this, _LightningElement_instances, "m", _LightningElement_setAttribute).call(this, attrName, String(attrValue));
459
+ const normalizedName = StringToLowerCase.call(toString(attrName));
460
+ const normalizedValue = String(attrValue);
461
+ __classPrivateFieldGet(this, _LightningElement_attrs, "f")[normalizedName] = normalizedValue;
462
+ reflectAttrToProp(this, normalizedName, normalizedValue);
463
+ mutationTracker.add(this, normalizedName);
215
464
  }
216
465
  getAttribute(attrName) {
217
- if (this.hasAttribute(attrName)) {
218
- return __classPrivateFieldGet(this, _LightningElement_attrs, "f")[attrName];
466
+ const normalizedName = StringToLowerCase.call(toString(attrName));
467
+ if (hasOwnProperty.call(__classPrivateFieldGet(this, _LightningElement_attrs, "f"), normalizedName)) {
468
+ return __classPrivateFieldGet(this, _LightningElement_attrs, "f")[normalizedName];
219
469
  }
220
470
  return null;
221
471
  }
222
472
  hasAttribute(attrName) {
223
- return typeof attrName === 'string' && typeof __classPrivateFieldGet(this, _LightningElement_attrs, "f")[attrName] === 'string';
473
+ const normalizedName = StringToLowerCase.call(toString(attrName));
474
+ return hasOwnProperty.call(__classPrivateFieldGet(this, _LightningElement_attrs, "f"), normalizedName);
224
475
  }
225
476
  removeAttribute(attrName) {
226
- if (this.hasAttribute(attrName)) {
227
- // Reflected attributes use accessor methods to update their
228
- // corresponding properties so we can't simply `delete`. Instead,
229
- // we use `null` when we want to remove.
230
- __classPrivateFieldGet(this, _LightningElement_instances, "m", _LightningElement_setAttribute).call(this, attrName, null);
231
- }
232
- else {
233
- // This interprets the removal of a non-existing attribute as an
234
- // attribute mutation. We may want to revisit this.
235
- mutationTracker.add(this, attrName);
236
- }
477
+ const normalizedName = StringToLowerCase.call(toString(attrName));
478
+ delete __classPrivateFieldGet(this, _LightningElement_attrs, "f")[normalizedName];
479
+ reflectAttrToProp(this, normalizedName, null);
480
+ // Track mutations for removal of non-existing attributes
481
+ mutationTracker.add(this, normalizedName);
237
482
  }
238
483
  addEventListener(_type, _listener, _options) {
239
484
  // noop
@@ -309,10 +554,7 @@ class LightningElement {
309
554
  throw new Error('Method "setAttributeNS" not implemented.');
310
555
  }
311
556
  }
312
- _LightningElement_setAttribute = function _LightningElement_setAttribute(attrName, attrValue) {
313
- __classPrivateFieldGet(this, _LightningElement_attrs, "f")[attrName] = attrValue;
314
- mutationTracker.add(this, attrName);
315
- };
557
+ defineProperties(LightningElement.prototype, descriptors);
316
558
 
317
559
  /*
318
560
  * Copyright (c) 2024, salesforce.com, inc.
@@ -336,15 +578,49 @@ function* renderAttrs(instance, attrs) {
336
578
  }
337
579
  yield mutationTracker.renderMutatedAttrs(instance);
338
580
  }
581
+ function renderAttrsNoYield(emit, instance, attrs) {
582
+ if (!attrs) {
583
+ return;
584
+ }
585
+ for (const attrName of Object.getOwnPropertyNames(attrs)) {
586
+ const attrVal = attrs[attrName];
587
+ if (typeof attrVal === 'string') {
588
+ emit(attrVal === '' ? ` ${attrName}` : ` ${attrName}="${escapeAttrVal(attrVal)}"`);
589
+ }
590
+ else if (attrVal === null) {
591
+ emit('');
592
+ }
593
+ }
594
+ emit(mutationTracker.renderMutatedAttrs(instance));
595
+ }
339
596
  function* fallbackTmpl(_props, _attrs, _slotted, Cmp, _instance) {
340
597
  if (Cmp.renderMode !== 'light') {
341
598
  yield '<template shadowrootmode="open"></template>';
342
599
  }
343
600
  }
344
- async function serverSideRenderComponent(tagName, compiledGenerateMarkup, props) {
601
+ function fallbackTmplNoYield(emit, _props, _attrs, _slotted, Cmp, _instance) {
602
+ if (Cmp.renderMode !== 'light') {
603
+ emit('<template shadowrootmode="open"></template>');
604
+ }
605
+ }
606
+ async function serverSideRenderComponent(tagName, compiledGenerateMarkup, props, mode = 'asyncYield') {
345
607
  let markup = '';
346
- for await (const segment of compiledGenerateMarkup(tagName, props, null, null)) {
608
+ const emit = (segment) => {
347
609
  markup += segment;
610
+ };
611
+ if (mode === 'asyncYield') {
612
+ for await (const segment of compiledGenerateMarkup(tagName, props, null, null)) {
613
+ markup += segment;
614
+ }
615
+ }
616
+ else if (mode === 'async') {
617
+ await compiledGenerateMarkup(emit, tagName, props, null, null);
618
+ }
619
+ else if (mode === 'sync') {
620
+ compiledGenerateMarkup(emit, tagName, props, null, null);
621
+ }
622
+ else {
623
+ throw new Error(`Invalid mode: ${mode}`);
348
624
  }
349
625
  return markup;
350
626
  }
@@ -662,9 +938,11 @@ exports.api = api;
662
938
  exports.createContextProvider = createContextProvider;
663
939
  exports.createElement = createElement;
664
940
  exports.fallbackTmpl = fallbackTmpl;
941
+ exports.fallbackTmplNoYield = fallbackTmplNoYield;
665
942
  exports.freezeTemplate = freezeTemplate;
666
943
  exports.getComponentDef = getComponentDef;
667
944
  exports.hot = hot;
945
+ exports.htmlEscape = htmlEscape;
668
946
  exports.isComponentConstructor = isComponentConstructor;
669
947
  exports.mutationTracker = mutationTracker;
670
948
  exports.parseFragment = parseFragment;
@@ -674,6 +952,7 @@ exports.registerComponent = registerComponent;
674
952
  exports.registerDecorators = registerDecorators;
675
953
  exports.registerTemplate = registerTemplate;
676
954
  exports.renderAttrs = renderAttrs;
955
+ exports.renderAttrsNoYield = renderAttrsNoYield;
677
956
  exports.renderComponent = serverSideRenderComponent;
678
957
  exports.renderer = renderer;
679
958
  exports.sanitizeAttribute = sanitizeAttribute;
@@ -689,5 +968,5 @@ exports.track = track;
689
968
  exports.unwrap = unwrap;
690
969
  exports.validateStyleTextContents = validateStyleTextContents;
691
970
  exports.wire = wire;
692
- /** version: 8.3.0 */
971
+ /** version: 8.4.0 */
693
972
  //# sourceMappingURL=index.cjs.js.map