added version
This commit is contained in:
Generated
Vendored
-1
@@ -1 +0,0 @@
|
||||
../../../shared@3.5.27
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @vue/compiler-core v3.5.27
|
||||
* @vue/compiler-core v3.5.28
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**/
|
||||
Generated
Vendored
Symlink
+1
@@ -0,0 +1 @@
|
||||
../../../shared@3.5.28
|
||||
Generated
Vendored
Generated
Vendored
+5
-5
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@vue/compiler-core",
|
||||
"version": "3.5.27",
|
||||
"version": "3.5.28",
|
||||
"description": "@vue/compiler-core",
|
||||
"main": "index.js",
|
||||
"module": "dist/compiler-core.esm-bundler.js",
|
||||
@@ -46,13 +46,13 @@
|
||||
},
|
||||
"homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-core#readme",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.28.5",
|
||||
"entities": "^7.0.0",
|
||||
"@babel/parser": "^7.29.0",
|
||||
"entities": "^7.0.1",
|
||||
"estree-walker": "^2.0.2",
|
||||
"source-map-js": "^1.2.1",
|
||||
"@vue/shared": "3.5.27"
|
||||
"@vue/shared": "3.5.28"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/types": "^7.28.5"
|
||||
"@babel/types": "^7.29.0"
|
||||
}
|
||||
}
|
||||
Generated
Vendored
-1
@@ -1 +0,0 @@
|
||||
../../../compiler-core@3.5.27
|
||||
Generated
Vendored
-1
@@ -1 +0,0 @@
|
||||
../../../shared@3.5.27
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @vue/compiler-dom v3.5.27
|
||||
* @vue/compiler-dom v3.5.28
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**/
|
||||
Generated
Vendored
Symlink
+1
@@ -0,0 +1 @@
|
||||
../../../compiler-core@3.5.28
|
||||
Generated
Vendored
Symlink
+1
@@ -0,0 +1 @@
|
||||
../../../shared@3.5.28
|
||||
Generated
Vendored
+3
-3
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@vue/compiler-dom",
|
||||
"version": "3.5.27",
|
||||
"version": "3.5.28",
|
||||
"description": "@vue/compiler-dom",
|
||||
"main": "index.js",
|
||||
"module": "dist/compiler-dom.esm-bundler.js",
|
||||
@@ -51,7 +51,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-dom#readme",
|
||||
"dependencies": {
|
||||
"@vue/shared": "3.5.27",
|
||||
"@vue/compiler-core": "3.5.27"
|
||||
"@vue/compiler-core": "3.5.28",
|
||||
"@vue/shared": "3.5.28"
|
||||
}
|
||||
}
|
||||
Generated
Vendored
-1
@@ -1 +0,0 @@
|
||||
../../../compiler-dom@3.5.27
|
||||
Generated
Vendored
-1
@@ -1 +0,0 @@
|
||||
../../../shared@3.5.27
|
||||
Generated
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @vue/compiler-ssr v3.5.27
|
||||
* @vue/compiler-ssr v3.5.28
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**/
|
||||
Generated
Vendored
Symlink
+1
@@ -0,0 +1 @@
|
||||
../../../compiler-dom@3.5.28
|
||||
Generated
Vendored
Symlink
+1
@@ -0,0 +1 @@
|
||||
../../../shared@3.5.28
|
||||
Generated
Vendored
+3
-3
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@vue/compiler-ssr",
|
||||
"version": "3.5.27",
|
||||
"version": "3.5.28",
|
||||
"description": "@vue/compiler-ssr",
|
||||
"main": "dist/compiler-ssr.cjs.js",
|
||||
"types": "dist/compiler-ssr.d.ts",
|
||||
@@ -28,7 +28,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-ssr#readme",
|
||||
"dependencies": {
|
||||
"@vue/shared": "3.5.27",
|
||||
"@vue/compiler-dom": "3.5.27"
|
||||
"@vue/shared": "3.5.28",
|
||||
"@vue/compiler-dom": "3.5.28"
|
||||
}
|
||||
}
|
||||
Generated
Vendored
-1
@@ -1 +0,0 @@
|
||||
../../../shared@3.5.27
|
||||
+3
-1
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @vue/reactivity v3.5.27
|
||||
* @vue/reactivity v3.5.28
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**/
|
||||
@@ -11,6 +11,7 @@ var shared = require('@vue/shared');
|
||||
|
||||
let activeEffectScope;
|
||||
class EffectScope {
|
||||
// TODO isolatedDeclarations "__v_skip"
|
||||
constructor(detached = false) {
|
||||
this.detached = detached;
|
||||
/**
|
||||
@@ -30,6 +31,7 @@ class EffectScope {
|
||||
*/
|
||||
this.cleanups = [];
|
||||
this._isPaused = false;
|
||||
this.__v_skip = true;
|
||||
this.parent = activeEffectScope;
|
||||
if (!detached && activeEffectScope) {
|
||||
this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(
|
||||
Generated
Vendored
Symlink
+1
@@ -0,0 +1 @@
|
||||
../../../shared@3.5.28
|
||||
Generated
Vendored
+2
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@vue/reactivity",
|
||||
"version": "3.5.27",
|
||||
"version": "3.5.28",
|
||||
"description": "@vue/reactivity",
|
||||
"main": "index.js",
|
||||
"module": "dist/reactivity.esm-bundler.js",
|
||||
@@ -50,6 +50,6 @@
|
||||
},
|
||||
"homepage": "https://github.com/vuejs/core/tree/main/packages/reactivity#readme",
|
||||
"dependencies": {
|
||||
"@vue/shared": "3.5.27"
|
||||
"@vue/shared": "3.5.28"
|
||||
}
|
||||
}
|
||||
Generated
Vendored
-1
@@ -1 +0,0 @@
|
||||
../../../reactivity@3.5.27
|
||||
Generated
Vendored
-1
@@ -1 +0,0 @@
|
||||
../../../shared@3.5.27
|
||||
+79
-51
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @vue/runtime-core v3.5.27
|
||||
* @vue/runtime-core v3.5.28
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**/
|
||||
@@ -750,7 +750,22 @@ function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }
|
||||
function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {
|
||||
o: { nextSibling, parentNode, querySelector, insert, createText }
|
||||
}, hydrateChildren) {
|
||||
function hydrateDisabledTeleport(node2, vnode2, targetStart, targetAnchor) {
|
||||
function hydrateAnchor(target2, targetNode) {
|
||||
let targetAnchor = targetNode;
|
||||
while (targetAnchor) {
|
||||
if (targetAnchor && targetAnchor.nodeType === 8) {
|
||||
if (targetAnchor.data === "teleport start anchor") {
|
||||
vnode.targetStart = targetAnchor;
|
||||
} else if (targetAnchor.data === "teleport anchor") {
|
||||
vnode.targetAnchor = targetAnchor;
|
||||
target2._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
|
||||
break;
|
||||
}
|
||||
}
|
||||
targetAnchor = nextSibling(targetAnchor);
|
||||
}
|
||||
}
|
||||
function hydrateDisabledTeleport(node2, vnode2) {
|
||||
vnode2.anchor = hydrateChildren(
|
||||
nextSibling(node2),
|
||||
vnode2,
|
||||
@@ -760,8 +775,6 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
|
||||
slotScopeIds,
|
||||
optimized
|
||||
);
|
||||
vnode2.targetStart = targetStart;
|
||||
vnode2.targetAnchor = targetAnchor;
|
||||
}
|
||||
const target = vnode.target = resolveTarget(
|
||||
vnode.props,
|
||||
@@ -772,27 +785,22 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
|
||||
const targetNode = target._lpa || target.firstChild;
|
||||
if (vnode.shapeFlag & 16) {
|
||||
if (disabled) {
|
||||
hydrateDisabledTeleport(
|
||||
node,
|
||||
vnode,
|
||||
targetNode,
|
||||
targetNode && nextSibling(targetNode)
|
||||
);
|
||||
hydrateDisabledTeleport(node, vnode);
|
||||
hydrateAnchor(target, targetNode);
|
||||
if (!vnode.targetAnchor) {
|
||||
prepareAnchor(
|
||||
target,
|
||||
vnode,
|
||||
createText,
|
||||
insert,
|
||||
// if target is the same as the main view, insert anchors before current node
|
||||
// to avoid hydrating mismatch
|
||||
parentNode(node) === target ? node : null
|
||||
);
|
||||
}
|
||||
} else {
|
||||
vnode.anchor = nextSibling(node);
|
||||
let targetAnchor = targetNode;
|
||||
while (targetAnchor) {
|
||||
if (targetAnchor && targetAnchor.nodeType === 8) {
|
||||
if (targetAnchor.data === "teleport start anchor") {
|
||||
vnode.targetStart = targetAnchor;
|
||||
} else if (targetAnchor.data === "teleport anchor") {
|
||||
vnode.targetAnchor = targetAnchor;
|
||||
target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
|
||||
break;
|
||||
}
|
||||
}
|
||||
targetAnchor = nextSibling(targetAnchor);
|
||||
}
|
||||
hydrateAnchor(target, targetNode);
|
||||
if (!vnode.targetAnchor) {
|
||||
prepareAnchor(target, vnode, createText, insert);
|
||||
}
|
||||
@@ -810,7 +818,9 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
|
||||
updateCssVars(vnode, disabled);
|
||||
} else if (disabled) {
|
||||
if (vnode.shapeFlag & 16) {
|
||||
hydrateDisabledTeleport(node, vnode, node, nextSibling(node));
|
||||
hydrateDisabledTeleport(node, vnode);
|
||||
vnode.targetStart = node;
|
||||
vnode.targetAnchor = nextSibling(node);
|
||||
}
|
||||
}
|
||||
return vnode.anchor && nextSibling(vnode.anchor);
|
||||
@@ -834,13 +844,13 @@ function updateCssVars(vnode, isDisabled) {
|
||||
ctx.ut();
|
||||
}
|
||||
}
|
||||
function prepareAnchor(target, vnode, createText, insert) {
|
||||
function prepareAnchor(target, vnode, createText, insert, anchor = null) {
|
||||
const targetStart = vnode.targetStart = createText("");
|
||||
const targetAnchor = vnode.targetAnchor = createText("");
|
||||
targetStart[TeleportEndKey] = targetAnchor;
|
||||
if (target) {
|
||||
insert(targetStart, target);
|
||||
insert(targetAnchor, target);
|
||||
insert(targetStart, target, anchor);
|
||||
insert(targetAnchor, target, anchor);
|
||||
}
|
||||
return targetAnchor;
|
||||
}
|
||||
@@ -1065,7 +1075,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
|
||||
}
|
||||
}
|
||||
let called = false;
|
||||
const done = el[enterCbKey] = (cancelled) => {
|
||||
el[enterCbKey] = (cancelled) => {
|
||||
if (called) return;
|
||||
called = true;
|
||||
if (cancelled) {
|
||||
@@ -1078,6 +1088,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
|
||||
}
|
||||
el[enterCbKey] = void 0;
|
||||
};
|
||||
const done = el[enterCbKey].bind(null, false);
|
||||
if (hook) {
|
||||
callAsyncHook(hook, [el, done]);
|
||||
} else {
|
||||
@@ -1097,7 +1108,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
|
||||
}
|
||||
callHook(onBeforeLeave, [el]);
|
||||
let called = false;
|
||||
const done = el[leaveCbKey] = (cancelled) => {
|
||||
el[leaveCbKey] = (cancelled) => {
|
||||
if (called) return;
|
||||
called = true;
|
||||
remove();
|
||||
@@ -1111,6 +1122,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
|
||||
delete leavingVNodesCache[key2];
|
||||
}
|
||||
};
|
||||
const done = el[leaveCbKey].bind(null, false);
|
||||
leavingVNodesCache[key2] = vnode;
|
||||
if (onLeave) {
|
||||
callAsyncHook(onLeave, [el, done]);
|
||||
@@ -1229,6 +1241,10 @@ function useTemplateRef(key) {
|
||||
const ret = r;
|
||||
return ret;
|
||||
}
|
||||
function isTemplateRefKey(refs, key) {
|
||||
let desc;
|
||||
return !!((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable);
|
||||
}
|
||||
|
||||
const pendingSetRefMap = /* @__PURE__ */ new WeakMap();
|
||||
function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
|
||||
@@ -1258,8 +1274,17 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
|
||||
const setupState = owner.setupState;
|
||||
const rawSetupState = reactivity.toRaw(setupState);
|
||||
const canSetSetupRef = setupState === shared.EMPTY_OBJ ? shared.NO : (key) => {
|
||||
if (isTemplateRefKey(refs, key)) {
|
||||
return false;
|
||||
}
|
||||
return shared.hasOwn(rawSetupState, key);
|
||||
};
|
||||
const canSetRef = (ref2, key) => {
|
||||
if (key && isTemplateRefKey(refs, key)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
if (oldRef != null && oldRef !== ref) {
|
||||
invalidatePendingSetRef(oldRawRef);
|
||||
if (shared.isString(oldRef)) {
|
||||
@@ -1268,10 +1293,10 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
|
||||
setupState[oldRef] = null;
|
||||
}
|
||||
} else if (reactivity.isRef(oldRef)) {
|
||||
{
|
||||
const oldRawRefAtom = oldRawRef;
|
||||
if (canSetRef(oldRef, oldRawRefAtom.k)) {
|
||||
oldRef.value = null;
|
||||
}
|
||||
const oldRawRefAtom = oldRawRef;
|
||||
if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;
|
||||
}
|
||||
}
|
||||
@@ -1283,7 +1308,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
|
||||
if (_isString || _isRef) {
|
||||
const doSet = () => {
|
||||
if (rawRef.f) {
|
||||
const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : ref.value ;
|
||||
const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : canSetRef() || !rawRef.k ? ref.value : refs[rawRef.k];
|
||||
if (isUnmount) {
|
||||
shared.isArray(existing) && shared.remove(existing, refValue);
|
||||
} else {
|
||||
@@ -1295,7 +1320,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
|
||||
}
|
||||
} else {
|
||||
const newVal = [refValue];
|
||||
{
|
||||
if (canSetRef(ref, rawRef.k)) {
|
||||
ref.value = newVal;
|
||||
}
|
||||
if (rawRef.k) refs[rawRef.k] = newVal;
|
||||
@@ -1310,7 +1335,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
|
||||
setupState[ref] = value;
|
||||
}
|
||||
} else if (_isRef) {
|
||||
{
|
||||
if (canSetRef(ref, rawRef.k)) {
|
||||
ref.value = value;
|
||||
}
|
||||
if (rawRef.k) refs[rawRef.k] = value;
|
||||
@@ -3527,7 +3552,7 @@ function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
|
||||
const dynamicProps = nextVNode.dynamicProps;
|
||||
for (let i = 0; i < dynamicProps.length; i++) {
|
||||
const key = dynamicProps[i];
|
||||
if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {
|
||||
if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emits, key)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -3558,12 +3583,20 @@ function hasPropsChanged(prevProps, nextProps, emitsOptions) {
|
||||
}
|
||||
for (let i = 0; i < nextKeys.length; i++) {
|
||||
const key = nextKeys[i];
|
||||
if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {
|
||||
if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
function hasPropValueChanged(nextProps, prevProps, key) {
|
||||
const nextProp = nextProps[key];
|
||||
const prevProp = prevProps[key];
|
||||
if (key === "style" && shared.isObject(nextProp) && shared.isObject(prevProp)) {
|
||||
return !shared.looseEqual(nextProp, prevProp);
|
||||
}
|
||||
return nextProp !== prevProp;
|
||||
}
|
||||
function updateHOCHostEl({ vnode, parent }, el) {
|
||||
while (parent) {
|
||||
const root = parent.subTree;
|
||||
@@ -4070,9 +4103,7 @@ function baseCreateRenderer(options, createHydrationFns) {
|
||||
} else {
|
||||
const el = n2.el = n1.el;
|
||||
if (n2.children !== n1.children) {
|
||||
{
|
||||
hostSetText(el, n2.children);
|
||||
}
|
||||
hostSetText(el, n2.children);
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -4133,7 +4164,7 @@ function baseCreateRenderer(options, createHydrationFns) {
|
||||
optimized
|
||||
);
|
||||
} else {
|
||||
const customElement = !!(n1.el && n1.el._isVueCE) ? n1.el : null;
|
||||
const customElement = n1.el && n1.el._isVueCE ? n1.el : null;
|
||||
try {
|
||||
if (customElement) {
|
||||
customElement._beginPatch();
|
||||
@@ -4564,8 +4595,7 @@ function baseCreateRenderer(options, createHydrationFns) {
|
||||
hydrateSubTree();
|
||||
}
|
||||
} else {
|
||||
if (root.ce && // @ts-expect-error _def is private
|
||||
root.ce._def.shadowRoot !== false) {
|
||||
if (root.ce && root.ce._hasShadowRoot()) {
|
||||
root.ce._injectChildStyle(type);
|
||||
}
|
||||
const subTree = instance.subTree = renderComponentRoot(instance);
|
||||
@@ -4605,9 +4635,9 @@ function baseCreateRenderer(options, createHydrationFns) {
|
||||
updateComponentPreRender(instance, next, optimized);
|
||||
}
|
||||
nonHydratedAsyncRoot.asyncDep.then(() => {
|
||||
if (!instance.isUnmounted) {
|
||||
componentUpdateFn();
|
||||
}
|
||||
queuePostRenderEffect(() => {
|
||||
if (!instance.isUnmounted) update();
|
||||
}, parentSuspense);
|
||||
});
|
||||
return;
|
||||
}
|
||||
@@ -5258,12 +5288,10 @@ function traverseStaticChildren(n1, n2, shallow = false) {
|
||||
traverseStaticChildren(c1, c2);
|
||||
}
|
||||
if (c2.type === Text) {
|
||||
if (c2.patchFlag !== -1) {
|
||||
c2.el = c1.el;
|
||||
} else {
|
||||
c2.__elIndex = i + // take fragment start anchor into account
|
||||
(n1.type === Fragment ? 1 : 0);
|
||||
if (c2.patchFlag === -1) {
|
||||
c2 = ch2[i] = cloneIfMounted(c2);
|
||||
}
|
||||
c2.el = c1.el;
|
||||
}
|
||||
if (c2.type === Comment && !c2.el) {
|
||||
c2.el = c1.el;
|
||||
@@ -6600,7 +6628,7 @@ function isMemoSame(cached, memo) {
|
||||
return true;
|
||||
}
|
||||
|
||||
const version = "3.5.27";
|
||||
const version = "3.5.28";
|
||||
const warn$1 = shared.NOOP;
|
||||
const ErrorTypeStrings = ErrorTypeStrings$1 ;
|
||||
const devtools = void 0;
|
||||
Generated
Vendored
Symlink
+1
@@ -0,0 +1 @@
|
||||
../../../reactivity@3.5.28
|
||||
Generated
Vendored
Symlink
+1
@@ -0,0 +1 @@
|
||||
../../../shared@3.5.28
|
||||
Generated
Vendored
+3
-3
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@vue/runtime-core",
|
||||
"version": "3.5.27",
|
||||
"version": "3.5.28",
|
||||
"description": "@vue/runtime-core",
|
||||
"main": "index.js",
|
||||
"module": "dist/runtime-core.esm-bundler.js",
|
||||
@@ -46,7 +46,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/vuejs/core/tree/main/packages/runtime-core#readme",
|
||||
"dependencies": {
|
||||
"@vue/shared": "3.5.27",
|
||||
"@vue/reactivity": "3.5.27"
|
||||
"@vue/shared": "3.5.28",
|
||||
"@vue/reactivity": "3.5.28"
|
||||
}
|
||||
}
|
||||
Generated
Vendored
-1
@@ -1 +0,0 @@
|
||||
../../../runtime-core@3.5.27
|
||||
Generated
Vendored
-1
@@ -1 +0,0 @@
|
||||
../../../shared@3.5.27
|
||||
+29
-11
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @vue/runtime-dom v3.5.27
|
||||
* @vue/runtime-dom v3.5.28
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**/
|
||||
@@ -1127,6 +1127,12 @@ class VueElement extends BaseClass {
|
||||
this._update();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
_hasShadowRoot() {
|
||||
return this._def.shadowRoot !== false;
|
||||
}
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
@@ -1238,10 +1244,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
|
||||
instance
|
||||
)
|
||||
);
|
||||
positionMap.set(child, {
|
||||
left: child.el.offsetLeft,
|
||||
top: child.el.offsetTop
|
||||
});
|
||||
positionMap.set(child, getPosition(child.el));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1270,10 +1273,7 @@ function callPendingCbs(c) {
|
||||
}
|
||||
}
|
||||
function recordPosition(c) {
|
||||
newPositionMap.set(c, {
|
||||
left: c.el.offsetLeft,
|
||||
top: c.el.offsetTop
|
||||
});
|
||||
newPositionMap.set(c, getPosition(c.el));
|
||||
}
|
||||
function applyTranslation(c) {
|
||||
const oldPos = positionMap.get(c);
|
||||
@@ -1281,12 +1281,29 @@ function applyTranslation(c) {
|
||||
const dx = oldPos.left - newPos.left;
|
||||
const dy = oldPos.top - newPos.top;
|
||||
if (dx || dy) {
|
||||
const s = c.el.style;
|
||||
s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;
|
||||
const el = c.el;
|
||||
const s = el.style;
|
||||
const rect = el.getBoundingClientRect();
|
||||
let scaleX = 1;
|
||||
let scaleY = 1;
|
||||
if (el.offsetWidth) scaleX = rect.width / el.offsetWidth;
|
||||
if (el.offsetHeight) scaleY = rect.height / el.offsetHeight;
|
||||
if (!Number.isFinite(scaleX) || scaleX === 0) scaleX = 1;
|
||||
if (!Number.isFinite(scaleY) || scaleY === 0) scaleY = 1;
|
||||
if (Math.abs(scaleX - 1) < 0.01) scaleX = 1;
|
||||
if (Math.abs(scaleY - 1) < 0.01) scaleY = 1;
|
||||
s.transform = s.webkitTransform = `translate(${dx / scaleX}px,${dy / scaleY}px)`;
|
||||
s.transitionDuration = "0s";
|
||||
return c;
|
||||
}
|
||||
}
|
||||
function getPosition(el) {
|
||||
const rect = el.getBoundingClientRect();
|
||||
return {
|
||||
left: rect.left,
|
||||
top: rect.top
|
||||
};
|
||||
}
|
||||
function hasCSSTransform(el, root, moveClass) {
|
||||
const clone = el.cloneNode();
|
||||
const _vtc = el[vtcKey];
|
||||
@@ -1594,6 +1611,7 @@ const modifierGuards = {
|
||||
exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))
|
||||
};
|
||||
const withModifiers = (fn, modifiers) => {
|
||||
if (!fn) return fn;
|
||||
const cache = fn._withMods || (fn._withMods = {});
|
||||
const cacheKey = modifiers.join(".");
|
||||
return cache[cacheKey] || (cache[cacheKey] = ((event, ...args) => {
|
||||
Generated
Vendored
Symlink
+1
@@ -0,0 +1 @@
|
||||
../../../runtime-core@3.5.28
|
||||
Generated
Vendored
Symlink
+1
@@ -0,0 +1 @@
|
||||
../../../shared@3.5.28
|
||||
Generated
Vendored
+4
-4
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@vue/runtime-dom",
|
||||
"version": "3.5.27",
|
||||
"version": "3.5.28",
|
||||
"description": "@vue/runtime-dom",
|
||||
"main": "index.js",
|
||||
"module": "dist/runtime-dom.esm-bundler.js",
|
||||
@@ -50,9 +50,9 @@
|
||||
"homepage": "https://github.com/vuejs/core/tree/main/packages/runtime-dom#readme",
|
||||
"dependencies": {
|
||||
"csstype": "^3.2.3",
|
||||
"@vue/shared": "3.5.27",
|
||||
"@vue/runtime-core": "3.5.27",
|
||||
"@vue/reactivity": "3.5.27"
|
||||
"@vue/runtime-core": "3.5.28",
|
||||
"@vue/reactivity": "3.5.28",
|
||||
"@vue/shared": "3.5.28"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/trusted-types": "^2.0.7"
|
||||
Generated
Vendored
-1
@@ -1 +0,0 @@
|
||||
../../../compiler-ssr@3.5.27
|
||||
Generated
Vendored
-1
@@ -1 +0,0 @@
|
||||
../../../shared@3.5.27
|
||||
-1
@@ -1 +0,0 @@
|
||||
../../../vue@3.5.27
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @vue/server-renderer v3.5.27
|
||||
* @vue/server-renderer v3.5.28
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**/
|
||||
Generated
Vendored
Symlink
+1
@@ -0,0 +1 @@
|
||||
../../../compiler-ssr@3.5.28
|
||||
Generated
Vendored
Symlink
+1
@@ -0,0 +1 @@
|
||||
../../../shared@3.5.28
|
||||
Generated
Vendored
Symlink
+1
@@ -0,0 +1 @@
|
||||
../../../vue@3.5.28
|
||||
Generated
Vendored
+4
-4
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@vue/server-renderer",
|
||||
"version": "3.5.27",
|
||||
"version": "3.5.28",
|
||||
"description": "@vue/server-renderer",
|
||||
"main": "index.js",
|
||||
"module": "dist/server-renderer.esm-bundler.js",
|
||||
@@ -46,10 +46,10 @@
|
||||
},
|
||||
"homepage": "https://github.com/vuejs/core/tree/main/packages/server-renderer#readme",
|
||||
"peerDependencies": {
|
||||
"vue": "3.5.27"
|
||||
"vue": "3.5.28"
|
||||
},
|
||||
"dependencies": {
|
||||
"@vue/shared": "3.5.27",
|
||||
"@vue/compiler-ssr": "3.5.27"
|
||||
"@vue/shared": "3.5.28",
|
||||
"@vue/compiler-ssr": "3.5.28"
|
||||
}
|
||||
}
|
||||
Generated
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @vue/shared v3.5.27
|
||||
* @vue/shared v3.5.28
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**/
|
||||
Generated
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@vue/shared",
|
||||
"version": "3.5.27",
|
||||
"version": "3.5.28",
|
||||
"description": "internal utils shared across @vue packages",
|
||||
"main": "index.js",
|
||||
"module": "dist/shared.esm-bundler.js",
|
||||
-1
@@ -1 +0,0 @@
|
||||
../../../@vue/compiler-dom@3.5.27
|
||||
-1
@@ -1 +0,0 @@
|
||||
../../../@vue/runtime-dom@3.5.27
|
||||
-1
@@ -1 +0,0 @@
|
||||
../../../@vue/server-renderer@3.5.27
|
||||
-1
@@ -1 +0,0 @@
|
||||
../../../@vue/shared@3.5.27
|
||||
Generated
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* vue v3.5.27
|
||||
* vue v3.5.28
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**/
|
||||
Generated
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* vue v3.5.27
|
||||
* vue v3.5.28
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**/
|
||||
Generated
Vendored
Generated
Vendored
Generated
Vendored
Symlink
+1
@@ -0,0 +1 @@
|
||||
../../../@vue/compiler-dom@3.5.28
|
||||
Generated
Vendored
Symlink
+1
@@ -0,0 +1 @@
|
||||
../../../@vue/runtime-dom@3.5.28
|
||||
Generated
Vendored
Symlink
+1
@@ -0,0 +1 @@
|
||||
../../../@vue/server-renderer@3.5.28
|
||||
+1
@@ -0,0 +1 @@
|
||||
../../../@vue/shared@3.5.28
|
||||
Generated
Vendored
+6
-6
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "vue",
|
||||
"version": "3.5.27",
|
||||
"version": "3.5.28",
|
||||
"description": "The progressive JavaScript framework for building modern web UI.",
|
||||
"main": "index.js",
|
||||
"module": "dist/vue.runtime.esm-bundler.js",
|
||||
@@ -95,11 +95,11 @@
|
||||
},
|
||||
"homepage": "https://github.com/vuejs/core/tree/main/packages/vue#readme",
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.5.27",
|
||||
"@vue/compiler-sfc": "3.5.27",
|
||||
"@vue/runtime-dom": "3.5.27",
|
||||
"@vue/server-renderer": "3.5.27",
|
||||
"@vue/shared": "3.5.27"
|
||||
"@vue/shared": "3.5.28",
|
||||
"@vue/compiler-dom": "3.5.28",
|
||||
"@vue/compiler-sfc": "3.5.28",
|
||||
"@vue/runtime-dom": "3.5.28",
|
||||
"@vue/server-renderer": "3.5.28"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"typescript": "*"
|
||||
Generated
Vendored
+13
-3
@@ -9246,7 +9246,7 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass {
|
||||
return this.finishCallExpression(node, state.optionalChainMember);
|
||||
}
|
||||
const tokenType = this.state.type;
|
||||
if (tokenType === 48 || tokenType === 52 || tokenType !== 10 && tokenCanStartExpression(tokenType) && !this.hasPrecedingLineBreak()) {
|
||||
if (tokenType === 48 || tokenType === 52 || tokenType !== 10 && tokenType !== 93 && tokenType !== 120 && tokenCanStartExpression(tokenType) && !this.hasPrecedingLineBreak()) {
|
||||
return;
|
||||
}
|
||||
const node = this.startNodeAt(startLoc);
|
||||
@@ -9721,8 +9721,18 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass {
|
||||
}
|
||||
parseClassSuper(node) {
|
||||
super.parseClassSuper(node);
|
||||
if (node.superClass && (this.match(47) || this.match(51))) {
|
||||
node.superTypeParameters = this.tsParseTypeArgumentsInExpression();
|
||||
if (node.superClass) {
|
||||
if (node.superClass.type === "TSInstantiationExpression") {
|
||||
const tsInstantiationExpression = node.superClass;
|
||||
const superClass = tsInstantiationExpression.expression;
|
||||
this.takeSurroundingComments(superClass, superClass.start, superClass.end);
|
||||
const superTypeArguments = tsInstantiationExpression.typeParameters;
|
||||
this.takeSurroundingComments(superTypeArguments, superTypeArguments.start, superTypeArguments.end);
|
||||
node.superClass = superClass;
|
||||
node.superTypeParameters = superTypeArguments;
|
||||
} else if (this.match(47) || this.match(51)) {
|
||||
node.superTypeParameters = this.tsParseTypeArgumentsInExpression();
|
||||
}
|
||||
}
|
||||
if (this.eatContextual(113)) {
|
||||
node.implements = this.tsParseHeritageClause("implements");
|
||||
|
||||
+3
-3
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@babel/parser",
|
||||
"version": "7.28.6",
|
||||
"version": "7.29.0",
|
||||
"description": "A JavaScript parser",
|
||||
"author": "The Babel Team (https://babel.dev/team)",
|
||||
"homepage": "https://babel.dev/docs/en/next/babel-parser",
|
||||
@@ -35,10 +35,10 @@
|
||||
},
|
||||
"# dependencies": "This package doesn't actually have runtime dependencies. @babel/types is only needed for type definitions.",
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.28.6"
|
||||
"@babel/types": "^7.29.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/code-frame": "^7.28.6",
|
||||
"@babel/code-frame": "^7.29.0",
|
||||
"@babel/helper-check-duplicate-nodes": "^7.28.6",
|
||||
"@babel/helper-fixtures": "^7.28.6",
|
||||
"@babel/helper-string-parser": "^7.27.1",
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
../.nitro/@vue/compiler-core@3.5.27
|
||||
../.nitro/@vue/compiler-core@3.5.28
|
||||
+1
-1
@@ -1 +1 @@
|
||||
../.nitro/@vue/compiler-dom@3.5.27
|
||||
../.nitro/@vue/compiler-dom@3.5.28
|
||||
+1
-1
@@ -1 +1 @@
|
||||
../.nitro/@vue/compiler-ssr@3.5.27
|
||||
../.nitro/@vue/compiler-ssr@3.5.28
|
||||
+1
-1
@@ -1 +1 @@
|
||||
../.nitro/@vue/reactivity@3.5.27
|
||||
../.nitro/@vue/reactivity@3.5.28
|
||||
+1
-1
@@ -1 +1 @@
|
||||
../.nitro/@vue/runtime-core@3.5.27
|
||||
../.nitro/@vue/runtime-core@3.5.28
|
||||
+1
-1
@@ -1 +1 @@
|
||||
../.nitro/@vue/runtime-dom@3.5.27
|
||||
../.nitro/@vue/runtime-dom@3.5.28
|
||||
+1
-1
@@ -1 +1 @@
|
||||
../.nitro/@vue/server-renderer@3.5.27
|
||||
../.nitro/@vue/server-renderer@3.5.28
|
||||
+1
-1
@@ -1 +1 @@
|
||||
../.nitro/@vue/shared@3.5.27
|
||||
../.nitro/@vue/shared@3.5.28
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "devalue",
|
||||
"description": "Gets the job done when JSON.stringify can't",
|
||||
"version": "5.6.2",
|
||||
"version": "5.6.3",
|
||||
"repository": "sveltejs/devalue",
|
||||
"sideEffects": false,
|
||||
"exports": {
|
||||
@@ -32,6 +32,6 @@
|
||||
"changeset:version": "changeset version",
|
||||
"changeset:publish": "changeset publish",
|
||||
"build": "dts-buddy",
|
||||
"test": "uvu test"
|
||||
"test": "uvu"
|
||||
}
|
||||
}
|
||||
+1
@@ -4,3 +4,4 @@ export const NAN = -3;
|
||||
export const POSITIVE_INFINITY = -4;
|
||||
export const NEGATIVE_INFINITY = -5;
|
||||
export const NEGATIVE_ZERO = -6;
|
||||
export const SPARSE = -7;
|
||||
|
||||
+13
-1
@@ -5,6 +5,7 @@ import {
|
||||
NEGATIVE_INFINITY,
|
||||
NEGATIVE_ZERO,
|
||||
POSITIVE_INFINITY,
|
||||
SPARSE,
|
||||
UNDEFINED
|
||||
} from './constants.js';
|
||||
|
||||
@@ -201,6 +202,17 @@ export function unflatten(parsed, revivers) {
|
||||
default:
|
||||
throw new Error(`Unknown type ${type}`);
|
||||
}
|
||||
} else if (value[0] === SPARSE) {
|
||||
// Sparse array encoding: [SPARSE, length, idx, val, idx, val, ...]
|
||||
const len = value[1];
|
||||
|
||||
const array = new Array(len);
|
||||
hydrated[index] = array;
|
||||
|
||||
for (let i = 2; i < value.length; i += 2) {
|
||||
const idx = value[i];
|
||||
array[idx] = hydrate(value[i + 1]);
|
||||
}
|
||||
} else {
|
||||
const array = new Array(value.length);
|
||||
hydrated[index] = array;
|
||||
@@ -217,7 +229,7 @@ export function unflatten(parsed, revivers) {
|
||||
const object = {};
|
||||
hydrated[index] = object;
|
||||
|
||||
for (const key in value) {
|
||||
for (const key of Object.keys(value)) {
|
||||
if (key === '__proto__') {
|
||||
throw new Error('Cannot parse an object with a `__proto__` property');
|
||||
}
|
||||
|
||||
+91
-6
@@ -5,7 +5,8 @@ import {
|
||||
is_plain_object,
|
||||
is_primitive,
|
||||
stringify_key,
|
||||
stringify_string
|
||||
stringify_string,
|
||||
valid_array_indices
|
||||
} from './utils.js';
|
||||
import {
|
||||
HOLE,
|
||||
@@ -13,6 +14,7 @@ import {
|
||||
NEGATIVE_INFINITY,
|
||||
NEGATIVE_ZERO,
|
||||
POSITIVE_INFINITY,
|
||||
SPARSE,
|
||||
UNDEFINED
|
||||
} from './constants.js';
|
||||
import { encode64 } from './base64.js';
|
||||
@@ -105,24 +107,89 @@ export function stringify(value, reducers) {
|
||||
: `["RegExp",${stringify_string(source)}]`;
|
||||
break;
|
||||
|
||||
case 'Array':
|
||||
case 'Array': {
|
||||
// For dense arrays (no holes), we iterate normally.
|
||||
// When we encounter the first hole, we call Object.keys
|
||||
// to determine the sparseness, then decide between:
|
||||
// - HOLE encoding: [-2, val, -2, ...] (default)
|
||||
// - Sparse encoding: [-7, length, idx, val, ...] (for very sparse arrays)
|
||||
// Only the sparse path avoids iterating every slot, which
|
||||
// is what protects against the DoS of e.g. `arr[1000000] = 1`.
|
||||
let mostly_dense = false;
|
||||
|
||||
str = '[';
|
||||
|
||||
for (let i = 0; i < thing.length; i += 1) {
|
||||
if (i > 0) str += ',';
|
||||
|
||||
if (i in thing) {
|
||||
if (Object.hasOwn(thing, i)) {
|
||||
keys.push(`[${i}]`);
|
||||
str += flatten(thing[i]);
|
||||
keys.pop();
|
||||
} else {
|
||||
} else if (mostly_dense) {
|
||||
// Use dense encoding. The heuristic guarantees the
|
||||
// array is only mildly sparse, so iterating over every
|
||||
// slot is fine.
|
||||
str += HOLE;
|
||||
} else {
|
||||
// Decide between HOLE encoding and sparse encoding.
|
||||
//
|
||||
// HOLE encoding: each hole is serialized as the HOLE
|
||||
// sentinel (-2). For example, [, "a", ,] becomes
|
||||
// [-2, 0, -2]. Each hole costs 3 chars ("-2" + comma).
|
||||
//
|
||||
// Sparse encoding: lists only populated indices.
|
||||
// For example, [, "a", ,] becomes [-7, 3, 1, 0] — the
|
||||
// -7 sentinel, the array length (3), then index-value
|
||||
// pairs. This avoids paying per-hole, but each element
|
||||
// costs extra chars to write its index.
|
||||
//
|
||||
// The values are the same size either way, so the
|
||||
// choice comes down to structural overhead:
|
||||
//
|
||||
// HOLE overhead:
|
||||
// 3 chars per hole ("-2" + comma)
|
||||
// = (L - P) * 3
|
||||
//
|
||||
// Sparse overhead:
|
||||
// "-7," — 3 chars (sparse sentinel + comma)
|
||||
// + length + "," — (d + 1) chars (array length + comma)
|
||||
// + per element: index + "," — (d + 1) chars
|
||||
// = (4 + d) + P * (d + 1)
|
||||
//
|
||||
// where L is the array length, P is the number of
|
||||
// populated elements, and d is the number of digits
|
||||
// in L (an upper bound on the digits in any index).
|
||||
//
|
||||
// Sparse encoding is cheaper when:
|
||||
// (4 + d) + P * (d + 1) < (L - P) * 3
|
||||
const populated_keys = valid_array_indices(/** @type {any[]} */ (thing));
|
||||
const population = populated_keys.length;
|
||||
const d = String(thing.length).length;
|
||||
|
||||
const hole_cost = (thing.length - population) * 3;
|
||||
const sparse_cost = 4 + d + population * (d + 1);
|
||||
|
||||
if (hole_cost > sparse_cost) {
|
||||
str = '[' + SPARSE + ',' + thing.length;
|
||||
for (let j = 0; j < populated_keys.length; j++) {
|
||||
const key = populated_keys[j];
|
||||
keys.push(`[${key}]`);
|
||||
str += ',' + key + ',' + flatten(thing[key]);
|
||||
keys.pop();
|
||||
}
|
||||
break;
|
||||
} else {
|
||||
mostly_dense = true;
|
||||
str += HOLE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
str += ']';
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 'Set':
|
||||
str = '["Set"';
|
||||
@@ -217,7 +284,16 @@ export function stringify(value, reducers) {
|
||||
|
||||
if (Object.getPrototypeOf(thing) === null) {
|
||||
str = '["null"';
|
||||
for (const key in thing) {
|
||||
for (const key of Object.keys(thing)) {
|
||||
if (key === '__proto__') {
|
||||
throw new DevalueError(
|
||||
`Cannot stringify objects with __proto__ keys`,
|
||||
keys,
|
||||
thing,
|
||||
value
|
||||
);
|
||||
}
|
||||
|
||||
keys.push(stringify_key(key));
|
||||
str += `,${stringify_string(key)},${flatten(thing[key])}`;
|
||||
keys.pop();
|
||||
@@ -226,7 +302,16 @@ export function stringify(value, reducers) {
|
||||
} else {
|
||||
str = '{';
|
||||
let started = false;
|
||||
for (const key in thing) {
|
||||
for (const key of Object.keys(thing)) {
|
||||
if (key === '__proto__') {
|
||||
throw new DevalueError(
|
||||
`Cannot stringify objects with __proto__ keys`,
|
||||
keys,
|
||||
thing,
|
||||
value
|
||||
);
|
||||
}
|
||||
|
||||
if (started) str += ',';
|
||||
started = true;
|
||||
keys.push(stringify_key(key));
|
||||
|
||||
+90
-7
@@ -6,7 +6,8 @@ import {
|
||||
is_plain_object,
|
||||
is_primitive,
|
||||
stringify_key,
|
||||
stringify_string
|
||||
stringify_string,
|
||||
valid_array_indices
|
||||
} from './utils.js';
|
||||
|
||||
const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$';
|
||||
@@ -131,7 +132,16 @@ export function uneval(value, replacer) {
|
||||
);
|
||||
}
|
||||
|
||||
for (const key in thing) {
|
||||
for (const key of Object.keys(thing)) {
|
||||
if (key === '__proto__') {
|
||||
throw new DevalueError(
|
||||
`Cannot stringify objects with __proto__ keys`,
|
||||
keys,
|
||||
thing,
|
||||
value
|
||||
);
|
||||
}
|
||||
|
||||
keys.push(stringify_key(key));
|
||||
walk(thing[key]);
|
||||
keys.pop();
|
||||
@@ -190,12 +200,85 @@ export function uneval(value, replacer) {
|
||||
case 'URLSearchParams':
|
||||
return `new URLSearchParams(${stringify_string(thing.toString())})`;
|
||||
|
||||
case 'Array':
|
||||
const members = /** @type {any[]} */ (thing).map((v, i) =>
|
||||
i in thing ? stringify(v) : ''
|
||||
);
|
||||
case 'Array': {
|
||||
// For dense arrays (no holes), we iterate normally.
|
||||
// When we encounter the first hole, we call Object.keys
|
||||
// to determine the sparseness, then decide between:
|
||||
// - Array literal with holes: [,"a",,] (default)
|
||||
// - Object.assign: Object.assign(Array(n),{...}) (for very sparse arrays)
|
||||
// Only the Object.assign path avoids iterating every slot, which
|
||||
// is what protects against the DoS of e.g. `arr[1000000] = 1`.
|
||||
let has_holes = false;
|
||||
|
||||
let result = '[';
|
||||
|
||||
for (let i = 0; i < thing.length; i += 1) {
|
||||
if (i > 0) result += ',';
|
||||
|
||||
if (Object.hasOwn(thing, i)) {
|
||||
result += stringify(thing[i]);
|
||||
} else if (!has_holes) {
|
||||
// Decide between array literal and Object.assign.
|
||||
//
|
||||
// Array literal: holes are consecutive commas.
|
||||
// For example, [, "a", ,] is written as [,"a",,].
|
||||
// Each hole costs 1 char (a comma).
|
||||
//
|
||||
// Object.assign: populated indices are listed explicitly.
|
||||
// For example, [, "a", ,] would be written as
|
||||
// Object.assign(Array(3),{1:"a"}). This avoids paying
|
||||
// per-hole, but has a large fixed overhead for the
|
||||
// "Object.assign(Array(n),{...})" wrapper, and each
|
||||
// element costs extra chars for its index and colon.
|
||||
//
|
||||
// The serialized values are the same size either way, so
|
||||
// the choice comes down to the structural overhead:
|
||||
//
|
||||
// Array literal overhead:
|
||||
// 1 char per element or hole (comma separators)
|
||||
// + 2 chars for "[" and "]"
|
||||
// = L + 2
|
||||
//
|
||||
// Object.assign overhead:
|
||||
// "Object.assign(Array(" — 20 chars
|
||||
// + length — d chars
|
||||
// + "),{" — 3 chars
|
||||
// + for each populated element:
|
||||
// index + ":" + "," — (d + 2) chars
|
||||
// + "})" — 2 chars
|
||||
// = (25 + d) + P * (d + 2)
|
||||
//
|
||||
// where L is the array length, P is the number of
|
||||
// populated elements, and d is the number of digits
|
||||
// in L (an upper bound on the digits in any index).
|
||||
//
|
||||
// Object.assign is cheaper when:
|
||||
// (25 + d) + P * (d + 2) < L + 2
|
||||
const populated_keys = valid_array_indices(/** @type {any[]} */ (thing));
|
||||
const population = populated_keys.length;
|
||||
const d = String(thing.length).length;
|
||||
|
||||
const hole_cost = thing.length + 2;
|
||||
const sparse_cost = (25 + d) + population * (d + 2);
|
||||
|
||||
if (hole_cost > sparse_cost) {
|
||||
const entries = populated_keys
|
||||
.map((k) => `${k}:${stringify(thing[k])}`)
|
||||
.join(',');
|
||||
return `Object.assign(Array(${thing.length}),{${entries}})`;
|
||||
}
|
||||
|
||||
// Re-process this index as a hole in the array literal
|
||||
has_holes = true;
|
||||
i -= 1;
|
||||
}
|
||||
// else: already decided on array literal, hole is just an empty slot
|
||||
// (the comma separator is all we need — no content for this position)
|
||||
}
|
||||
|
||||
const tail = thing.length === 0 || thing.length - 1 in thing ? '' : ',';
|
||||
return `[${members.join(',')}${tail}]`;
|
||||
return result + tail + ']';
|
||||
}
|
||||
|
||||
case 'Set':
|
||||
case 'Map':
|
||||
|
||||
+30
@@ -116,3 +116,33 @@ const is_identifier = /^[a-zA-Z_$][a-zA-Z_$0-9]*$/;
|
||||
export function stringify_key(key) {
|
||||
return is_identifier.test(key) ? '.' + key : '[' + JSON.stringify(key) + ']';
|
||||
}
|
||||
|
||||
/** @param {string} s */
|
||||
function is_valid_array_index(s) {
|
||||
if (s.length === 0) return false;
|
||||
if (s.length > 1 && s.charCodeAt(0) === 48) return false; // leading zero
|
||||
for (let i = 0; i < s.length; i++) {
|
||||
const c = s.charCodeAt(i);
|
||||
if (c < 48 || c > 57) return false;
|
||||
}
|
||||
// by this point we know it's a string of digits, but it has to be within the range of valid array indices
|
||||
const n = +s;
|
||||
if (n >= 2 ** 32 - 1) return false;
|
||||
if (n < 0) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds the populated indices of an array.
|
||||
* @param {unknown[]} array
|
||||
*/
|
||||
export function valid_array_indices(array) {
|
||||
const keys = Object.keys(array);
|
||||
for (var i = keys.length - 1; i >= 0; i--) {
|
||||
if (is_valid_array_index(keys[i])) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
keys.length = i + 1;
|
||||
return keys;
|
||||
}
|
||||
|
||||
+2
-2
@@ -78,8 +78,8 @@ createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
|
||||
|
||||
// ## Pre-release Version Identifier
|
||||
// A numeric identifier, or a non-numeric identifier.
|
||||
// Non-numberic identifiers include numberic identifiers but can be longer.
|
||||
// Therefore non-numberic identifiers must go first.
|
||||
// Non-numeric identifiers include numeric identifiers but can be longer.
|
||||
// Therefore non-numeric identifiers must go first.
|
||||
|
||||
createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]
|
||||
}|${src[t.NUMERICIDENTIFIER]})`)
|
||||
|
||||
+4
-4
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "semver",
|
||||
"version": "7.7.3",
|
||||
"version": "7.7.4",
|
||||
"description": "The semantic version parser used by npm.",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
@@ -14,8 +14,8 @@
|
||||
"eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\""
|
||||
},
|
||||
"devDependencies": {
|
||||
"@npmcli/eslint-config": "^5.0.0",
|
||||
"@npmcli/template-oss": "4.25.1",
|
||||
"@npmcli/eslint-config": "^6.0.0",
|
||||
"@npmcli/template-oss": "4.29.0",
|
||||
"benchmark": "^2.1.4",
|
||||
"tap": "^16.0.0"
|
||||
},
|
||||
@@ -52,7 +52,7 @@
|
||||
"author": "GitHub Inc.",
|
||||
"templateOSS": {
|
||||
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
|
||||
"version": "4.25.1",
|
||||
"version": "4.29.0",
|
||||
"engines": ">=10",
|
||||
"distPaths": [
|
||||
"classes/",
|
||||
|
||||
+2
-2
@@ -1,9 +1,9 @@
|
||||
export { u as useHead, a as useHeadSafe, b as useSeoMeta, c as useServerHead, d as useServerHeadSafe, e as useServerSeoMeta } from './shared/unhead.BPM0-cfG.mjs';
|
||||
export { c as createHeadCore, a as createUnhead } from './shared/unhead.CGCfDSEL.mjs';
|
||||
export { c as createHeadCore, a as createUnhead } from './shared/unhead.BFfcxOoW.mjs';
|
||||
export { u as useScript } from './shared/unhead.B578PsDV.mjs';
|
||||
import './shared/unhead.CApf5sj3.mjs';
|
||||
import './shared/unhead.DQc16pHI.mjs';
|
||||
import './shared/unhead.yem5I2v_.mjs';
|
||||
import 'hookable';
|
||||
import './shared/unhead.CYpwL2hc.mjs';
|
||||
import './shared/unhead.eK9_7LaY.mjs';
|
||||
import './shared/unhead.CbpEuj3y.mjs';
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
import { a as createUnhead } from './shared/unhead.CGCfDSEL.mjs';
|
||||
import { a as createUnhead } from './shared/unhead.BFfcxOoW.mjs';
|
||||
import { T as TagsWithInnerContent, S as SelfClosingTags } from './shared/unhead.yem5I2v_.mjs';
|
||||
import { parseHtmlForUnheadExtraction, applyHeadToHtml, parseHtmlForIndexes } from './parser.mjs';
|
||||
import 'hookable';
|
||||
import './shared/unhead.CYpwL2hc.mjs';
|
||||
import './shared/unhead.eK9_7LaY.mjs';
|
||||
import './shared/unhead.CbpEuj3y.mjs';
|
||||
|
||||
// @__NO_SIDE_EFFECTS__
|
||||
|
||||
Generated
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
||||
import { createHooks } from 'hookable';
|
||||
import { n as normalizeEntryToTags, d as dedupeKey, i as isMetaArrayDupeKey } from './unhead.CYpwL2hc.mjs';
|
||||
import { n as normalizeEntryToTags, d as dedupeKey, i as isMetaArrayDupeKey } from './unhead.eK9_7LaY.mjs';
|
||||
import { t as tagWeight, s as sortTags } from './unhead.CbpEuj3y.mjs';
|
||||
import { c as UsesMergeStrategy, V as ValidHeadTags } from './unhead.yem5I2v_.mjs';
|
||||
|
||||
Generated
Vendored
+4
@@ -19,6 +19,10 @@ function dedupeKey(tag) {
|
||||
return name;
|
||||
if (name === "link" && props.rel === "canonical")
|
||||
return "canonical";
|
||||
const altKey = props.hreflang || props.type;
|
||||
if (name === "link" && props.rel === "alternate" && altKey) {
|
||||
return `alternate:${altKey}`;
|
||||
}
|
||||
if (props.charset)
|
||||
return "charset";
|
||||
if (tag.tag === "meta") {
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
export { D as DupeableTags, H as HasElementTags, M as MetaTagsArrayable, b as ScriptNetworkEvents, S as SelfClosingTags, a as TagConfigKeys, T as TagsWithInnerContent, U as UniqueTags, c as UsesMergeStrategy, V as ValidHeadTags } from './shared/unhead.yem5I2v_.mjs';
|
||||
export { d as dedupeKey, h as hashTag, i as isMetaArrayDupeKey, n as normalizeEntryToTags, a as normalizeProps, w as walkResolver } from './shared/unhead.CYpwL2hc.mjs';
|
||||
export { d as dedupeKey, h as hashTag, i as isMetaArrayDupeKey, n as normalizeEntryToTags, a as normalizeProps, w as walkResolver } from './shared/unhead.eK9_7LaY.mjs';
|
||||
export { r as resolveMetaKeyType, a as resolveMetaKeyValue, b as resolvePackedMetaObjectValue, u as unpackMeta } from './shared/unhead.DQc16pHI.mjs';
|
||||
export { s as sortTags, t as tagWeight } from './shared/unhead.CbpEuj3y.mjs';
|
||||
export { p as processTemplateParams } from './shared/unhead.BYvz9V1x.mjs';
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "unhead",
|
||||
"type": "module",
|
||||
"version": "2.1.2",
|
||||
"version": "2.1.4",
|
||||
"description": "Full-stack <head> manager built for any framework.",
|
||||
"author": {
|
||||
"name": "Harlan Wilton",
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
.nitro/vue@3.5.27
|
||||
.nitro/vue@3.5.28
|
||||
+1
File diff suppressed because one or more lines are too long
+94
@@ -0,0 +1,94 @@
|
||||
{
|
||||
"name": "wavesurfer.js",
|
||||
"version": "7.12.1",
|
||||
"license": "BSD-3-Clause",
|
||||
"author": "katspaugh",
|
||||
"description": "Audio waveform player",
|
||||
"homepage": "https://wavesurfer.xyz",
|
||||
"keywords": [
|
||||
"waveform",
|
||||
"spectrogram",
|
||||
"audio",
|
||||
"player",
|
||||
"music",
|
||||
"linguistics"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git@github.com:katspaugh/wavesurfer.js.git"
|
||||
},
|
||||
"type": "module",
|
||||
"files": [
|
||||
"dist"
|
||||
],
|
||||
"main": "./dist/wavesurfer.js",
|
||||
"unpkg": "./dist/wavesurfer.min.js",
|
||||
"module": "./dist/wavesurfer.js",
|
||||
"browser": "./dist/wavesurfer.js",
|
||||
"types": "./dist/wavesurfer.d.ts",
|
||||
"exports": {
|
||||
".": {
|
||||
"import": "./dist/wavesurfer.esm.js",
|
||||
"types": "./dist/wavesurfer.d.ts",
|
||||
"require": "./dist/wavesurfer.cjs"
|
||||
},
|
||||
"./dist/plugins/*.js": {
|
||||
"import": "./dist/plugins/*.esm.js",
|
||||
"types": "./dist/plugins/*.d.ts",
|
||||
"require": "./dist/plugins/*.cjs"
|
||||
},
|
||||
"./plugins/*": {
|
||||
"import": "./dist/plugins/*.esm.js",
|
||||
"types": "./dist/plugins/*.d.ts",
|
||||
"require": "./dist/plugins/*.cjs"
|
||||
},
|
||||
"./dist/*": {
|
||||
"import": "./dist/*",
|
||||
"types": "./dist/*.d.ts",
|
||||
"require": "./dist/*.cjs"
|
||||
},
|
||||
"./dist/plugins/*.esm.js": {
|
||||
"import": "./dist/plugins/*.esm.js",
|
||||
"types": "./dist/plugins/*.d.ts",
|
||||
"require": "./dist/plugins/*.cjs"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"clean": "node ./scripts/clean.cjs",
|
||||
"build:dev": "tsc -w --target ESNext",
|
||||
"build": "npm run clean && tsc && rollup -c",
|
||||
"prepublishOnly": "npm run build",
|
||||
"lint": "eslint \"src/**/*.ts\" --fix",
|
||||
"lint:report": "eslint \"src/**/*.ts\" --output-file eslint_report.json --format json",
|
||||
"prettier": "prettier -w '**/*.{js,ts,css}' --ignore-path .gitignore",
|
||||
"make-plugin": "./scripts/plugin.sh",
|
||||
"cypress": "cypress open --e2e",
|
||||
"cypress:canary": "cypress open --e2e -b chrome:canary",
|
||||
"test": "cypress run --browser chrome",
|
||||
"test:unit": "jest --coverage",
|
||||
"serve": "npx live-server --port=9090 --no-browser --ignore='.*,src,cypress,scripts'",
|
||||
"start": "npm run build:dev & npm run serve"
|
||||
},
|
||||
"packageManager": "yarn@1.22.22",
|
||||
"devDependencies": {
|
||||
"@rollup/plugin-terser": "^0.4.4",
|
||||
"@rollup/plugin-typescript": "^12.1.1",
|
||||
"@types/jest": "^29.5.2",
|
||||
"@typescript-eslint/eslint-plugin": "^8.43.0",
|
||||
"@typescript-eslint/parser": "^8.43.0",
|
||||
"cypress": "^13.16.1",
|
||||
"cypress-image-snapshot": "^4.0.1",
|
||||
"eslint": "^9.35.0",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-prettier": "^5.2.1",
|
||||
"glob": "^11.0.0",
|
||||
"jest": "^29.7.0",
|
||||
"jest-environment-jsdom": "^29.7.0",
|
||||
"prettier": "^3.4.2",
|
||||
"rollup": "^4.50.1",
|
||||
"rollup-plugin-dts": "^6.1.0",
|
||||
"rollup-plugin-web-worker-loader": "^1.7.0",
|
||||
"ts-jest": "^29.1.1",
|
||||
"typescript": "^5.9.2"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user