From 326b32932cf81ba01005b2757268321460f477cb Mon Sep 17 00:00:00 2001 From: 7nik Date: Tue, 13 May 2025 03:04:48 +0300 Subject: [PATCH 1/3] fix: more frequently update `bind:buffered` to actual value (#15874) * fix: more frequently update `bind:buffered` to actual value * small tweak --------- Co-authored-by: 7nik Co-authored-by: Rich Harris --- .changeset/short-impalas-exist.md | 5 +++++ .../client/dom/elements/bindings/media.js | 18 +++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 .changeset/short-impalas-exist.md diff --git a/.changeset/short-impalas-exist.md b/.changeset/short-impalas-exist.md new file mode 100644 index 000000000000..a1f9120c8f68 --- /dev/null +++ b/.changeset/short-impalas-exist.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: more frequently update `bind:buffered` to actual value diff --git a/packages/svelte/src/internal/client/dom/elements/bindings/media.js b/packages/svelte/src/internal/client/dom/elements/bindings/media.js index 30a8dac1afec..f96ee0598969 100644 --- a/packages/svelte/src/internal/client/dom/elements/bindings/media.js +++ b/packages/svelte/src/internal/client/dom/elements/bindings/media.js @@ -62,7 +62,23 @@ export function bind_current_time(media, get, set = get) { * @param {(array: Array<{ start: number; end: number }>) => void} set */ export function bind_buffered(media, set) { - listen(media, ['loadedmetadata', 'progress'], () => set(time_ranges_to_array(media.buffered))); + /** @type {{ start: number; end: number; }[]} */ + var current; + + // `buffered` can update without emitting any event, so we check it on various events. + // By specs, `buffered` always returns a new object, so we have to compare deeply. + listen(media, ['loadedmetadata', 'progress', 'timeupdate', 'seeking'], () => { + var ranges = media.buffered; + + if ( + !current || + current.length !== ranges.length || + current.some((range, i) => ranges.start(i) !== range.start || ranges.end(i) !== range.end) + ) { + current = time_ranges_to_array(ranges); + set(current); + } + }); } /** From 3bb1af9677ad145a5a048311090b3bada54aef12 Mon Sep 17 00:00:00 2001 From: 7nik Date: Tue, 13 May 2025 03:05:15 +0300 Subject: [PATCH 2/3] fix: proxify the value in assignment shorthands to the private field (#15862) Co-authored-by: 7nik --- .changeset/shaggy-toys-arrive.md | 5 ++++ packages/svelte/src/compiler/utils/ast.js | 4 ++- .../_config.js | 20 +++++++++++++ .../main.svelte | 28 +++++++++++++++++++ 4 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 .changeset/shaggy-toys-arrive.md create mode 100644 packages/svelte/tests/runtime-runes/samples/class-private-fields-assignment-shorthand/_config.js create mode 100644 packages/svelte/tests/runtime-runes/samples/class-private-fields-assignment-shorthand/main.svelte diff --git a/.changeset/shaggy-toys-arrive.md b/.changeset/shaggy-toys-arrive.md new file mode 100644 index 000000000000..440fa042c99a --- /dev/null +++ b/.changeset/shaggy-toys-arrive.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: proxify the value in assignment shorthands to the private field diff --git a/packages/svelte/src/compiler/utils/ast.js b/packages/svelte/src/compiler/utils/ast.js index 108f4eff6414..23a95a102650 100644 --- a/packages/svelte/src/compiler/utils/ast.js +++ b/packages/svelte/src/compiler/utils/ast.js @@ -580,5 +580,7 @@ export function build_assignment_value(operator, left, right) { return operator === '=' ? right : // turn something like x += 1 into x = x + 1 - b.binary(/** @type {ESTree.BinaryOperator} */ (operator.slice(0, -1)), left, right); + ['||=', '&&=', '??='].includes(operator) + ? b.logical(/** @type {ESTree.LogicalOperator} */ (operator.slice(0, -1)), left, right) + : b.binary(/** @type {ESTree.BinaryOperator} */ (operator.slice(0, -1)), left, right); } diff --git a/packages/svelte/tests/runtime-runes/samples/class-private-fields-assignment-shorthand/_config.js b/packages/svelte/tests/runtime-runes/samples/class-private-fields-assignment-shorthand/_config.js new file mode 100644 index 000000000000..0fdeabfe0b8e --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/class-private-fields-assignment-shorthand/_config.js @@ -0,0 +1,20 @@ +import { flushSync } from 'svelte'; +import { test } from '../../test'; + +export default test({ + async test({ assert, target }) { + const btn = target.querySelector('button'); + + btn?.click(); + flushSync(); + assert.htmlEqual( + target.innerHTML, + ` + +

a:1

+

b:2

+

c:3

+ ` + ); + } +}); diff --git a/packages/svelte/tests/runtime-runes/samples/class-private-fields-assignment-shorthand/main.svelte b/packages/svelte/tests/runtime-runes/samples/class-private-fields-assignment-shorthand/main.svelte new file mode 100644 index 000000000000..746f22b1e618 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/class-private-fields-assignment-shorthand/main.svelte @@ -0,0 +1,28 @@ + + + + +{#key 1}

a:{counter.a}

{/key} +{#key 2}

b:{counter.b}

{/key} +{#key 3}

c:{counter.c}

{/key} From 77bdf249ffcd6b08765d3bf05da577d1223f0366 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 20:29:01 -0400 Subject: [PATCH 3/3] Version Packages (#15903) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/shaggy-toys-arrive.md | 5 ----- .changeset/short-impalas-exist.md | 5 ----- packages/svelte/CHANGELOG.md | 8 ++++++++ packages/svelte/package.json | 2 +- packages/svelte/src/version.js | 2 +- 5 files changed, 10 insertions(+), 12 deletions(-) delete mode 100644 .changeset/shaggy-toys-arrive.md delete mode 100644 .changeset/short-impalas-exist.md diff --git a/.changeset/shaggy-toys-arrive.md b/.changeset/shaggy-toys-arrive.md deleted file mode 100644 index 440fa042c99a..000000000000 --- a/.changeset/shaggy-toys-arrive.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'svelte': patch ---- - -fix: proxify the value in assignment shorthands to the private field diff --git a/.changeset/short-impalas-exist.md b/.changeset/short-impalas-exist.md deleted file mode 100644 index a1f9120c8f68..000000000000 --- a/.changeset/short-impalas-exist.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'svelte': patch ---- - -fix: more frequently update `bind:buffered` to actual value diff --git a/packages/svelte/CHANGELOG.md b/packages/svelte/CHANGELOG.md index 95378823f5df..4ea42a3da273 100644 --- a/packages/svelte/CHANGELOG.md +++ b/packages/svelte/CHANGELOG.md @@ -1,5 +1,13 @@ # svelte +## 5.28.5 + +### Patch Changes + +- fix: proxify the value in assignment shorthands to the private field ([#15862](https://github.com/sveltejs/svelte/pull/15862)) + +- fix: more frequently update `bind:buffered` to actual value ([#15874](https://github.com/sveltejs/svelte/pull/15874)) + ## 5.28.4 ### Patch Changes diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 92d44ec155d0..c3255e30cd29 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -2,7 +2,7 @@ "name": "svelte", "description": "Cybernetically enhanced web apps", "license": "MIT", - "version": "5.28.4", + "version": "5.28.5", "type": "module", "types": "./types/index.d.ts", "engines": { diff --git a/packages/svelte/src/version.js b/packages/svelte/src/version.js index d933675d3676..3ba616e9623a 100644 --- a/packages/svelte/src/version.js +++ b/packages/svelte/src/version.js @@ -4,5 +4,5 @@ * The current version, as set in package.json. * @type {string} */ -export const VERSION = '5.28.4'; +export const VERSION = '5.28.5'; export const PUBLIC_VERSION = '5'; pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy