Latest Threat Research:SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains.Details
Socket
Book a DemoInstallSign in
Socket

@lwc/shared

Package Overview
Dependencies
Maintainers
14
Versions
671
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@lwc/shared - npm Package Compare versions

Comparing version
8.28.2
to
9.0.0
+8
-3
dist/index.js

@@ -747,3 +747,8 @@ /**

*/
const DISALLOWED_PROP_SET = /*@__PURE__@*/ new Set(['is', 'class', 'slot', 'style']);
const DISALLOWED_PROP_SET = /*@__PURE__@*/ new Set([
'is',
'class',
'slot',
'style',
]);

@@ -780,3 +785,3 @@ /*

// Increment whenever the LWC template compiler changes
const LWC_VERSION = "8.28.2";
const LWC_VERSION = "9.0.0";
const LWC_VERSION_COMMENT = `LWC compiler v${LWC_VERSION}`;

@@ -1002,3 +1007,3 @@ const LWC_VERSION_COMMENT_REGEX = /\/\*LWC compiler v([\d.]+)\*\/\s*}/;

export { AMBIGUOUS_PROP_SET, AriaAttrNameToPropNameMap, AriaPropNameToAttrNameMap, ArrayConcat, ArrayCopyWithin, ArrayEvery, ArrayFill, ArrayFilter, ArrayFind, ArrayFindIndex, ArrayFrom, ArrayIncludes, ArrayIndexOf, ArrayJoin, ArrayMap, ArrayPop, ArrayPush, ArrayReduce, ArrayReverse, ArrayShift, ArraySlice, ArraySome, ArraySort, ArraySplice, ArrayUnshift, ContextEventName, DEFAULT_SSR_MODE, DISALLOWED_PROP_SET, HIGHEST_API_VERSION, HTML_NAMESPACE, ID_REFERENCING_ATTRIBUTES_SET, IMPORTANT_FLAG, KEY__LEGACY_SHADOW_TOKEN, KEY__LEGACY_SHADOW_TOKEN_PRIVATE, KEY__NATIVE_GET_ELEMENT_BY_ID, KEY__NATIVE_ONLY_CSS, KEY__NATIVE_QUERY_SELECTOR_ALL, KEY__SCOPED_CSS, KEY__SHADOW_RESOLVER, KEY__SHADOW_RESOLVER_PRIVATE, KEY__SHADOW_STATIC, KEY__SHADOW_STATIC_PRIVATE, KEY__SHADOW_TOKEN, KEY__SHADOW_TOKEN_PRIVATE, KEY__SYNTHETIC_MODE, LOWEST_API_VERSION, LWC_VERSION, LWC_VERSION_COMMENT, LWC_VERSION_COMMENT_REGEX, MATHML_NAMESPACE, REFLECTIVE_GLOBAL_PROPERTY_SET, SPECIAL_PROPERTY_ATTRIBUTE_MAPPING, SVG_NAMESPACE, StringCharAt, StringCharCodeAt, StringFromCharCode, StringReplace, StringSlice, StringSplit, StringToLowerCase, StringTrim, XLINK_NAMESPACE, XML_NAMESPACE, addTrustedContext, addTrustedSignal, arrayEvery, assert, assign, create, defineProperties, defineProperty, entries, flattenStylesheets, forEach, freeze, fromEntries, generateCustomElementTagName, getAPIVersionFromNumber, getContextKeys, getOwnPropertyDescriptor, getOwnPropertyDescriptors, getOwnPropertyNames, getOwnPropertySymbols, getPropertyDescriptor, getPrototypeOf, hasOwnProperty, htmlEscape, htmlPropertyToAttribute, isAPIFeatureEnabled, isAriaAttribute, isArray, isBoolean, isBooleanAttribute, isFalse, isFrozen, isFunction, isGlobalHtmlAttribute, isNull, isNumber, isObject, isString, isTrue, isTrustedContext, isTrustedSignal, isUndefined, isVoidElement, kebabCaseToCamelCase, keys, legacyIsTrustedSignal, minApiVersion, noop, normalizeClass, normalizeStyleAttributeValue, normalizeTabIndex, parseStyleText, sanitizeHtmlContent, seal, setContextKeys, setHooks, setPrototypeOf, setTrustedContextSet, setTrustedSignalSet, toString };
/** version: 8.28.2 */
/** version: 9.0.0 */
//# sourceMappingURL=index.js.map

@@ -7,3 +7,3 @@ {

"name": "@lwc/shared",
"version": "8.28.2",
"version": "9.0.0",
"description": "Utilities and methods that are shared across packages",

@@ -23,9 +23,13 @@ "keywords": [

"license": "MIT",
"type": "module",
"publishConfig": {
"access": "public"
},
"engines": {
"node": ">=16.6.0"
},
"volta": {
"extends": "../../../package.json"
},
"main": "dist/index.cjs.js",
"main": "dist/index.js",
"module": "dist/index.js",

@@ -32,0 +36,0 @@ "types": "dist/index.d.ts",

/**
* Copyright (c) 2026 Salesforce, Inc.
*/
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
/*
* Copyright (c) 2018, salesforce.com, inc.
* All rights reserved.
* SPDX-License-Identifier: MIT
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
*/
/**
*
* @param value
* @param msg
*/
function invariant(value, msg) {
if (!value) {
throw new Error(`Invariant Violation: ${msg}`);
}
}
/**
*
* @param value
* @param msg
*/
function isTrue$1(value, msg) {
if (!value) {
throw new Error(`Assert Violation: ${msg}`);
}
}
/**
*
* @param value
* @param msg
*/
function isFalse$1(value, msg) {
if (value) {
throw new Error(`Assert Violation: ${msg}`);
}
}
/**
*
* @param msg
*/
function fail(msg) {
throw new Error(msg);
}
var assert = /*#__PURE__*/Object.freeze({
__proto__: null,
fail: fail,
invariant: invariant,
isFalse: isFalse$1,
isTrue: isTrue$1
});
/*
* Copyright (c) 2024, Salesforce, Inc.
* All rights reserved.
* SPDX-License-Identifier: MIT
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
*/
const {
/** Detached {@linkcode Object.assign}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign MDN Reference}. */
assign,
/** Detached {@linkcode Object.create}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create MDN Reference}. */
create,
/** Detached {@linkcode Object.defineProperties}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties MDN Reference}. */
defineProperties,
/** Detached {@linkcode Object.defineProperty}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty MDN Reference}. */
defineProperty,
/** Detached {@linkcode Object.entries}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries MDN Reference}. */
entries,
/** Detached {@linkcode Object.freeze}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze MDN Reference}. */
freeze,
/** Detached {@linkcode Object.fromEntries}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries MDN Reference}. */
fromEntries,
/** Detached {@linkcode Object.getOwnPropertyDescriptor}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor MDN Reference}. */
getOwnPropertyDescriptor,
/** Detached {@linkcode Object.getOwnPropertyDescriptors}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors MDN Reference}. */
getOwnPropertyDescriptors,
/** Detached {@linkcode Object.getOwnPropertyNames}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames MDN Reference}. */
getOwnPropertyNames,
/** Detached {@linkcode Object.getOwnPropertySymbols}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols MDN Reference}. */
getOwnPropertySymbols,
/** Detached {@linkcode Object.getPrototypeOf}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf MDN Reference}. */
getPrototypeOf,
/** Detached {@linkcode Object.hasOwnProperty}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty MDN Reference}. */
hasOwnProperty,
/** Detached {@linkcode Object.isFrozen}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen MDN Reference}. */
isFrozen,
/** Detached {@linkcode Object.keys}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys MDN Reference}. */
keys,
/** Detached {@linkcode Object.seal}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/seal MDN Reference}. */
seal,
/** Detached {@linkcode Object.setPrototypeOf}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf MDN Reference}. */
setPrototypeOf, } = Object;
const {
/** Detached {@linkcode Array.isArray}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray MDN Reference}. */
isArray,
/** Detached {@linkcode Array.from}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from MDN Reference}. */
from: ArrayFrom, } = Array;
// For some reason, JSDoc don't get picked up for multiple renamed destructured constants (even
// though it works fine for one, e.g. isArray), so comments for these are added to the export
// statement, rather than this declaration.
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!
} = Array.prototype;
// The type of the return value of Array.prototype.every is `this is T[]`. However, once this
// Array method is pulled out of the prototype, the function is now referencing `this` where
// `this` is meaningless, resulting in a TypeScript compilation error.
//
// Exposing this helper function is the closest we can get to preserving the usage patterns
// of Array.prototype methods used elsewhere in the codebase.
/**
* Wrapper for {@linkcode Array.prototype.every} that correctly preserves the type predicate in the
* return value; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every MDN Reference}.
* @param arr Array to test.
* @param predicate A function to execute for each element of the array.
* @returns Whether all elements in the array pass the test provided by the predicate.
*/
function arrayEvery(arr, predicate) {
return ArrayEvery.call(arr, predicate);
}
/** Detached {@linkcode String.fromCharCode}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode MDN Reference}. */
const { fromCharCode: StringFromCharCode } = String;
// No JSDocs here - see comment for Array.prototype
const { charAt: StringCharAt, charCodeAt: StringCharCodeAt, replace: StringReplace, split: StringSplit, slice: StringSlice, toLowerCase: StringToLowerCase, trim: StringTrim, } = String.prototype;
/**
* Determines whether the argument is `undefined`.
* @param obj Value to test
* @returns `true` if the value is `undefined`.
*/
function isUndefined(obj) {
return obj === undefined;
}
/**
* Determines whether the argument is `null`.
* @param obj Value to test
* @returns `true` if the value is `null`.
*/
function isNull(obj) {
return obj === null;
}
/**
* Determines whether the argument is `true`.
* @param obj Value to test
* @returns `true` if the value is `true`.
*/
function isTrue(obj) {
return obj === true;
}
/**
* Determines whether the argument is `false`.
* @param obj Value to test
* @returns `true` if the value is `false`.
*/
function isFalse(obj) {
return obj === false;
}
/**
* Determines whether the argument is a boolean.
* @param obj Value to test
* @returns `true` if the value is a boolean.
*/
function isBoolean(obj) {
return typeof obj === 'boolean';
}
/**
* Determines whether the argument is a function.
* @param obj Value to test
* @returns `true` if the value is a function.
*/
// Replacing `Function` with a narrower type that works for all our use cases is tricky...
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
function isFunction(obj) {
return typeof obj === 'function';
}
/**
* Determines whether the argument is an object or null.
* @param obj Value to test
* @returns `true` if the value is an object or null.
*/
function isObject(obj) {
return typeof obj === 'object';
}
/**
* Determines whether the argument is a string.
* @param obj Value to test
* @returns `true` if the value is a string.
*/
function isString(obj) {
return typeof obj === 'string';
}
/**
* Determines whether the argument is a number.
* @param obj Value to test
* @returns `true` if the value is a number.
*/
function isNumber(obj) {
return typeof obj === 'number';
}
/** Does nothing! 🚀 */
function noop() {
/* Do nothing */
}
const OtS = {}.toString;
/**
* Converts the argument to a string, safely accounting for objects with "null" prototype.
* Note that `toString(null)` returns `"[object Null]"` rather than `"null"`.
* @param obj Value to convert to a string.
* @returns String representation of the value.
*/
function toString(obj) {
if (obj?.toString) {
// Arrays might hold objects with "null" prototype So using
// Array.prototype.toString directly will cause an error Iterate through
// all the items and handle individually.
if (isArray(obj)) {
// This behavior is slightly different from Array#toString:
// 1. Array#toString calls `this.join`, rather than Array#join
// Ex: arr = []; arr.join = () => 1; arr.toString() === 1; toString(arr) === ''
// 2. Array#toString delegates to Object#toString if `this.join` is not a function
// Ex: arr = []; arr.join = 'no'; arr.toString() === '[object Array]; toString(arr) = ''
// 3. Array#toString converts null/undefined to ''
// Ex: arr = [null, undefined]; arr.toString() === ','; toString(arr) === '[object Null],undefined'
// 4. Array#toString converts recursive references to arrays to ''
// Ex: arr = [1]; arr.push(arr, 2); arr.toString() === '1,,2'; toString(arr) throws
// Ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toString
return ArrayJoin.call(ArrayMap.call(obj, toString), ',');
}
return obj.toString();
}
else if (typeof obj === 'object') {
// This catches null and returns "[object Null]". Weird, but kept for backwards compatibility.
return OtS.call(obj);
}
else {
return String(obj);
}
}
/**
* Gets the property descriptor for the given object and property key. Similar to
* {@linkcode Object.getOwnPropertyDescriptor}, but looks up the prototype chain.
* @param o Value to get the property descriptor for
* @param p Property key to get the descriptor for
* @returns The property descriptor for the given object and property key.
*/
function getPropertyDescriptor(o, p) {
do {
const d = getOwnPropertyDescriptor(o, p);
if (!isUndefined(d)) {
return d;
}
o = getPrototypeOf(o);
} while (o !== null);
}
/*
* Copyright (c) 2023, salesforce.com, inc.
* All rights reserved.
* SPDX-License-Identifier: MIT
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
*/
// These must be updated when the enum is updated.
// It's a bit annoying to do have to do this manually, but this makes the file tree-shakeable,
// passing the `verify-treeshakeable.js` test.
const allVersions = [
58 /* APIVersion.V58_244_SUMMER_23 */,
59 /* APIVersion.V59_246_WINTER_24 */,
60 /* APIVersion.V60_248_SPRING_24 */,
61 /* APIVersion.V61_250_SUMMER_24 */,
62 /* APIVersion.V62_252_WINTER_25 */,
63 /* APIVersion.V63_254_SPRING_25 */,
64 /* APIVersion.V64_256_SUMMER_25 */,
65 /* APIVersion.V65_258_WINTER_26 */,
66 /* APIVersion.V66_260_SPRING_26 */,
];
const allVersionsSet = /*@__PURE__@*/ new Set(allVersions);
const LOWEST_API_VERSION = allVersions[0];
const HIGHEST_API_VERSION = allVersions[allVersions.length - 1];
/**
*
* @param version
*/
function getAPIVersionFromNumber(version) {
if (!isNumber(version)) {
// if version is unspecified, default to latest
return HIGHEST_API_VERSION;
}
if (allVersionsSet.has(version)) {
return version;
}
if (version < LOWEST_API_VERSION) {
return LOWEST_API_VERSION;
}
// If it's a number, and it's within the bounds of our known versions, then we should find the
// highest version lower than the requested number.
// For instance, if we know about versions 1, 2, 5, and 6, and the user requests 3, then we should return 2.
for (let i = 1; i < allVersions.length; i++) {
if (allVersions[i] > version) {
return allVersions[i - 1];
}
}
// version > HIGHEST_API_VERSION, so fall back to highest
return HIGHEST_API_VERSION;
}
/**
* @param apiVersionFeature
*/
function minApiVersion(apiVersionFeature) {
switch (apiVersionFeature) {
case 0 /* APIFeature.LOWERCASE_SCOPE_TOKENS */:
case 1 /* APIFeature.TREAT_ALL_PARSE5_ERRORS_AS_ERRORS */:
return 59 /* APIVersion.V59_246_WINTER_24 */;
case 3 /* APIFeature.DISABLE_OBJECT_REST_SPREAD_TRANSFORMATION */:
case 4 /* APIFeature.SKIP_UNNECESSARY_REGISTER_DECORATORS */:
case 5 /* APIFeature.USE_COMMENTS_FOR_FRAGMENT_BOOKENDS */:
case 2 /* APIFeature.USE_FRAGMENTS_FOR_LIGHT_DOM_SLOTS */:
return 60 /* APIVersion.V60_248_SPRING_24 */;
case 7 /* APIFeature.ENABLE_ELEMENT_INTERNALS_AND_FACE */:
case 6 /* APIFeature.USE_LIGHT_DOM_SLOT_FORWARDING */:
return 61 /* APIVersion.V61_250_SUMMER_24 */;
case 8 /* APIFeature.ENABLE_THIS_DOT_HOST_ELEMENT */:
case 9 /* APIFeature.ENABLE_THIS_DOT_STYLE */:
case 10 /* APIFeature.TEMPLATE_CLASS_NAME_OBJECT_BINDING */:
return 62 /* APIVersion.V62_252_WINTER_25 */;
case 11 /* APIFeature.ENABLE_COMPLEX_TEMPLATE_EXPRESSIONS */:
return 66 /* APIVersion.V66_260_SPRING_26 */;
}
}
/**
*
* @param apiVersionFeature
* @param apiVersion
*/
function isAPIFeatureEnabled(apiVersionFeature, apiVersion) {
return apiVersion >= minApiVersion(apiVersionFeature);
}
/*
* Copyright (c) 2018, salesforce.com, inc.
* All rights reserved.
* SPDX-License-Identifier: MIT
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
*/
/**
* According to the following list, there are 48 aria attributes of which two (ariaDropEffect and
* ariaGrabbed) are deprecated:
* https://www.w3.org/TR/wai-aria-1.1/#x6-6-definitions-of-states-and-properties-all-aria-attributes
*
* The above list of 46 aria attributes is consistent with the following resources:
* https://github.com/w3c/aria/pull/708/files#diff-eacf331f0ffc35d4b482f1d15a887d3bR11060
* https://wicg.github.io/aom/spec/aria-reflection.html
*
* NOTE: If you update this list, please update test files that implicitly reference this list!
* Searching the codebase for `aria-flowto` and `ariaFlowTo` should be good enough to find all usages.
*/
const AriaPropertyNames = [
'ariaActiveDescendant',
'ariaAtomic',
'ariaAutoComplete',
'ariaBusy',
'ariaChecked',
'ariaColCount',
'ariaColIndex',
'ariaColIndexText',
'ariaColSpan',
'ariaControls',
'ariaCurrent',
'ariaDescribedBy',
'ariaDescription',
'ariaDetails',
'ariaDisabled',
'ariaErrorMessage',
'ariaExpanded',
'ariaFlowTo',
'ariaHasPopup',
'ariaHidden',
'ariaInvalid',
'ariaKeyShortcuts',
'ariaLabel',
'ariaLabelledBy',
'ariaLevel',
'ariaLive',
'ariaModal',
'ariaMultiLine',
'ariaMultiSelectable',
'ariaOrientation',
'ariaOwns',
'ariaPlaceholder',
'ariaPosInSet',
'ariaPressed',
'ariaReadOnly',
'ariaRelevant',
'ariaRequired',
'ariaRoleDescription',
'ariaRowCount',
'ariaRowIndex',
'ariaRowIndexText',
'ariaRowSpan',
'ariaSelected',
'ariaSetSize',
'ariaSort',
'ariaValueMax',
'ariaValueMin',
'ariaValueNow',
'ariaValueText',
'ariaBrailleLabel',
'ariaBrailleRoleDescription',
'role',
];
const { AriaAttrNameToPropNameMap, AriaPropNameToAttrNameMap } = /*@__PURE__*/ (() => {
const AriaAttrNameToPropNameMap = create(null);
const AriaPropNameToAttrNameMap = create(null);
// Synthetic creation of all AOM property descriptors for Custom Elements
forEach.call(AriaPropertyNames, (propName) => {
const attrName = StringToLowerCase.call(StringReplace.call(propName, /^aria/, () => 'aria-'));
// These type assertions are because the map types are a 1:1 mapping of ariaX to aria-x.
// TypeScript knows we have one of ariaX | ariaY and one of aria-x | aria-y, and tries to
// prevent us from doing ariaX: aria-y, but we that it's safe.
AriaAttrNameToPropNameMap[attrName] = propName;
AriaPropNameToAttrNameMap[propName] = attrName;
});
return { AriaAttrNameToPropNameMap, AriaPropNameToAttrNameMap };
})();
/**
*
* @param attrName
*/
function isAriaAttribute(attrName) {
return attrName in AriaAttrNameToPropNameMap;
}
// These attributes take either an ID or a list of IDs as values.
// This includes aria-* attributes as well as the special non-ARIA "for" attribute
const ID_REFERENCING_ATTRIBUTES_SET = /*@__PURE__*/ new Set([
'aria-activedescendant',
'aria-controls',
'aria-describedby',
'aria-details',
'aria-errormessage',
'aria-flowto',
'aria-labelledby',
'aria-owns',
'for',
'popovertarget',
]);
/*
* Copyright (c) 2024, salesforce.com, inc.
* All rights reserved.
* SPDX-License-Identifier: MIT
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
*/
const ContextEventName = 'lightning:context-request';
let trustedContext;
let contextKeys;
function setContextKeys(config) {
isFalse$1(contextKeys, '`setContextKeys` cannot be called more than once');
contextKeys = config;
}
function getContextKeys() {
return contextKeys;
}
function setTrustedContextSet(context) {
isFalse$1(trustedContext, 'Trusted Context Set is already set!');
trustedContext = context;
}
function addTrustedContext(contextParticipant) {
// This should be a no-op when the trustedSignals set isn't set by runtime
trustedContext?.add(contextParticipant);
}
function isTrustedContext(target) {
if (!trustedContext) {
// The runtime didn't set a trustedContext set
// this check should only be performed for runtimes that care about filtering context participants to track
return true;
}
return trustedContext.has(target);
}
/*
* Copyright (c) 2023, Salesforce.com, inc.
* All rights reserved.
* SPDX-License-Identifier: MIT
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
*/
const KEY__SHADOW_RESOLVER = '$shadowResolver$';
const KEY__SHADOW_RESOLVER_PRIVATE = '$$ShadowResolverKey$$';
const KEY__SHADOW_STATIC = '$shadowStaticNode$';
const KEY__SHADOW_STATIC_PRIVATE = '$shadowStaticNodeKey$';
const KEY__SHADOW_TOKEN = '$shadowToken$';
const KEY__SHADOW_TOKEN_PRIVATE = '$$ShadowTokenKey$$';
// TODO [#3733]: remove support for legacy scope tokens
const KEY__LEGACY_SHADOW_TOKEN = '$legacyShadowToken$';
const KEY__LEGACY_SHADOW_TOKEN_PRIVATE = '$$LegacyShadowTokenKey$$';
const KEY__SYNTHETIC_MODE = '$$lwc-synthetic-mode';
const KEY__SCOPED_CSS = '$scoped$';
const KEY__NATIVE_ONLY_CSS = '$nativeOnly$';
const KEY__NATIVE_GET_ELEMENT_BY_ID = '$nativeGetElementById$';
const KEY__NATIVE_QUERY_SELECTOR_ALL = '$nativeQuerySelectorAll$';
/*
* Copyright (c) 2022, salesforce.com, inc.
* All rights reserved.
* SPDX-License-Identifier: MIT
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
*/
const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';
const XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace';
const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';
const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';
const XLINK_NAMESPACE = 'http://www.w3.org/1999/xlink';
/*
* Copyright (c) 2020, salesforce.com, inc.
* All rights reserved.
* SPDX-License-Identifier: MIT
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
*/
// Void elements are elements that self-close even without an explicit solidus (slash),
// e.g. `</tagName>` or `<tagName />`. For instance, `<meta>` closes on its own; no need for a slash.
// These only come from HTML; there are no void elements in the SVG or MathML namespaces.
// See: https://html.spec.whatwg.org/multipage/syntax.html#syntax-tags
const VOID_ELEMENTS = [
'area',
'base',
'br',
'col',
'embed',
'hr',
'img',
'input',
'link',
'meta',
'source',
'track',
'wbr',
];
// These elements have been deprecated but preserving their usage for backwards compatibility
// until we can officially deprecate them from LWC.
// See: https://html.spec.whatwg.org/multipage/obsolete.html#obsolete-but-conforming-features
const DEPRECATED_VOID_ELEMENTS = ['param', 'keygen', 'menuitem'];
const VOID_ELEMENTS_SET = /*@__PURE__*/ new Set([...VOID_ELEMENTS, ...DEPRECATED_VOID_ELEMENTS]);
/**
*
* @param name
* @param namespace
*/
function isVoidElement(name, namespace) {
return namespace === HTML_NAMESPACE && VOID_ELEMENTS_SET.has(name.toLowerCase());
}
/*
* Copyright (c) 2020, salesforce.com, inc.
* All rights reserved.
* SPDX-License-Identifier: MIT
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
*/
const CAMEL_REGEX = /-([a-z])/g;
/**
* Maps boolean attribute name to supported tags: 'boolean attr name' => Set of allowed tag names
* that supports them.
*/
const BOOLEAN_ATTRIBUTES = /*@__PURE__@*/ new Map([
['autofocus', /*@__PURE__@*/ new Set(['button', 'input', 'keygen', 'select', 'textarea'])],
['autoplay', /*@__PURE__@*/ new Set(['audio', 'video'])],
['checked', /*@__PURE__@*/ new Set(['command', 'input'])],
[
'disabled',
/*@__PURE__@*/ new Set([
'button',
'command',
'fieldset',
'input',
'keygen',
'optgroup',
'select',
'textarea',
]),
],
['formnovalidate', /*@__PURE__@*/ new Set(['button'])], // button[type=submit]
['hidden', /*@__PURE__@*/ new Set()], // Global attribute
['loop', /*@__PURE__@*/ new Set(['audio', 'bgsound', 'marquee', 'video'])],
['multiple', /*@__PURE__@*/ new Set(['input', 'select'])],
['muted', /*@__PURE__@*/ new Set(['audio', 'video'])],
['novalidate', /*@__PURE__@*/ new Set(['form'])],
['open', /*@__PURE__@*/ new Set(['details'])],
['readonly', /*@__PURE__@*/ new Set(['input', 'textarea'])],
['readonly', /*@__PURE__@*/ new Set(['input', 'textarea'])],
['required', /*@__PURE__@*/ new Set(['input', 'select', 'textarea'])],
['reversed', /*@__PURE__@*/ new Set(['ol'])],
['selected', /*@__PURE__@*/ new Set(['option'])],
]);
/**
*
* @param attrName
* @param tagName
*/
function isBooleanAttribute(attrName, tagName) {
const allowedTagNames = BOOLEAN_ATTRIBUTES.get(attrName);
return (allowedTagNames !== undefined &&
(allowedTagNames.size === 0 || allowedTagNames.has(tagName)));
}
// This list is based on https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes
const GLOBAL_ATTRIBUTE = /*@__PURE__*/ new Set([
'accesskey',
'autocapitalize',
'autofocus',
'class',
'contenteditable',
'dir',
'draggable',
'enterkeyhint',
'exportparts',
'hidden',
'id',
'inputmode',
'is',
'itemid',
'itemprop',
'itemref',
'itemscope',
'itemtype',
'lang',
'nonce',
'part',
'popover',
'slot',
'spellcheck',
'style',
'tabindex',
'title',
'translate',
]);
/**
*
* @param attrName
*/
function isGlobalHtmlAttribute(attrName) {
return GLOBAL_ATTRIBUTE.has(attrName);
}
// These are HTML standard prop/attribute IDL mappings, but are not predictable based on camel/kebab-case conversion
const SPECIAL_PROPERTY_ATTRIBUTE_MAPPING = /*@__PURE__@*/ new Map([
['accessKey', 'accesskey'],
['readOnly', 'readonly'],
['tabIndex', 'tabindex'],
['bgColor', 'bgcolor'],
['colSpan', 'colspan'],
['rowSpan', 'rowspan'],
['contentEditable', 'contenteditable'],
['crossOrigin', 'crossorigin'],
['dateTime', 'datetime'],
['formAction', 'formaction'],
['isMap', 'ismap'],
['maxLength', 'maxlength'],
['minLength', 'minlength'],
['noValidate', 'novalidate'],
['useMap', 'usemap'],
['htmlFor', 'for'],
]);
// Global properties that this framework currently reflects. For CSR, the native
// descriptors for these properties are added from HTMLElement.prototype to
// LightningElement.prototype. For SSR, in order to match CSR behavior, this
// list is used to determine which attributes to reflect.
const REFLECTIVE_GLOBAL_PROPERTY_SET = /*@__PURE__@*/ new Set([
'accessKey',
'dir',
'draggable',
'hidden',
'id',
'lang',
'spellcheck',
'tabIndex',
'title',
]);
/**
* Map associating previously transformed HTML property into HTML attribute.
*/
const CACHED_PROPERTY_ATTRIBUTE_MAPPING = /*@__PURE__@*/ new Map();
/**
*
* @param propName
*/
function htmlPropertyToAttribute(propName) {
const ariaAttributeName = AriaPropNameToAttrNameMap[propName];
if (!isUndefined(ariaAttributeName)) {
return ariaAttributeName;
}
const specialAttributeName = SPECIAL_PROPERTY_ATTRIBUTE_MAPPING.get(propName);
if (!isUndefined(specialAttributeName)) {
return specialAttributeName;
}
const cachedAttributeName = CACHED_PROPERTY_ATTRIBUTE_MAPPING.get(propName);
if (!isUndefined(cachedAttributeName)) {
return cachedAttributeName;
}
let attributeName = '';
for (let i = 0, len = propName.length; i < len; i++) {
const code = StringCharCodeAt.call(propName, i);
if (code >= 65 && // "A"
code <= 90 // "Z"
) {
attributeName += '-' + StringFromCharCode(code + 32);
}
else {
attributeName += StringFromCharCode(code);
}
}
CACHED_PROPERTY_ATTRIBUTE_MAPPING.set(propName, attributeName);
return attributeName;
}
/**
* Map associating previously transformed kabab-case attributes into camel-case props.
*/
const CACHED_KEBAB_CAMEL_MAPPING = /*@__PURE__@*/ new Map();
/**
*
* @param attrName
*/
function kebabCaseToCamelCase(attrName) {
let result = CACHED_KEBAB_CAMEL_MAPPING.get(attrName);
if (isUndefined(result)) {
result = StringReplace.call(attrName, CAMEL_REGEX, (g) => g[1].toUpperCase());
CACHED_KEBAB_CAMEL_MAPPING.set(attrName, result);
}
return result;
}
/**
* This set is for attributes that have a camel cased property name
* For example, div.tabIndex.
* We do not want users to define `@api` properties with these names
* Because the template will never call them. It'll always call the camel
* cased version.
*/
const AMBIGUOUS_PROP_SET = /*@__PURE__@*/ new Map([
['bgcolor', 'bgColor'],
['accesskey', 'accessKey'],
['contenteditable', 'contentEditable'],
['tabindex', 'tabIndex'],
['maxlength', 'maxLength'],
['maxvalue', 'maxValue'],
]);
/**
* This set is for attributes that can never be defined
* by users on their components.
* We throw for these.
*/
const DISALLOWED_PROP_SET = /*@__PURE__@*/ new Set(['is', 'class', 'slot', 'style']);
/*
* Copyright (c) 2020, salesforce.com, inc.
* All rights reserved.
* SPDX-License-Identifier: MIT
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
*/
const ESCAPED_CHARS = {
'"': '&quot;',
"'": '&#x27;',
'<': '&lt;',
'>': '&gt;',
'&': '&amp;',
};
/**
*
* @param str
* @param attrMode
*/
function htmlEscape(str, attrMode = false) {
const searchValue = attrMode ? /["&]/g : /["'<>&]/g;
return str.replace(searchValue, (char) => ESCAPED_CHARS[char]);
}
/*
* Copyright (c) 2018, salesforce.com, inc.
* All rights reserved.
* SPDX-License-Identifier: MIT
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
*/
// Increment whenever the LWC template compiler changes
const LWC_VERSION = "8.28.2";
const LWC_VERSION_COMMENT = `LWC compiler v${LWC_VERSION}`;
const LWC_VERSION_COMMENT_REGEX = /\/\*LWC compiler v([\d.]+)\*\/\s*}/;
/*
* Copyright (c) 2020, salesforce.com, inc.
* All rights reserved.
* SPDX-License-Identifier: MIT
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
*/
/**
* [ncls] - Normalize class name attribute.
*
* Transforms the provided class property value from an object/string into a string the diffing algo
* can operate on.
*
* This implementation is borrowed from Vue:
* https://github.com/vuejs/core/blob/e790e1bdd7df7be39e14780529db86e4da47a3db/packages/shared/src/normalizeProp.ts#L63-L82
*/
function normalizeClass(value) {
if (isUndefined(value) || isNull(value)) {
// Returning undefined here improves initial render cost, because the old vnode's class will be considered
// undefined in the `patchClassAttribute` routine, so `oldClass === newClass` will be true so we return early
return undefined;
}
let res = '';
if (isString(value)) {
res = value;
}
else if (isArray(value)) {
for (let i = 0; i < value.length; i++) {
const normalized = normalizeClass(value[i]);
if (normalized) {
res += normalized + ' ';
}
}
}
else if (isObject(value) && !isNull(value)) {
// Iterate own enumerable keys of the object
const _keys = keys(value);
for (let i = 0; i < _keys.length; i += 1) {
const key = _keys[i];
if (value[key]) {
res += key + ' ';
}
}
}
return StringTrim.call(res);
}
/*
* Copyright (c) 2024, Salesforce, Inc.
* All rights reserved.
* SPDX-License-Identifier: MIT
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
*/
let hooksAreSet = false;
let sanitizeHtmlContentImpl = () => {
// locker-service patches this function during runtime to sanitize HTML content.
throw new Error('sanitizeHtmlContent hook must be implemented.');
};
/**
* EXPERIMENTAL: This function acts like a hook for Lightning Locker Service and other similar
* libraries to sanitize HTML content. This hook process the content passed via the template to
* lwc:inner-html directive.
* It is meant to be overridden via `setHooks`; it throws an error by default.
*/
const sanitizeHtmlContent = (value) => {
return sanitizeHtmlContentImpl(value);
};
function setHooks(hooks) {
isFalse$1(hooksAreSet, 'Hooks are already overridden, only one definition is allowed.');
hooksAreSet = true;
sanitizeHtmlContentImpl = hooks.sanitizeHtmlContent;
}
/*
* Copyright (c) 2024, salesforce.com, inc.
* All rights reserved.
* SPDX-License-Identifier: MIT
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
*/
const IMPORTANT_FLAG = /\s*!\s*important\s*$/i;
const DECLARATION_DELIMITER = /;(?![^(]*\))/g;
const PROPERTY_DELIMITER = /:(.+)/s; // `/s` (dotAll) required to match styles across newlines, e.g. `color: \n red;`
// Borrowed from Vue template compiler.
// https://github.com/vuejs/vue/blob/531371b818b0e31a989a06df43789728f23dc4e8/src/platforms/web/util/style.js#L5-L16
function parseStyleText(cssText) {
const styleMap = {};
const declarations = cssText.split(DECLARATION_DELIMITER);
for (const declaration of declarations) {
if (declaration) {
const [prop, value] = declaration.split(PROPERTY_DELIMITER);
if (prop !== undefined && value !== undefined) {
styleMap[prop.trim()] = value.trim();
}
}
}
return styleMap;
}
function normalizeStyleAttributeValue(style) {
const styleMap = parseStyleText(style);
const styles = Object.entries(styleMap).map(([key, value]) => {
value = value.replace(IMPORTANT_FLAG, ' !important').trim();
return `${key}: ${value};`;
});
return styles.join(' ');
}
function flattenStylesheets(stylesheets) {
const list = [];
for (const stylesheet of stylesheets) {
if (!isArray(stylesheet)) {
list.push(stylesheet);
}
else {
list.push(...flattenStylesheets(stylesheet));
}
}
return list;
}
/*
* Copyright (c) 2024, salesforce.com, inc.
* All rights reserved.
* SPDX-License-Identifier: MIT
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
*/
let trustedSignals;
function setTrustedSignalSet(signals) {
isFalse$1(trustedSignals, 'Trusted Signal Set is already set!');
trustedSignals = signals;
// Only used in LWC's integration tests. Contained within the set function as there are multiple imports of
// this module. Placing it here ensures we reference the import where the trustedSignals set is maintained
if (process.env.NODE_ENV === 'test-lwc-integration') {
// Used to reset the global state between test runs
globalThis.__lwcResetTrustedSignals = () => (trustedSignals = undefined);
}
}
function addTrustedSignal(signal) {
// This should be a no-op when the trustedSignals set isn't set by runtime
trustedSignals?.add(signal);
}
/**
* The legacy validation behavior was that this check should only
* be performed for runtimes that have provided a trustedSignals set.
* However, this resulted in a bug as all object values were
* being considered signals in environments where the trustedSignals
* set had not been defined. The runtime flag has been added as a killswitch
* in case the fix needs to be reverted.
*/
function legacyIsTrustedSignal(target) {
if (!trustedSignals) {
// The runtime didn't set a trustedSignals set
// this check should only be performed for runtimes that care about filtering signals to track
// our default behavior should be to track all signals
return true;
}
return trustedSignals.has(target);
}
function isTrustedSignal(target) {
if (!trustedSignals) {
return false;
}
return trustedSignals.has(target);
}
/*
* Copyright (c) 2024, salesforce.com, inc.
* All rights reserved.
* SPDX-License-Identifier: MIT
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
*/
/**
* Generates a custom element tag name given a namespace and component name.
* Based on the LWC file system requirements, component names come from the file system name which is
* camel cased. The component's name will be converted to kebab case when the tag name is produced.
*
* @param namespace component namespace
* @param name component name
* @returns component tag name
*/
function generateCustomElementTagName(namespace = '', name = '') {
if (!namespace || !name) {
// TODO [#4824]: Make this an error rather than a warning
// eslint-disable-next-line no-console
console.warn('The namespace and name should both be non-empty strings. ' +
'You may get unexpected behavior at runtime. ' +
'Found: namespace=' +
JSON.stringify(namespace) +
' and name=' +
JSON.stringify(name));
}
const kebabCasedName = name.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
return `${namespace}-${kebabCasedName}`;
}
/*
* Copyright (c) 2024, Salesforce, Inc.
* All rights reserved.
* SPDX-License-Identifier: MIT
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
*/
const DEFAULT_SSR_MODE = 'sync';
/*
* Copyright (c) 2025, salesforce.com, inc.
* All rights reserved.
* SPDX-License-Identifier: MIT
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
*/
/**
* Global HTML "tabindex" attribute is specially massaged into a stringified number
* This follows the historical behavior in api.ts:
* https://github.com/salesforce/lwc/blob/f34a347/packages/%40lwc/engine-core/src/framework/api.ts#L193-L211
*/
function normalizeTabIndex(value) {
const shouldNormalize = value > 0 && typeof value !== 'boolean';
return shouldNormalize ? 0 : value;
}
exports.AMBIGUOUS_PROP_SET = AMBIGUOUS_PROP_SET;
exports.AriaAttrNameToPropNameMap = AriaAttrNameToPropNameMap;
exports.AriaPropNameToAttrNameMap = AriaPropNameToAttrNameMap;
exports.ArrayConcat = ArrayConcat;
exports.ArrayCopyWithin = ArrayCopyWithin;
exports.ArrayEvery = ArrayEvery;
exports.ArrayFill = ArrayFill;
exports.ArrayFilter = ArrayFilter;
exports.ArrayFind = ArrayFind;
exports.ArrayFindIndex = ArrayFindIndex;
exports.ArrayFrom = ArrayFrom;
exports.ArrayIncludes = ArrayIncludes;
exports.ArrayIndexOf = ArrayIndexOf;
exports.ArrayJoin = ArrayJoin;
exports.ArrayMap = ArrayMap;
exports.ArrayPop = ArrayPop;
exports.ArrayPush = ArrayPush;
exports.ArrayReduce = ArrayReduce;
exports.ArrayReverse = ArrayReverse;
exports.ArrayShift = ArrayShift;
exports.ArraySlice = ArraySlice;
exports.ArraySome = ArraySome;
exports.ArraySort = ArraySort;
exports.ArraySplice = ArraySplice;
exports.ArrayUnshift = ArrayUnshift;
exports.ContextEventName = ContextEventName;
exports.DEFAULT_SSR_MODE = DEFAULT_SSR_MODE;
exports.DISALLOWED_PROP_SET = DISALLOWED_PROP_SET;
exports.HIGHEST_API_VERSION = HIGHEST_API_VERSION;
exports.HTML_NAMESPACE = HTML_NAMESPACE;
exports.ID_REFERENCING_ATTRIBUTES_SET = ID_REFERENCING_ATTRIBUTES_SET;
exports.IMPORTANT_FLAG = IMPORTANT_FLAG;
exports.KEY__LEGACY_SHADOW_TOKEN = KEY__LEGACY_SHADOW_TOKEN;
exports.KEY__LEGACY_SHADOW_TOKEN_PRIVATE = KEY__LEGACY_SHADOW_TOKEN_PRIVATE;
exports.KEY__NATIVE_GET_ELEMENT_BY_ID = KEY__NATIVE_GET_ELEMENT_BY_ID;
exports.KEY__NATIVE_ONLY_CSS = KEY__NATIVE_ONLY_CSS;
exports.KEY__NATIVE_QUERY_SELECTOR_ALL = KEY__NATIVE_QUERY_SELECTOR_ALL;
exports.KEY__SCOPED_CSS = KEY__SCOPED_CSS;
exports.KEY__SHADOW_RESOLVER = KEY__SHADOW_RESOLVER;
exports.KEY__SHADOW_RESOLVER_PRIVATE = KEY__SHADOW_RESOLVER_PRIVATE;
exports.KEY__SHADOW_STATIC = KEY__SHADOW_STATIC;
exports.KEY__SHADOW_STATIC_PRIVATE = KEY__SHADOW_STATIC_PRIVATE;
exports.KEY__SHADOW_TOKEN = KEY__SHADOW_TOKEN;
exports.KEY__SHADOW_TOKEN_PRIVATE = KEY__SHADOW_TOKEN_PRIVATE;
exports.KEY__SYNTHETIC_MODE = KEY__SYNTHETIC_MODE;
exports.LOWEST_API_VERSION = LOWEST_API_VERSION;
exports.LWC_VERSION = LWC_VERSION;
exports.LWC_VERSION_COMMENT = LWC_VERSION_COMMENT;
exports.LWC_VERSION_COMMENT_REGEX = LWC_VERSION_COMMENT_REGEX;
exports.MATHML_NAMESPACE = MATHML_NAMESPACE;
exports.REFLECTIVE_GLOBAL_PROPERTY_SET = REFLECTIVE_GLOBAL_PROPERTY_SET;
exports.SPECIAL_PROPERTY_ATTRIBUTE_MAPPING = SPECIAL_PROPERTY_ATTRIBUTE_MAPPING;
exports.SVG_NAMESPACE = SVG_NAMESPACE;
exports.StringCharAt = StringCharAt;
exports.StringCharCodeAt = StringCharCodeAt;
exports.StringFromCharCode = StringFromCharCode;
exports.StringReplace = StringReplace;
exports.StringSlice = StringSlice;
exports.StringSplit = StringSplit;
exports.StringToLowerCase = StringToLowerCase;
exports.StringTrim = StringTrim;
exports.XLINK_NAMESPACE = XLINK_NAMESPACE;
exports.XML_NAMESPACE = XML_NAMESPACE;
exports.addTrustedContext = addTrustedContext;
exports.addTrustedSignal = addTrustedSignal;
exports.arrayEvery = arrayEvery;
exports.assert = assert;
exports.assign = assign;
exports.create = create;
exports.defineProperties = defineProperties;
exports.defineProperty = defineProperty;
exports.entries = entries;
exports.flattenStylesheets = flattenStylesheets;
exports.forEach = forEach;
exports.freeze = freeze;
exports.fromEntries = fromEntries;
exports.generateCustomElementTagName = generateCustomElementTagName;
exports.getAPIVersionFromNumber = getAPIVersionFromNumber;
exports.getContextKeys = getContextKeys;
exports.getOwnPropertyDescriptor = getOwnPropertyDescriptor;
exports.getOwnPropertyDescriptors = getOwnPropertyDescriptors;
exports.getOwnPropertyNames = getOwnPropertyNames;
exports.getOwnPropertySymbols = getOwnPropertySymbols;
exports.getPropertyDescriptor = getPropertyDescriptor;
exports.getPrototypeOf = getPrototypeOf;
exports.hasOwnProperty = hasOwnProperty;
exports.htmlEscape = htmlEscape;
exports.htmlPropertyToAttribute = htmlPropertyToAttribute;
exports.isAPIFeatureEnabled = isAPIFeatureEnabled;
exports.isAriaAttribute = isAriaAttribute;
exports.isArray = isArray;
exports.isBoolean = isBoolean;
exports.isBooleanAttribute = isBooleanAttribute;
exports.isFalse = isFalse;
exports.isFrozen = isFrozen;
exports.isFunction = isFunction;
exports.isGlobalHtmlAttribute = isGlobalHtmlAttribute;
exports.isNull = isNull;
exports.isNumber = isNumber;
exports.isObject = isObject;
exports.isString = isString;
exports.isTrue = isTrue;
exports.isTrustedContext = isTrustedContext;
exports.isTrustedSignal = isTrustedSignal;
exports.isUndefined = isUndefined;
exports.isVoidElement = isVoidElement;
exports.kebabCaseToCamelCase = kebabCaseToCamelCase;
exports.keys = keys;
exports.legacyIsTrustedSignal = legacyIsTrustedSignal;
exports.minApiVersion = minApiVersion;
exports.noop = noop;
exports.normalizeClass = normalizeClass;
exports.normalizeStyleAttributeValue = normalizeStyleAttributeValue;
exports.normalizeTabIndex = normalizeTabIndex;
exports.parseStyleText = parseStyleText;
exports.sanitizeHtmlContent = sanitizeHtmlContent;
exports.seal = seal;
exports.setContextKeys = setContextKeys;
exports.setHooks = setHooks;
exports.setPrototypeOf = setPrototypeOf;
exports.setTrustedContextSet = setTrustedContextSet;
exports.setTrustedSignalSet = setTrustedSignalSet;
exports.toString = toString;
/** version: 8.28.2 */
//# sourceMappingURL=index.cjs.js.map