From d76ae0015414759841076ae52869839b41d6b264 Mon Sep 17 00:00:00 2001 From: Estelle Weyl Date: Tue, 10 Mar 2026 10:35:31 +0100 Subject: [PATCH 1/6] Add examples: CSS initial and inherit (#43309) * Add examples: initial and inherit * see also * Apply suggestions from code review Co-authored-by: Dipika Bhattacharya * Apply suggestions from code review * Update files/en-us/web/css/reference/values/inherit/index.md Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update files/en-us/web/css/reference/values/inherit/index.md * Apply suggestions from code review Co-authored-by: Dipika Bhattacharya --------- Co-authored-by: Dipika Bhattacharya Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .../web/css/reference/values/inherit/index.md | 136 ++++++++++++++++-- .../web/css/reference/values/initial/index.md | 27 ++-- 2 files changed, 138 insertions(+), 25 deletions(-) diff --git a/files/en-us/web/css/reference/values/inherit/index.md b/files/en-us/web/css/reference/values/inherit/index.md index c21fe30ce70a0d2..fc8a4040eb69e9c 100644 --- a/files/en-us/web/css/reference/values/inherit/index.md +++ b/files/en-us/web/css/reference/values/inherit/index.md @@ -15,29 +15,139 @@ For [inherited properties](/en-US/docs/Web/CSS/Guides/Cascade/Inheritance#inheri ## Examples -### Exclude selected elements from a rule +### Basic usage + +In this example, we demonstrate the effect of the `inherit` keyword by comparing two paragraphs with nested elements: the inline elements in one use their browser default styles, while those in the other inherit individual property values from their parent. + +#### HTML + +We include two identical paragraphs with several inline elements. + +```html +

+ This paragraph has emphasized text, strong text, and + a link to top. +

+

+ This paragraph has emphasized text, strong text, and + a link to top. +

+``` + +#### CSS + +We don't style the inline elements in the first paragraph, so they use their default browser styles. +In the second paragraph, we set properties on each inline element to `inherit`, so they get the computed styles from the parent {{htmlelement("p")}} element. ```css -/* Make second-level headers green */ -h2 { - color: green; +p:nth-of-type(2) { + a { + text-decoration: inherit; + color: inherit; + } + em { + font-style: inherit; + } + strong { + font-weight: inherit; + } } +``` -/* Leave those in the sidebar alone so they use their parent's color */ -#sidebar h2 { - color: inherit; +#### Result + +{{EmbedLiveSample("Basic usage", "100%", 100)}} + +### Inheriting all property values + +In this example, we use the same HTML as in the previous example to demonstrate the issues that can occur when the `inherit` keyword is applied to all properties. + +```html hidden +

+ This paragraph has emphasized text, strong text, and + a link to top. +

+

+ This paragraph has emphasized text, strong text, and + a link to top. +

+``` + +#### CSS + +In the second paragraph, instead of setting individual properties to `inherit`, we set the {{cssxref("all")}} property on all inline elements to `inherit`, so they all get computed styles from their parent {{htmlelement("p")}}. + +```css +p:nth-of-type(2) > * { + all: inherit; } ``` -In this example, the `h2` elements inside the sidebar might be different colors. For example, consider one of them that would by the child of a `div` matched by the rule: +#### Result + +{{EmbedLiveSample("Inheriting all property values", "100%", 270)}} + +Notice how the inline element inherit all the properties of the parent `

`, including the paragraph's block-level {{cssxref("display")}} value. This is likely not the effect you would want. + +### Excluding selected elements from a rule + +This example demonstrates how the `inherit` keyword can be used to exclude selected elements from a color rule, allowing them to use their parent's color instead. + +#### HTML + +We include some semantically structured content. + +```html +

+

This is my blog

+

This is the subtitle of my blog in the HEADER

+

My blog is not very interesting

+
+
+

This first blog post in MAIN

+

I really have nothing to say.

+
+

This second blog post is in a SECTION within MAIN

+

+ It is in a section because it is important even though it isn't the least + bit interesting. +

+
+
+
+

Contact in FOOTER

+

Find me on Mastodon

+
+

Copyright in SECTION within FOOTER

+

1996

+
+
+``` + +#### CSS + +We set the text color of the `
` element to `blue` and all `

` elements to `green` in `monospace` font. The `

` elements inside a `
` are set to `inherit` their parent's text color. ```css -div#current { +main { color: blue; } + +h2 { + color: green; + font-family: monospace; +} + +section h2 { + color: inherit; +} ``` -Then, it would be blue. +#### Result + +{{EmbedLiveSample("Exclude selected elements from a rule", "100%", 470)}} + +The `

` elements are all `green`. However, if they are nested in a {{htmlelement("section")}} element, they inherit their color from their parent, which is `blue` within {{htmlelement("main")}}. The default text color is black otherwise. ## Specifications @@ -49,9 +159,5 @@ Then, it would be blue. ## See also +- {{cssxref("initial")}}, {{cssxref("revert")}}, {{cssxref("revert-layer")}}, and {{cssxref("unset")}} keywords - [Inheritance](/en-US/docs/Web/CSS/Guides/Cascade/Inheritance) -- Use the {{cssxref("initial")}} keyword to set a property to its initial value. -- Use the {{cssxref("revert")}} keyword to reset a property to the value established by the user-agent stylesheet (or by user styles, if any exist). -- Use the {{cssxref("revert-layer")}} keyword to reset a property to the value established in a previous cascade layer. -- Use the {{cssxref("unset")}} keyword to set a property to its inherited value if it inherits or to its initial value if not. -- The {{cssxref("all")}} property lets you reset all properties to their initial, inherited, reverted, or unset state at once. diff --git a/files/en-us/web/css/reference/values/initial/index.md b/files/en-us/web/css/reference/values/initial/index.md index 781515ee53a2f60..5e842846470880a 100644 --- a/files/en-us/web/css/reference/values/initial/index.md +++ b/files/en-us/web/css/reference/values/initial/index.md @@ -12,27 +12,36 @@ On [inherited properties](/en-US/docs/Web/CSS/Guides/Cascade/Inheritance#inherit ## Examples -### Using initial to reset color for an element +### Basic usage + +In this example, we use the `initial` keyword to reset an element's {{cssxref("color")}} and {{cssxref("font-size")}} property values. #### HTML ```html

- This text is red. - This text is in the initial color (typically black). - This is red again. + This text is red and large. + This text is in the initial color (typically black) and initial size + (typically 16px). + This is red and large again.

``` #### CSS +We set `color` and `font-size` on the `

` element, then set those properties to `initial` on the {{htmlelement("em")}} element to reset them. + ```css p { color: red; + font-size: 2rem; } em { color: initial; + font-size: initial; } ``` @@ -40,7 +49,7 @@ em { {{EmbedLiveSample('Using_initial_to_reset_color_for_an_element')}} -With the `initial` keyword in this example, `color` value on the `em` element is restored to the initial value of [`color`](/en-US/docs/Web/CSS/Reference/Properties/color#formal_definition), as defined in the specification. +With the `initial` keyword in this example, the `color` and `font-size` values on the `em` element are restored to the initial values for [`color`](/en-US/docs/Web/CSS/Reference/Properties/color#formal_definition) and [`font-size`](/en-US/docs/Web/CSS/Reference/Properties/font-size#formal_definition), respectively. ## Specifications @@ -52,8 +61,6 @@ With the `initial` keyword in this example, `color` value on the `em` element is ## See also -- Use the {{cssxref("inherit")}} keyword to make an element's property the same as its parent. -- Use the {{cssxref("revert")}} keyword to reset a property to the value established by the user-agent stylesheet (or by user styles, if any exist). -- Use the {{cssxref("revert-layer")}} keyword to reset a property to the value established in a previous cascade layer. -- Use the {{cssxref("unset")}} keyword to set a property to its inherited value if it inherits or to its initial value if not. -- The {{cssxref("all")}} property lets you reset all properties to their initial, inherited, reverted, or unset state at once. +- {{cssxref("inherit")}}, {{cssxref("revert")}}, {{cssxref("revert-layer")}}, and {{cssxref("unset")}} keywords +- {{cssxref("all")}} +- [Inheritance](/en-US/docs/Web/CSS/Guides/Cascade/Inheritance) From 4be29f6917b698805c919c5d290359bc13c62384 Mon Sep 17 00:00:00 2001 From: Vadim Makeev Date: Tue, 10 Mar 2026 12:38:20 +0200 Subject: [PATCH 2/6] Document ManagedMediaSource, ManagedSourceBuffer, and BufferedChangeEvent APIs (#43281) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Document ManagedMediaSource, ManagedSourceBuffer, and BufferedChangeEvent APIs * Apply suggestions from code review Co-authored-by: Chris Mills * Deduplicate the examples * Normalize the type description * Move true to the value desc * Move demo to dom-examples * Add a note about Safari’s behavior * Update index.md Co-authored-by: Chris Mills * Make demo taller --------- Co-authored-by: Chris Mills --- .../bufferedchangeevent/addedranges/index.md | 34 ++++++ .../bufferedchangeevent/index.md | 65 +++++++++++ .../web/api/bufferedchangeevent/index.md | 79 ++++++++++++++ .../removedranges/index.md | 76 +++++++++++++ .../endstreaming_event/index.md | 83 ++++++++++++++ .../en-us/web/api/managedmediasource/index.md | 103 ++++++++++++++++++ .../managedmediasource/index.md | 72 ++++++++++++ .../startstreaming_event/index.md | 73 +++++++++++++ .../api/managedmediasource/streaming/index.md | 66 +++++++++++ .../bufferedchange_event/index.md | 96 ++++++++++++++++ .../web/api/managedsourcebuffer/index.md | 82 ++++++++++++++ .../api/media_source_extensions_api/index.md | 6 + 12 files changed, 835 insertions(+) create mode 100644 files/en-us/web/api/bufferedchangeevent/addedranges/index.md create mode 100644 files/en-us/web/api/bufferedchangeevent/bufferedchangeevent/index.md create mode 100644 files/en-us/web/api/bufferedchangeevent/index.md create mode 100644 files/en-us/web/api/bufferedchangeevent/removedranges/index.md create mode 100644 files/en-us/web/api/managedmediasource/endstreaming_event/index.md create mode 100644 files/en-us/web/api/managedmediasource/index.md create mode 100644 files/en-us/web/api/managedmediasource/managedmediasource/index.md create mode 100644 files/en-us/web/api/managedmediasource/startstreaming_event/index.md create mode 100644 files/en-us/web/api/managedmediasource/streaming/index.md create mode 100644 files/en-us/web/api/managedsourcebuffer/bufferedchange_event/index.md create mode 100644 files/en-us/web/api/managedsourcebuffer/index.md diff --git a/files/en-us/web/api/bufferedchangeevent/addedranges/index.md b/files/en-us/web/api/bufferedchangeevent/addedranges/index.md new file mode 100644 index 000000000000000..58c619e997492db --- /dev/null +++ b/files/en-us/web/api/bufferedchangeevent/addedranges/index.md @@ -0,0 +1,34 @@ +--- +title: "BufferedChangeEvent: addedRanges property" +short-title: addedRanges +slug: Web/API/BufferedChangeEvent/addedRanges +page-type: web-api-instance-property +browser-compat: api.BufferedChangeEvent.addedRanges +--- + +{{APIRef("Media Source Extensions")}}{{AvailableInWorkers("window_and_dedicated")}} + +The **`addedRanges`** read-only property of the {{domxref("BufferedChangeEvent")}} interface returns a {{domxref("TimeRanges")}} object representing the time ranges that were added to the associated {{domxref("ManagedSourceBuffer")}}. These are the ranges added between the last `updatestart` and `updateend` events, during the most recent run of the coded frame processing algorithm. + +## Value + +A {{domxref("TimeRanges")}} object. + +## Examples + +See the main {{domxref("BufferedChangeEvent")}} page for an example showing the use of `addedRanges`. + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} + +## See also + +- {{domxref("BufferedChangeEvent.removedRanges")}} +- {{domxref("ManagedSourceBuffer.bufferedchange_event", "bufferedchange")}} event +- {{domxref("ManagedSourceBuffer")}} +- {{domxref("TimeRanges")}} diff --git a/files/en-us/web/api/bufferedchangeevent/bufferedchangeevent/index.md b/files/en-us/web/api/bufferedchangeevent/bufferedchangeevent/index.md new file mode 100644 index 000000000000000..ed658cba664b76b --- /dev/null +++ b/files/en-us/web/api/bufferedchangeevent/bufferedchangeevent/index.md @@ -0,0 +1,65 @@ +--- +title: "BufferedChangeEvent: BufferedChangeEvent() constructor" +short-title: BufferedChangeEvent() +slug: Web/API/BufferedChangeEvent/BufferedChangeEvent +page-type: web-api-constructor +browser-compat: api.BufferedChangeEvent.BufferedChangeEvent +--- + +{{APIRef("Media Source Extensions")}}{{AvailableInWorkers("window_and_dedicated")}} + +The **`BufferedChangeEvent()`** constructor of the {{domxref("BufferedChangeEvent")}} interface creates a new `BufferedChangeEvent` object instance. + +## Syntax + +```js-nolint +new BufferedChangeEvent(type, options) +``` + +### Parameters + +- `type` + - : A string representing the type of event. In the case of `BufferedChangeEvent` this is always `bufferedchange`. +- `options` {{optional_inline}} + - : An object that, _in addition to the properties defined in {{domxref("Event/Event", "Event()")}}_, has the following properties: + + > [!NOTE] + > Although the spec marks `options` as optional, Safari (currently the only implementation) throws a `TypeError` if the argument is omitted entirely. Passing an empty object (`{}`) works correctly. + - `addedRanges` {{optional_inline}} + - : A {{domxref("TimeRanges")}} object representing the time ranges added to the buffer. + - `removedRanges` {{optional_inline}} + - : A {{domxref("TimeRanges")}} object representing the time ranges removed from the buffer. + +### Return value + +A new {{domxref("BufferedChangeEvent")}} object instance. + +## Examples + +### Inspecting a bufferedchange event + +The `BufferedChangeEvent()` constructor isn't generally called manually. When a {{domxref("ManagedSourceBuffer")}}'s `bufferedchange` event fires (meaning its buffered ranges change), the browser will construct a `BufferedChangeEvent` object to use as the event object. + +The event's properties describe what changed: + +```js +sourceBuffer.addEventListener("bufferedchange", (event) => { + console.log(event instanceof BufferedChangeEvent); // true + console.log(event.type); // "bufferedchange" + console.log(event.addedRanges); // TimeRanges — ranges added to the buffer + console.log(event.removedRanges); // TimeRanges — ranges removed from the buffer +}); +``` + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} + +## See also + +- {{domxref("ManagedSourceBuffer")}} +- {{domxref("ManagedSourceBuffer.bufferedchange_event", "bufferedchange")}} event diff --git a/files/en-us/web/api/bufferedchangeevent/index.md b/files/en-us/web/api/bufferedchangeevent/index.md new file mode 100644 index 000000000000000..4d4da18e72919c3 --- /dev/null +++ b/files/en-us/web/api/bufferedchangeevent/index.md @@ -0,0 +1,79 @@ +--- +title: BufferedChangeEvent +slug: Web/API/BufferedChangeEvent +page-type: web-api-interface +browser-compat: api.BufferedChangeEvent +--- + +{{APIRef("Media Source Extensions")}}{{AvailableInWorkers("window_and_dedicated")}} + +The **`BufferedChangeEvent`** interface of the {{domxref("Media Source Extensions API", "Media Source Extensions API", "", "nocode")}} represents the event object for the {{domxref("ManagedSourceBuffer.bufferedchange_event", "bufferedchange")}} event fired on a {{domxref("ManagedSourceBuffer")}}. This event is fired whenever the buffered ranges of the `ManagedSourceBuffer` change, for example as a result of {{domxref("SourceBuffer.appendBuffer", "appendBuffer()")}}, {{domxref("SourceBuffer.remove", "remove()")}}, or {{domxref("MediaSource.endOfStream", "endOfStream()")}} calls, or when the user agent runs the memory cleanup algorithm. + +{{InheritanceDiagram}} + +## Constructor + +- {{domxref("BufferedChangeEvent.BufferedChangeEvent", "BufferedChangeEvent()")}} + - : Creates and returns a new `BufferedChangeEvent` object. + +## Instance properties + +_Also inherits properties from its parent interface, {{domxref("Event")}}._ + +- {{domxref("BufferedChangeEvent.addedRanges")}} {{ReadOnlyInline}} + - : A {{domxref("TimeRanges")}} object representing the time ranges that were added to the {{domxref("ManagedSourceBuffer")}}'s buffer. +- {{domxref("BufferedChangeEvent.removedRanges")}} {{ReadOnlyInline}} + - : A {{domxref("TimeRanges")}} object representing the time ranges that were removed from the {{domxref("ManagedSourceBuffer")}}'s buffer. + +## Examples + +### Handling buffered range changes + +This example creates a {{domxref("ManagedMediaSource")}}, attaches it to a {{htmlelement("video")}} element, fetches a fragmented MP4 file, and listens for the `bufferedchange` event. When the event fires, it logs the added time ranges. + +```js +const videoUrl = + "https://mdn.github.io/shared-assets/videos/flower-fragmented.mp4"; +const mediaType = 'video/mp4; codecs="avc1.64001F, mp4a.40.2"'; + +if (ManagedMediaSource.isTypeSupported(mediaType)) { + const video = document.createElement("video"); + const source = new ManagedMediaSource(); + + video.controls = true; + video.disableRemotePlayback = true; + video.src = URL.createObjectURL(source); + document.body.appendChild(video); + + source.addEventListener("sourceopen", async () => { + const sourceBuffer = source.addSourceBuffer(mediaType); + + sourceBuffer.addEventListener("bufferedchange", (event) => { + for (let i = 0; i < event.addedRanges.length; i++) { + console.log( + `Added range: ${event.addedRanges.start(i)} - ${event.addedRanges.end(i)}`, + ); + } + }); + + const response = await fetch(videoUrl); + const data = await response.arrayBuffer(); + sourceBuffer.appendBuffer(data); + }); +} +``` + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} + +## See also + +- {{domxref("ManagedMediaSource")}} +- {{domxref("ManagedSourceBuffer")}} +- {{domxref("MediaSource")}} +- {{domxref("SourceBuffer")}} diff --git a/files/en-us/web/api/bufferedchangeevent/removedranges/index.md b/files/en-us/web/api/bufferedchangeevent/removedranges/index.md new file mode 100644 index 000000000000000..15d70cd2f8aeee8 --- /dev/null +++ b/files/en-us/web/api/bufferedchangeevent/removedranges/index.md @@ -0,0 +1,76 @@ +--- +title: "BufferedChangeEvent: removedRanges property" +short-title: removedRanges +slug: Web/API/BufferedChangeEvent/removedRanges +page-type: web-api-instance-property +browser-compat: api.BufferedChangeEvent.removedRanges +--- + +{{APIRef("Media Source Extensions")}}{{AvailableInWorkers("window_and_dedicated")}} + +The **`removedRanges`** read-only property of the {{domxref("BufferedChangeEvent")}} interface returns a {{domxref("TimeRanges")}} object representing the time ranges that were removed from the associated {{domxref("ManagedSourceBuffer")}}. These are the ranges removed between the last `updatestart` and `updateend` events, during the most recent run of the coded frame removal or coded frame eviction algorithm, or as a consequence of the user agent running the memory cleanup algorithm. + +## Value + +A {{domxref("TimeRanges")}} object. + +## Examples + +### Logging removed ranges on buffer change + +This example creates a {{domxref("ManagedMediaSource")}}, attaches it to a {{htmlelement("video")}} element, fetches a fragmented MP4 file, and then removes a portion of the buffered data. The `bufferedchange` event handler logs any removed time ranges. + +```js +const videoUrl = + "https://mdn.github.io/shared-assets/videos/flower-fragmented.mp4"; +const mediaType = 'video/mp4; codecs="avc1.64001F, mp4a.40.2"'; + +if (ManagedMediaSource.isTypeSupported(mediaType)) { + const video = document.createElement("video"); + const source = new ManagedMediaSource(); + + video.controls = true; + video.disableRemotePlayback = true; + video.src = URL.createObjectURL(source); + document.body.appendChild(video); + + source.addEventListener("sourceopen", async () => { + const sourceBuffer = source.addSourceBuffer(mediaType); + + sourceBuffer.addEventListener("bufferedchange", (event) => { + const removed = event.removedRanges; + for (let i = 0; i < removed.length; i++) { + console.log(`Removed range: ${removed.start(i)}s - ${removed.end(i)}s`); + } + }); + + const response = await fetch(videoUrl); + const data = await response.arrayBuffer(); + sourceBuffer.appendBuffer(data); + + // Once appended, remove the first 5 seconds to trigger removedRanges + sourceBuffer.addEventListener( + "updateend", + () => { + sourceBuffer.remove(0, 5); + }, + { once: true }, + ); + }); +} +``` + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} + +## See also + +- {{domxref("BufferedChangeEvent.addedRanges")}} +- {{domxref("ManagedSourceBuffer.bufferedchange_event", "bufferedchange")}} event +- {{domxref("ManagedSourceBuffer")}} +- {{domxref("TimeRanges")}} diff --git a/files/en-us/web/api/managedmediasource/endstreaming_event/index.md b/files/en-us/web/api/managedmediasource/endstreaming_event/index.md new file mode 100644 index 000000000000000..6320e6b510e11f7 --- /dev/null +++ b/files/en-us/web/api/managedmediasource/endstreaming_event/index.md @@ -0,0 +1,83 @@ +--- +title: "ManagedMediaSource: endstreaming event" +short-title: endstreaming +slug: Web/API/ManagedMediaSource/endstreaming_event +page-type: web-api-event +browser-compat: api.ManagedMediaSource.endstreaming_event +--- + +{{APIRef("Media Source Extensions")}}{{AvailableInWorkers("window_and_dedicated")}} + +The **`endstreaming`** event of the {{domxref("ManagedMediaSource")}} interface is fired when the {{domxref("ManagedMediaSource.streaming", "streaming")}} property changes from `true` to `false`. This indicates that the user agent has enough data buffered to ensure uninterrupted playback, and the application can stop fetching new media segments. + +## Syntax + +Use the event name in methods like {{domxref("EventTarget.addEventListener", "addEventListener()")}}, or set an event handler property. + +```js-nolint +addEventListener("endstreaming", (event) => {}); + +onendstreaming = (event) => {}; +``` + +## Event type + +A generic {{domxref("Event")}}. + +## Examples + +### Pausing fetches in response to endstreaming + +This example creates a {{domxref("ManagedMediaSource")}}, attaches it to a {{htmlelement("video")}} element, and uses the `startstreaming` and `endstreaming` events to control when media segments are fetched. + +```js +const videoUrl = + "https://mdn.github.io/shared-assets/videos/flower-fragmented.mp4"; +const mediaType = 'video/mp4; codecs="avc1.64001F, mp4a.40.2"'; + +if (ManagedMediaSource.isTypeSupported(mediaType)) { + const video = document.createElement("video"); + const source = new ManagedMediaSource(); + + video.controls = true; + video.disableRemotePlayback = true; + video.src = URL.createObjectURL(source); + document.body.appendChild(video); + + let shouldFetch = false; + + source.addEventListener("sourceopen", () => { + const sourceBuffer = source.addSourceBuffer(mediaType); + + source.addEventListener("startstreaming", async () => { + console.log("startstreaming — fetching media data"); + shouldFetch = true; + const response = await fetch(videoUrl); + const data = await response.arrayBuffer(); + if (shouldFetch) { + sourceBuffer.appendBuffer(data); + } + }); + + source.addEventListener("endstreaming", () => { + console.log("endstreaming — enough data buffered"); + shouldFetch = false; + }); + }); +} +``` + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} + +## See also + +- {{domxref("ManagedMediaSource.startstreaming_event", "startstreaming")}} event +- {{domxref("ManagedMediaSource.streaming")}} +- {{domxref("ManagedMediaSource")}} +- {{domxref("MediaSource")}} diff --git a/files/en-us/web/api/managedmediasource/index.md b/files/en-us/web/api/managedmediasource/index.md new file mode 100644 index 000000000000000..4d2c8f0f3a2a7a6 --- /dev/null +++ b/files/en-us/web/api/managedmediasource/index.md @@ -0,0 +1,103 @@ +--- +title: ManagedMediaSource +slug: Web/API/ManagedMediaSource +page-type: web-api-interface +browser-compat: api.ManagedMediaSource +--- + +{{APIRef("Media Source Extensions")}}{{AvailableInWorkers("window_and_dedicated")}} + +The **`ManagedMediaSource`** interface of the {{domxref("Media Source Extensions API", "Media Source Extensions API", "", "nocode")}} is a {{domxref("MediaSource")}} that actively manages its memory content. Unlike a regular `MediaSource`, the user agent can evict content from its {{domxref("ManagedSourceBuffer")}} objects at any time, for reasons such as memory or hardware limitations. This makes it suitable for power-efficient streaming scenarios where the user agent needs more control over buffered media data. + +When {{domxref("MediaSource.addSourceBuffer", "addSourceBuffer()")}} is called on a `ManagedMediaSource`, it creates {{domxref("ManagedSourceBuffer")}} objects (instead of {{domxref("SourceBuffer")}} objects), which fire {{domxref("ManagedSourceBuffer.bufferedchange_event", "bufferedchange")}} events to notify the application when buffered ranges are modified by the user agent. + +> [!NOTE] +> On Safari, `ManagedMediaSource` only activates when remote playback is explicitly disabled on the media element (by setting {{domxref("HTMLMediaElement.disableRemotePlayback")}} to `true`), or when an AirPlay source alternative is provided (for example, an HLS {{htmlelement("source")}} element). Without either of these, the {{domxref("MediaSource.sourceopen_event", "sourceopen")}} event will not fire. + +{{InheritanceDiagram}} + +## Constructor + +- {{domxref("ManagedMediaSource.ManagedMediaSource", "ManagedMediaSource()")}} + - : Creates and returns a new `ManagedMediaSource` object instance with no associated source buffers. + +## Instance properties + +_Also inherits properties from its parent interface, {{domxref("MediaSource")}}._ + +- {{domxref("ManagedMediaSource.streaming")}} {{ReadOnlyInline}} + - : A boolean indicating whether the `ManagedMediaSource` object is currently streaming. When `true`, the application should actively fetch and append media data. When `false`, the application can stop fetching new data. + +## Instance methods + +_Inherits methods from its parent interface, {{domxref("MediaSource")}}._ + +## Events + +_Also inherits events from its parent interface, {{domxref("MediaSource")}}._ + +- {{domxref("ManagedMediaSource.startstreaming_event", "startstreaming")}} + - : Fired when the `ManagedMediaSource`'s {{domxref("ManagedMediaSource.streaming", "streaming")}} property changes from `false` to `true`, meaning the media source has started streaming. +- {{domxref("ManagedMediaSource.endstreaming_event", "endstreaming")}} + - : Fired when the `ManagedMediaSource`'s {{domxref("ManagedMediaSource.streaming", "streaming")}} property changes from `true` to `false`, meaning the media source has stopped streaming. + +## Examples + +### Setting up a managed media source + +The following example sets up a `ManagedMediaSource`, connects it to a {{htmlelement("video")}} element, and listens for the {{domxref("ManagedMediaSource.startstreaming_event", "startstreaming")}} and {{domxref("ManagedMediaSource.endstreaming_event", "endstreaming")}} events to control when media data is fetched. {{domxref("ManagedSourceBuffer.bufferedchange_event", "bufferedchange")}} events are logged below the video. + +```js +const videoUrl = + "https://mdn.github.io/shared-assets/videos/flower-fragmented.mp4"; +const mediaType = 'video/mp4; codecs="avc1.64001F, mp4a.40.2"'; +const video = document.querySelector("video"); + +if (!window.ManagedMediaSource?.isTypeSupported(mediaType)) { + console.log("ManagedMediaSource is not supported in this browser."); +} else { + const source = new ManagedMediaSource(); + video.disableRemotePlayback = true; + video.src = URL.createObjectURL(source); + + source.addEventListener("sourceopen", () => { + const sourceBuffer = source.addSourceBuffer(mediaType); + + sourceBuffer.addEventListener("bufferedchange", (event) => { + for (let i = 0; i < event.addedRanges.length; i++) { + console.log( + `Buffered: ${event.addedRanges.start(i).toFixed(2)}s – ${event.addedRanges.end(i).toFixed(2)}s`, + ); + } + }); + + source.addEventListener("startstreaming", async () => { + console.log("startstreaming — fetching media data…"); + const response = await fetch(videoUrl); + const data = await response.arrayBuffer(); + sourceBuffer.appendBuffer(data); + }); + + source.addEventListener("endstreaming", () => { + console.log("endstreaming — enough data buffered"); + }); + }); +} +``` + +{{EmbedGHLiveSample("dom-examples/media-source-extensions/managed-media-source/", '100%', 470)}} + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} + +## See also + +- {{domxref("MediaSource")}} +- {{domxref("ManagedSourceBuffer")}} +- {{domxref("BufferedChangeEvent")}} +- {{domxref("SourceBuffer")}} diff --git a/files/en-us/web/api/managedmediasource/managedmediasource/index.md b/files/en-us/web/api/managedmediasource/managedmediasource/index.md new file mode 100644 index 000000000000000..bbeae4ab13f1e1b --- /dev/null +++ b/files/en-us/web/api/managedmediasource/managedmediasource/index.md @@ -0,0 +1,72 @@ +--- +title: "ManagedMediaSource: ManagedMediaSource() constructor" +short-title: ManagedMediaSource() +slug: Web/API/ManagedMediaSource/ManagedMediaSource +page-type: web-api-constructor +browser-compat: api.ManagedMediaSource.ManagedMediaSource +--- + +{{APIRef("Media Source Extensions")}}{{AvailableInWorkers("window_and_dedicated")}} + +The **`ManagedMediaSource()`** constructor of the {{domxref("ManagedMediaSource")}} interface constructs and returns a new `ManagedMediaSource` object instance with no associated source buffers. + +## Syntax + +```js-nolint +new ManagedMediaSource() +``` + +### Parameters + +None. + +### Return value + +A new {{domxref("ManagedMediaSource")}} object instance. + +## Examples + +### Creating a ManagedMediaSource and attaching it to a video element + +The following example creates a new `ManagedMediaSource`, attaches it to a {{htmlelement("video")}} element, and uses the {{domxref("ManagedMediaSource.startstreaming_event", "startstreaming")}} event to begin fetching media data. + +```js +const videoUrl = + "https://mdn.github.io/shared-assets/videos/flower-fragmented.mp4"; +const mediaType = 'video/mp4; codecs="avc1.64001F, mp4a.40.2"'; + +if (ManagedMediaSource.isTypeSupported(mediaType)) { + const source = new ManagedMediaSource(); + const video = document.createElement("video"); + + video.controls = true; + video.disableRemotePlayback = true; + video.src = URL.createObjectURL(source); + document.body.appendChild(video); + + source.addEventListener("sourceopen", () => { + const sourceBuffer = source.addSourceBuffer(mediaType); + + source.addEventListener("startstreaming", async () => { + console.log("startstreaming — fetching media data"); + const response = await fetch(videoUrl); + const data = await response.arrayBuffer(); + sourceBuffer.appendBuffer(data); + }); + }); +} +``` + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} + +## See also + +- {{domxref("ManagedMediaSource")}} +- {{domxref("ManagedSourceBuffer")}} +- {{domxref("MediaSource.MediaSource", "MediaSource()")}} diff --git a/files/en-us/web/api/managedmediasource/startstreaming_event/index.md b/files/en-us/web/api/managedmediasource/startstreaming_event/index.md new file mode 100644 index 000000000000000..c18a837fbfee90f --- /dev/null +++ b/files/en-us/web/api/managedmediasource/startstreaming_event/index.md @@ -0,0 +1,73 @@ +--- +title: "ManagedMediaSource: startstreaming event" +short-title: startstreaming +slug: Web/API/ManagedMediaSource/startstreaming_event +page-type: web-api-event +browser-compat: api.ManagedMediaSource.startstreaming_event +--- + +{{APIRef("Media Source Extensions")}}{{AvailableInWorkers("window_and_dedicated")}} + +The **`startstreaming`** event of the {{domxref("ManagedMediaSource")}} interface is fired when the {{domxref("ManagedMediaSource.streaming", "streaming")}} property changes from `false` to `true`. This indicates that the user agent needs more data to ensure uninterrupted playback, and the application should begin fetching and appending media segments. + +## Syntax + +Use the event name in methods like {{domxref("EventTarget.addEventListener", "addEventListener()")}}, or set an event handler property. + +```js-nolint +addEventListener("startstreaming", (event) => {}); + +onstartstreaming = (event) => {}; +``` + +## Event type + +A generic {{domxref("Event")}}. + +## Examples + +### Fetching data in response to startstreaming + +This example creates a {{domxref("ManagedMediaSource")}}, attaches it to a {{htmlelement("video")}} element, and uses the `startstreaming` event to begin fetching and appending media data. + +```js +const videoUrl = + "https://mdn.github.io/shared-assets/videos/flower-fragmented.mp4"; +const mediaType = 'video/mp4; codecs="avc1.64001F, mp4a.40.2"'; + +if (ManagedMediaSource.isTypeSupported(mediaType)) { + const video = document.createElement("video"); + const source = new ManagedMediaSource(); + + video.controls = true; + video.disableRemotePlayback = true; + video.src = URL.createObjectURL(source); + document.body.appendChild(video); + + source.addEventListener("sourceopen", () => { + const sourceBuffer = source.addSourceBuffer(mediaType); + + source.addEventListener("startstreaming", async () => { + console.log("startstreaming — fetching media data"); + const response = await fetch(videoUrl); + const data = await response.arrayBuffer(); + sourceBuffer.appendBuffer(data); + }); + }); +} +``` + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} + +## See also + +- {{domxref("ManagedMediaSource.endstreaming_event", "endstreaming")}} event +- {{domxref("ManagedMediaSource.streaming")}} +- {{domxref("ManagedMediaSource")}} +- {{domxref("MediaSource")}} diff --git a/files/en-us/web/api/managedmediasource/streaming/index.md b/files/en-us/web/api/managedmediasource/streaming/index.md new file mode 100644 index 000000000000000..c27e85b73b5f9ab --- /dev/null +++ b/files/en-us/web/api/managedmediasource/streaming/index.md @@ -0,0 +1,66 @@ +--- +title: "ManagedMediaSource: streaming property" +short-title: streaming +slug: Web/API/ManagedMediaSource/streaming +page-type: web-api-instance-property +browser-compat: api.ManagedMediaSource.streaming +--- + +{{APIRef("Media Source Extensions")}}{{AvailableInWorkers("window_and_dedicated")}} + +The **`streaming`** read-only property of the {{domxref("ManagedMediaSource")}} interface is a boolean indicating whether the application should actively fetch and append media data. + +The value of this property is updated by the user agent's monitoring algorithm. When it changes, the corresponding {{domxref("ManagedMediaSource.startstreaming_event", "startstreaming")}} or {{domxref("ManagedMediaSource.endstreaming_event", "endstreaming")}} event is fired. + +## Value + +A boolean, initially `false`. When `true`, the user agent needs more data to ensure uninterrupted playback. When `false`, the user agent has enough data buffered and the application can stop fetching new segments. + +## Examples + +### Checking the streaming state + +This example creates a {{domxref("ManagedMediaSource")}}, attaches it to a {{htmlelement("video")}} element, and logs the value of `streaming` whenever it changes between `true` and `false`. + +```js +const mediaType = 'video/mp4; codecs="avc1.64001F, mp4a.40.2"'; + +if (ManagedMediaSource.isTypeSupported(mediaType)) { + const video = document.createElement("video"); + const source = new ManagedMediaSource(); + + video.controls = true; + video.disableRemotePlayback = true; + video.src = URL.createObjectURL(source); + document.body.appendChild(video); + + console.log(source.streaming); // false + + source.addEventListener("startstreaming", () => { + console.log(source.streaming); // true — start fetching data + }); + + source.addEventListener("endstreaming", () => { + console.log(source.streaming); // false — stop fetching data + }); + + source.addEventListener("sourceopen", () => { + source.addSourceBuffer(mediaType); + }); +} +``` + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} + +## See also + +- {{domxref("ManagedMediaSource.startstreaming_event", "startstreaming")}} event +- {{domxref("ManagedMediaSource.endstreaming_event", "endstreaming")}} event +- {{domxref("ManagedMediaSource")}} +- {{domxref("MediaSource")}} diff --git a/files/en-us/web/api/managedsourcebuffer/bufferedchange_event/index.md b/files/en-us/web/api/managedsourcebuffer/bufferedchange_event/index.md new file mode 100644 index 000000000000000..63d95bdda410b1a --- /dev/null +++ b/files/en-us/web/api/managedsourcebuffer/bufferedchange_event/index.md @@ -0,0 +1,96 @@ +--- +title: "ManagedSourceBuffer: bufferedchange event" +short-title: bufferedchange +slug: Web/API/ManagedSourceBuffer/bufferedchange_event +page-type: web-api-event +browser-compat: api.ManagedSourceBuffer.bufferedchange_event +--- + +{{APIRef("Media Source Extensions")}}{{AvailableInWorkers("window_and_dedicated")}} + +The **`bufferedchange`** event of the {{domxref("ManagedSourceBuffer")}} interface is fired when the `ManagedSourceBuffer`'s buffered range changes. This can occur following a call to {{domxref("SourceBuffer.appendBuffer", "appendBuffer()")}}, {{domxref("SourceBuffer.remove", "remove()")}}, {{domxref("MediaSource.endOfStream", "endOfStream()")}}, or as a consequence of the user agent running the memory cleanup algorithm. + +This event is important for applications using a {{domxref("ManagedMediaSource")}}, because the user agent can evict buffered content at any time. By listening for this event, applications can detect when buffered data has been removed and respond by fetching replacement segments to avoid playback stalls. + +## Syntax + +Use the event name in methods like {{domxref("EventTarget.addEventListener", "addEventListener()")}}, or set an event handler property. + +```js-nolint +addEventListener("bufferedchange", (event) => {}); + +onbufferedchange = (event) => {}; +``` + +## Event type + +A {{domxref("BufferedChangeEvent")}}. Inherits from {{domxref("Event")}}. + +{{InheritanceDiagram("BufferedChangeEvent")}} + +## Event properties + +_In addition to the properties listed below, properties from the parent interface, {{domxref("Event")}}, are available._ + +- {{domxref("BufferedChangeEvent.addedRanges", "addedRanges")}} {{ReadOnlyInline}} + - : A {{domxref("TimeRanges")}} object representing the time ranges that were added to the buffer. +- {{domxref("BufferedChangeEvent.removedRanges", "removedRanges")}} {{ReadOnlyInline}} + - : A {{domxref("TimeRanges")}} object representing the time ranges that were removed from the buffer. + +## Examples + +### Tracking buffered range changes + +This example sets up a {{domxref("ManagedMediaSource")}}, adds a source buffer, fetches a fragmented MP4 file, and listens for the `bufferedchange` event to log any changes to the buffered ranges. + +```js +const videoUrl = + "https://mdn.github.io/shared-assets/videos/flower-fragmented.mp4"; +const mediaType = 'video/mp4; codecs="avc1.64001F, mp4a.40.2"'; + +if (ManagedMediaSource.isTypeSupported(mediaType)) { + const source = new ManagedMediaSource(); + const video = document.createElement("video"); + + video.controls = true; + video.disableRemotePlayback = true; + video.src = URL.createObjectURL(source); + document.body.appendChild(video); + + source.addEventListener("sourceopen", async () => { + const sourceBuffer = source.addSourceBuffer(mediaType); + + sourceBuffer.addEventListener("bufferedchange", (event) => { + for (let i = 0; i < event.addedRanges.length; i++) { + console.log( + `Added: ${event.addedRanges.start(i)}s - ${event.addedRanges.end(i)}s`, + ); + } + for (let i = 0; i < event.removedRanges.length; i++) { + console.log( + `Removed: ${event.removedRanges.start(i)}s - ${event.removedRanges.end(i)}s`, + ); + } + }); + + const response = await fetch(videoUrl); + const data = await response.arrayBuffer(); + sourceBuffer.appendBuffer(data); + }); +} +``` + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} + +## See also + +- {{domxref("BufferedChangeEvent")}} +- {{domxref("ManagedMediaSource")}} +- {{domxref("ManagedSourceBuffer")}} +- {{domxref("SourceBuffer")}} diff --git a/files/en-us/web/api/managedsourcebuffer/index.md b/files/en-us/web/api/managedsourcebuffer/index.md new file mode 100644 index 000000000000000..a78a12701214ed4 --- /dev/null +++ b/files/en-us/web/api/managedsourcebuffer/index.md @@ -0,0 +1,82 @@ +--- +title: ManagedSourceBuffer +slug: Web/API/ManagedSourceBuffer +page-type: web-api-interface +browser-compat: api.ManagedSourceBuffer +--- + +{{APIRef("Media Source Extensions")}}{{AvailableInWorkers("window_and_dedicated")}} + +The **`ManagedSourceBuffer`** interface of the {{domxref("Media Source Extensions API", "Media Source Extensions API", "", "nocode")}} is a {{domxref("SourceBuffer")}} that is created by a {{domxref("ManagedMediaSource")}} when {{domxref("MediaSource.addSourceBuffer", "addSourceBuffer()")}} is called. It inherits all the properties and methods of `SourceBuffer`, and additionally fires a {{domxref("ManagedSourceBuffer.bufferedchange_event", "bufferedchange")}} event whenever the buffered ranges change — including when the user agent evicts content as part of its memory cleanup algorithm. + +Applications should listen for the `bufferedchange` event to track changes to buffered data, since a `ManagedMediaSource` may evict content at any time for reasons such as memory or hardware limitations. + +{{InheritanceDiagram}} + +## Instance properties + +_Inherits properties from its parent interface, {{domxref("SourceBuffer")}}._ + +## Instance methods + +_Inherits methods from its parent interface, {{domxref("SourceBuffer")}}._ + +## Events + +_Also inherits events from its parent interface, {{domxref("SourceBuffer")}}._ + +- {{domxref("ManagedSourceBuffer.bufferedchange_event", "bufferedchange")}} + - : Fired when the `ManagedSourceBuffer`'s buffered range changes, following a call to {{domxref("SourceBuffer.appendBuffer", "appendBuffer()")}}, {{domxref("SourceBuffer.remove", "remove()")}}, {{domxref("MediaSource.endOfStream", "endOfStream()")}}, or as a consequence of the user agent running the memory cleanup algorithm. + +## Examples + +### Listening for buffered range changes + +This example sets up a {{domxref("ManagedMediaSource")}}, adds a `ManagedSourceBuffer`, fetches a fragmented MP4 file, and listens for the `bufferedchange` event to log any changes to the buffered ranges. + +```js +const videoUrl = + "https://mdn.github.io/shared-assets/videos/flower-fragmented.mp4"; +const mediaType = 'video/mp4; codecs="avc1.64001F, mp4a.40.2"'; + +if (ManagedMediaSource.isTypeSupported(mediaType)) { + const source = new ManagedMediaSource(); + const video = document.createElement("video"); + + video.controls = true; + video.disableRemotePlayback = true; + video.src = URL.createObjectURL(source); + document.body.appendChild(video); + + source.addEventListener("sourceopen", async () => { + const sourceBuffer = source.addSourceBuffer(mediaType); + + sourceBuffer.addEventListener("bufferedchange", (event) => { + for (let i = 0; i < event.addedRanges.length; i++) { + console.log( + `Added: ${event.addedRanges.start(i)}s - ${event.addedRanges.end(i)}s`, + ); + } + }); + + const response = await fetch(videoUrl); + const data = await response.arrayBuffer(); + sourceBuffer.appendBuffer(data); + }); +} +``` + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} + +## See also + +- {{domxref("ManagedMediaSource")}} +- {{domxref("BufferedChangeEvent")}} +- {{domxref("SourceBuffer")}} +- {{domxref("MediaSource")}} diff --git a/files/en-us/web/api/media_source_extensions_api/index.md b/files/en-us/web/api/media_source_extensions_api/index.md index 4cf0d5877096f61..6c03855e613baf4 100644 --- a/files/en-us/web/api/media_source_extensions_api/index.md +++ b/files/en-us/web/api/media_source_extensions_api/index.md @@ -51,6 +51,12 @@ See [MSE-in-Workers Demo by Matt Wolenetz](https://wolenetz.github.io/mse-in-wor - : Represents a chunk of media to be passed into an {{domxref("HTMLMediaElement")}} via a `MediaSource` object. - {{domxref("SourceBufferList")}} - : A simple container list for multiple `SourceBuffer` objects. +- {{domxref("ManagedMediaSource")}} + - : A {{domxref("MediaSource")}} that actively manages its memory content. Unlike a regular `MediaSource`, a `ManagedMediaSource` can evict content from its source buffers at any time for reasons such as memory or hardware limitations. +- {{domxref("ManagedSourceBuffer")}} + - : A {{domxref("SourceBuffer")}} created by a `ManagedMediaSource`. Fires {{domxref("ManagedSourceBuffer.bufferedchange_event", "bufferedchange")}} events to notify the application when buffered ranges are modified, including when the user agent evicts content. +- {{domxref("BufferedChangeEvent")}} + - : The event object for the {{domxref("ManagedSourceBuffer.bufferedchange_event", "bufferedchange")}} event, which contains {{domxref("TimeRanges")}} representing the added and removed buffered ranges. - {{domxref("VideoPlaybackQuality")}} - : Contains information about the quality of video being played by a {{htmlelement("video")}} element, such as number of dropped or corrupted frames. Returned by the {{domxref("HTMLVideoElement.getVideoPlaybackQuality()")}} method. From 8046ad6c48e805f8fc159f17578e8fa8028da234 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Mar 2026 15:44:03 +0100 Subject: [PATCH 3/6] chore(deps-dev): bump lefthook from 2.1.2 to 2.1.3 (#43383) Bumps [lefthook](https://github.com/evilmartians/lefthook) from 2.1.2 to 2.1.3. - [Release notes](https://github.com/evilmartians/lefthook/releases) - [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md) - [Commits](https://github.com/evilmartians/lefthook/compare/v2.1.2...v2.1.3) --- updated-dependencies: - dependency-name: lefthook dependency-version: 2.1.3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 88 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 45 insertions(+), 45 deletions(-) diff --git a/package-lock.json b/package-lock.json index a28bc33fac188a2..e382aa240e8b320 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,7 +31,7 @@ "imagemin-pngquant": "^10.0.0", "imagemin-svgo": "^12.0.0", "is-svg": "^6.1.0", - "lefthook": "^2.1.2", + "lefthook": "^2.1.3", "markdownlint-cli2": "0.21.0", "markdownlint-rule-search-replace": "1.2.0", "node-html-parser": "^7.1.0", @@ -6303,9 +6303,9 @@ } }, "node_modules/lefthook": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/lefthook/-/lefthook-2.1.2.tgz", - "integrity": "sha512-HdAMl4g47kbWSkrUkCx3Kucq54omFS6piMJtXwXNtmCAfB40UaybTJuYtFW4hNzZ5SvaEimtxTp7P/MNIkEfsA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/lefthook/-/lefthook-2.1.3.tgz", + "integrity": "sha512-2W8PP/EGCvyS/x+Xza0Lgvn/EM3FKnr6m6xkfzpl6RKHl8TwPvs9iYZFQL99CnWTTvO+1mtQvIxGE/bD05038Q==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -6313,22 +6313,22 @@ "lefthook": "bin/index.js" }, "optionalDependencies": { - "lefthook-darwin-arm64": "2.1.2", - "lefthook-darwin-x64": "2.1.2", - "lefthook-freebsd-arm64": "2.1.2", - "lefthook-freebsd-x64": "2.1.2", - "lefthook-linux-arm64": "2.1.2", - "lefthook-linux-x64": "2.1.2", - "lefthook-openbsd-arm64": "2.1.2", - "lefthook-openbsd-x64": "2.1.2", - "lefthook-windows-arm64": "2.1.2", - "lefthook-windows-x64": "2.1.2" + "lefthook-darwin-arm64": "2.1.3", + "lefthook-darwin-x64": "2.1.3", + "lefthook-freebsd-arm64": "2.1.3", + "lefthook-freebsd-x64": "2.1.3", + "lefthook-linux-arm64": "2.1.3", + "lefthook-linux-x64": "2.1.3", + "lefthook-openbsd-arm64": "2.1.3", + "lefthook-openbsd-x64": "2.1.3", + "lefthook-windows-arm64": "2.1.3", + "lefthook-windows-x64": "2.1.3" } }, "node_modules/lefthook-darwin-arm64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/lefthook-darwin-arm64/-/lefthook-darwin-arm64-2.1.2.tgz", - "integrity": "sha512-AgHu93YuJtj1l9bcKlCbo4Tg8N8xFl9iD6BjXCGaGMu46LSjFiXbJFlkUdpgrL8fIbwoCjJi5FNp3POpqs4Wdw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/lefthook-darwin-arm64/-/lefthook-darwin-arm64-2.1.3.tgz", + "integrity": "sha512-VMSQK5ZUh66mKrEpHt5U81BxOg5xAXLoLZIK6e++4uc28tj8zGBqV9+tZqSRElXXzlnHbfdDVCMaKlTuqUy0Rg==", "cpu": [ "arm64" ], @@ -6340,9 +6340,9 @@ ] }, "node_modules/lefthook-darwin-x64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/lefthook-darwin-x64/-/lefthook-darwin-x64-2.1.2.tgz", - "integrity": "sha512-exooc9Ectz13OLJJOXM9AzaFQbqzf9QCF8JuVvGfbr4RYABYK+BwwtydjlPQrA76/n/h4tsS11MH5bBULnLkYA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/lefthook-darwin-x64/-/lefthook-darwin-x64-2.1.3.tgz", + "integrity": "sha512-4QhepF4cf+fa7sDow29IEuCfm/6LuV+oVyQGpnr5it1DEZIEEoa6vdH/x4tutYhAg/HH7I2jHq6FGz96HRiJEQ==", "cpu": [ "x64" ], @@ -6354,9 +6354,9 @@ ] }, "node_modules/lefthook-freebsd-arm64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-2.1.2.tgz", - "integrity": "sha512-E1QMlJPEU21n9eewv6ePfh+JmoTSg5R1jaYcKCky10kfbMdohNucI3xV91F2LcerE+p3UejKDqr/1wWO2RMGeQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-2.1.3.tgz", + "integrity": "sha512-kysx/9pjifOgcTZOj1bR0i74FAbMv3BDfrpZDKniBOo4Dp0hXhyOtUmRn4nWKL0bN+cqc4ZePAq4Qdm4fxWafA==", "cpu": [ "arm64" ], @@ -6368,9 +6368,9 @@ ] }, "node_modules/lefthook-freebsd-x64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/lefthook-freebsd-x64/-/lefthook-freebsd-x64-2.1.2.tgz", - "integrity": "sha512-/5zp+x8055Thj46x9S7hgnneZxvWhHQvPWkkgISCab1Lh6eLrbxvhE1qTb1lU3DqTnNmH9NeXdq1xPHc9uGluA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/lefthook-freebsd-x64/-/lefthook-freebsd-x64-2.1.3.tgz", + "integrity": "sha512-TLuPHQNg6iihShchrh5DrHvoCZO8FajZBMAEwLIKWlm6bkCcXbYNxy4dBaVK8lzHtS/Kv1bnH0D3BcK65iZFVQ==", "cpu": [ "x64" ], @@ -6382,9 +6382,9 @@ ] }, "node_modules/lefthook-linux-arm64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/lefthook-linux-arm64/-/lefthook-linux-arm64-2.1.2.tgz", - "integrity": "sha512-UK5FvDTkwKO7tOznY8iEZzuTsM1jXMZAG5BMRs7olN1k1K6m2unR6oKABP0hCd0wDErK6DZKDJDJfB564Rzqtw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/lefthook-linux-arm64/-/lefthook-linux-arm64-2.1.3.tgz", + "integrity": "sha512-e5x4pq1aZAXc0C642V4HaUoKtcHVmGW1HBIDNfWUhtsThBKjhZBXPspecaAHIRA/8VtsXS3RnJ4VhQpgfrCbww==", "cpu": [ "arm64" ], @@ -6396,9 +6396,9 @@ ] }, "node_modules/lefthook-linux-x64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/lefthook-linux-x64/-/lefthook-linux-x64-2.1.2.tgz", - "integrity": "sha512-4eOtz4PNh8GbJ+nA8YVDfW/eMirQWdZqMP/V/MVtoVBGobf6oXvvuDOySvAPOgNYEFN0Boegytmuji/851Vstg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/lefthook-linux-x64/-/lefthook-linux-x64-2.1.3.tgz", + "integrity": "sha512-yeVAiV5hoE6Qq8dQDB4XC14x4N9mhn+FetxzqDu5LVci0/sOPqyPq2b0YUtNwJ1ZUKawTz4I/oqnUsHkQrGH0w==", "cpu": [ "x64" ], @@ -6410,9 +6410,9 @@ ] }, "node_modules/lefthook-openbsd-arm64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/lefthook-openbsd-arm64/-/lefthook-openbsd-arm64-2.1.2.tgz", - "integrity": "sha512-lJXRJ6iJIBKwomuNBA3CUNSclj2/rKuxGAQoUra214B92VB6jL9zaY5YEs6h/ie9jQrzSnllEeg7xyDIsuVCrQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/lefthook-openbsd-arm64/-/lefthook-openbsd-arm64-2.1.3.tgz", + "integrity": "sha512-8QVvRxIosV6NL2XrbifOPGVhMFE43h02BUNEHYhZhyad7BredfAakg9dA9J/NO0I3eMdvCYU50ubFyDGIqUJog==", "cpu": [ "arm64" ], @@ -6424,9 +6424,9 @@ ] }, "node_modules/lefthook-openbsd-x64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/lefthook-openbsd-x64/-/lefthook-openbsd-x64-2.1.2.tgz", - "integrity": "sha512-GyOje4W0DIqkmR7/Of5D+mZ0vWqMvtGAVedtJR6d1239xNeMzCS8Q+/a3O1xigceZa5xhlqq0BWlssB/QYPQnA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/lefthook-openbsd-x64/-/lefthook-openbsd-x64-2.1.3.tgz", + "integrity": "sha512-YTS9qeW9PzzKg9Rk55mQprLIl1OdAIIjeOH8DF+MPWoAPkRqeUyq8Q2Bdlf3+Swy+kJOjoiU1pKvpjjc8upv9Q==", "cpu": [ "x64" ], @@ -6438,9 +6438,9 @@ ] }, "node_modules/lefthook-windows-arm64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/lefthook-windows-arm64/-/lefthook-windows-arm64-2.1.2.tgz", - "integrity": "sha512-MZKMqTULEpX/8N3fKXAR0A9RjsGKkEEY0japLqrHOIpxsJXry1DRz0FvQo2kkY4WW3rtFegV9m6eesOymuDrUg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/lefthook-windows-arm64/-/lefthook-windows-arm64-2.1.3.tgz", + "integrity": "sha512-Nlp80pWyF67GmxgM5NQmL7JTTccbJAvCNtS5QwHmKq3pJ9Xi0UegP9pGME520n06Rhp+gX7H4boXhm2D5hAghg==", "cpu": [ "arm64" ], @@ -6452,9 +6452,9 @@ ] }, "node_modules/lefthook-windows-x64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/lefthook-windows-x64/-/lefthook-windows-x64-2.1.2.tgz", - "integrity": "sha512-NZUgObuaSxc0EXAwC/CzkMf7TuQc++GGIk6TLPdaUpoSsNSJSZEwBVz5DtFB1cG+eMkfO/wOKplls+yjimTTtQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/lefthook-windows-x64/-/lefthook-windows-x64-2.1.3.tgz", + "integrity": "sha512-KByBhvqgUNhjO/03Mr0y66D9B1ZnII7AB0x17cumwHMOYoDaPJh/AlgmEduqUpatqli3lnFzWD0DUkAY6pq/SA==", "cpu": [ "x64" ], diff --git a/package.json b/package.json index 620eb64db18b35a..c2f4a8edf14d362 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "imagemin-pngquant": "^10.0.0", "imagemin-svgo": "^12.0.0", "is-svg": "^6.1.0", - "lefthook": "^2.1.2", + "lefthook": "^2.1.3", "markdownlint-cli2": "0.21.0", "markdownlint-rule-search-replace": "1.2.0", "node-html-parser": "^7.1.0", From ad56de2a224a565ec609de8a825a34413a9ca56f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Mar 2026 15:44:20 +0100 Subject: [PATCH 4/6] chore(deps-dev): bump file-type from 21.3.0 to 21.3.1 (#43384) Bumps [file-type](https://github.com/sindresorhus/file-type) from 21.3.0 to 21.3.1. - [Release notes](https://github.com/sindresorhus/file-type/releases) - [Commits](https://github.com/sindresorhus/file-type/compare/v21.3.0...v21.3.1) --- updated-dependencies: - dependency-name: file-type dependency-version: 21.3.1 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index e382aa240e8b320..3597815ab801c49 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,7 @@ "cspell-group-by-file-reporter": "^1.0.1", "env-cmd": "11.0.0", "fdir": "^6.5.0", - "file-type": "^21.3.0", + "file-type": "^21.3.1", "fs-extra": "^11.3.4", "gray-matter": "^4.0.3", "imagemin": "^9.0.1", @@ -4358,9 +4358,9 @@ } }, "node_modules/file-type": { - "version": "21.3.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.0.tgz", - "integrity": "sha512-8kPJMIGz1Yt/aPEwOsrR97ZyZaD1Iqm8PClb1nYFclUCkBi0Ma5IsYNQzvSFS9ib51lWyIw5mIT9rWzI/xjpzA==", + "version": "21.3.1", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.1.tgz", + "integrity": "sha512-SrzXX46I/zsRDjTb82eucsGg0ODq2NpGDp4HcsFKApPy8P8vACjpJRDoGGMfEzhFC0ry61ajd7f72J3603anBA==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index c2f4a8edf14d362..669b6960cba2bf0 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "cspell-group-by-file-reporter": "^1.0.1", "env-cmd": "11.0.0", "fdir": "^6.5.0", - "file-type": "^21.3.0", + "file-type": "^21.3.1", "fs-extra": "^11.3.4", "gray-matter": "^4.0.3", "imagemin": "^9.0.1", From 3679eb5a9ddf75c2955aef7dcbae3ed4e68e93d3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Mar 2026 15:44:31 +0100 Subject: [PATCH 5/6] ci(deps): bump actions/setup-node from 6.2.0 to 6.3.0 (#43385) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.2.0 to 6.3.0. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/6044e13b5dc448c55e2357c09f80417699197238...53b83947a5a98c8d113130e565377fae1a50d02f) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: 6.3.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/auto-cleanup-bot.yml | 2 +- .github/workflows/interfacedata-updater.yml | 2 +- .github/workflows/markdown-lint.yml | 2 +- .github/workflows/pr-check-lint_content.yml | 2 +- .github/workflows/pr-check_cspell_lists.yml | 2 +- .github/workflows/pr-check_javascript.yml | 2 +- .github/workflows/pr-check_json.yml | 2 +- .github/workflows/pr-check_redirects.yml | 2 +- .github/workflows/pr-check_scripts.yml | 10 +++++----- .github/workflows/pr-check_url-issues.yml | 2 +- .github/workflows/pr-check_yml.yml | 2 +- .github/workflows/pr-review-companion.yml | 2 +- .github/workflows/pr-test.yml | 2 +- .github/workflows/spelling-check-bot.yml | 2 +- .github/workflows/test.yml | 2 +- 15 files changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/workflows/auto-cleanup-bot.yml b/.github/workflows/auto-cleanup-bot.yml index 469b86eb50491a0..0abd0b962669cbb 100644 --- a/.github/workflows/auto-cleanup-bot.yml +++ b/.github/workflows/auto-cleanup-bot.yml @@ -20,7 +20,7 @@ jobs: persist-credentials: false - name: Setup Node.js environment - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version-file: ".nvmrc" package-manager-cache: false diff --git a/.github/workflows/interfacedata-updater.yml b/.github/workflows/interfacedata-updater.yml index ffc0c7b43ede7e3..01e2bebf11e0d56 100644 --- a/.github/workflows/interfacedata-updater.yml +++ b/.github/workflows/interfacedata-updater.yml @@ -23,7 +23,7 @@ jobs: persist-credentials: false - name: Setup node.js - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version-file: "mdn-content/.nvmrc" package-manager-cache: false diff --git a/.github/workflows/markdown-lint.yml b/.github/workflows/markdown-lint.yml index 2970fdf43c97ee7..89d8e305f1b7ec0 100644 --- a/.github/workflows/markdown-lint.yml +++ b/.github/workflows/markdown-lint.yml @@ -24,7 +24,7 @@ jobs: persist-credentials: false - name: Setup Node.js environment - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version-file: ".nvmrc" cache: npm diff --git a/.github/workflows/pr-check-lint_content.yml b/.github/workflows/pr-check-lint_content.yml index e3f8d4b2038cbc6..a18bd92321b1779 100644 --- a/.github/workflows/pr-check-lint_content.yml +++ b/.github/workflows/pr-check-lint_content.yml @@ -108,7 +108,7 @@ jobs: - name: Setup Node.js environment if: steps.check.outputs.HAS_FILES == 'true' - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version-file: ".nvmrc" cache: npm diff --git a/.github/workflows/pr-check_cspell_lists.yml b/.github/workflows/pr-check_cspell_lists.yml index 984b4f30ff5db61..3117826a1fe7ee0 100644 --- a/.github/workflows/pr-check_cspell_lists.yml +++ b/.github/workflows/pr-check_cspell_lists.yml @@ -24,7 +24,7 @@ jobs: persist-credentials: false - name: Setup Node.js environment - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version-file: ".nvmrc" diff --git a/.github/workflows/pr-check_javascript.yml b/.github/workflows/pr-check_javascript.yml index 3c39f81c7aa631f..d3acd78bfe4d8c8 100644 --- a/.github/workflows/pr-check_javascript.yml +++ b/.github/workflows/pr-check_javascript.yml @@ -21,7 +21,7 @@ jobs: persist-credentials: false - name: Setup Node.js environment - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version-file: ".nvmrc" cache: npm diff --git a/.github/workflows/pr-check_json.yml b/.github/workflows/pr-check_json.yml index 748ce28111553e6..28a17566c9ae68d 100644 --- a/.github/workflows/pr-check_json.yml +++ b/.github/workflows/pr-check_json.yml @@ -21,7 +21,7 @@ jobs: persist-credentials: false - name: Setup Node.js environment - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version-file: ".nvmrc" cache: npm diff --git a/.github/workflows/pr-check_redirects.yml b/.github/workflows/pr-check_redirects.yml index 5bbc484d61fd215..5ace1a0cdd9820e 100644 --- a/.github/workflows/pr-check_redirects.yml +++ b/.github/workflows/pr-check_redirects.yml @@ -16,7 +16,7 @@ jobs: persist-credentials: false - name: Setup Node.js environment - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version-file: ".nvmrc" cache: npm diff --git a/.github/workflows/pr-check_scripts.yml b/.github/workflows/pr-check_scripts.yml index 2cbb26359bd5128..1e9ae062fe25cc6 100644 --- a/.github/workflows/pr-check_scripts.yml +++ b/.github/workflows/pr-check_scripts.yml @@ -21,7 +21,7 @@ jobs: persist-credentials: false - name: Setup Node.js environment - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version-file: ".nvmrc" cache: npm @@ -42,7 +42,7 @@ jobs: persist-credentials: false - name: Setup Node.js environment - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version-file: ".nvmrc" cache: npm @@ -85,7 +85,7 @@ jobs: persist-credentials: false - name: Setup Node.js environment - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version-file: ".nvmrc" cache: npm @@ -106,7 +106,7 @@ jobs: persist-credentials: false - name: Setup Node.js environment - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version-file: ".nvmrc" cache: npm @@ -131,7 +131,7 @@ jobs: persist-credentials: false - name: Setup Node.js environment - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version-file: ".nvmrc" cache: npm diff --git a/.github/workflows/pr-check_url-issues.yml b/.github/workflows/pr-check_url-issues.yml index addeea84b937dd0..e161040b833805a 100644 --- a/.github/workflows/pr-check_url-issues.yml +++ b/.github/workflows/pr-check_url-issues.yml @@ -20,7 +20,7 @@ jobs: persist-credentials: false - name: Setup Node.js environment - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version-file: ".nvmrc" cache: npm diff --git a/.github/workflows/pr-check_yml.yml b/.github/workflows/pr-check_yml.yml index 7b28dc65a833f45..0ab8061f944bc08 100644 --- a/.github/workflows/pr-check_yml.yml +++ b/.github/workflows/pr-check_yml.yml @@ -21,7 +21,7 @@ jobs: persist-credentials: false - name: Setup Node.js environment - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version-file: ".nvmrc" cache: npm diff --git a/.github/workflows/pr-review-companion.yml b/.github/workflows/pr-review-companion.yml index 4618d97a0bcb6bd..eb58cf0c4cf2193 100644 --- a/.github/workflows/pr-review-companion.yml +++ b/.github/workflows/pr-review-companion.yml @@ -117,7 +117,7 @@ jobs: persist-credentials: false - name: Setup (mdn/content) - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 if: steps.check.outputs.HAS_ARTIFACT with: node-version-file: "content/.nvmrc" diff --git a/.github/workflows/pr-test.yml b/.github/workflows/pr-test.yml index e13bc879a441c38..d687962a03e7776 100644 --- a/.github/workflows/pr-test.yml +++ b/.github/workflows/pr-test.yml @@ -78,7 +78,7 @@ jobs: - name: Setup Node.js environment if: steps.check.outputs.HAS_FILES == 'true' - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version-file: ".nvmrc" cache: npm diff --git a/.github/workflows/spelling-check-bot.yml b/.github/workflows/spelling-check-bot.yml index fb3198e9bb6f74a..00236ce7423ee21 100644 --- a/.github/workflows/spelling-check-bot.yml +++ b/.github/workflows/spelling-check-bot.yml @@ -23,7 +23,7 @@ jobs: persist-credentials: false - name: Setup Node.js environment - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version-file: ".nvmrc" package-manager-cache: false diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index fe35c16de2f0054..e81459edb201d4e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,7 +25,7 @@ jobs: persist-credentials: false - name: Setup Node - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: cache: npm node-version-file: .nvmrc From 39edb5950d27d89e098ee86a50a9556e65a39b1d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Mar 2026 15:44:55 +0100 Subject: [PATCH 6/6] chore(deps-dev): bump tar from 7.5.9 to 7.5.10 (#43345) Bumps [tar](https://github.com/isaacs/node-tar) from 7.5.9 to 7.5.10. - [Release notes](https://github.com/isaacs/node-tar/releases) - [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md) - [Commits](https://github.com/isaacs/node-tar/compare/v7.5.9...v7.5.10) --- updated-dependencies: - dependency-name: tar dependency-version: 7.5.10 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3597815ab801c49..ddd02c8cb6f2739 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9378,9 +9378,9 @@ } }, "node_modules/tar": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.9.tgz", - "integrity": "sha512-BTLcK0xsDh2+PUe9F6c2TlRp4zOOBMTkoQHQIWSIzI0R7KG46uEwq4OPk2W7bZcprBMsuaeFsqwYr7pjh6CuHg==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.10.tgz", + "integrity": "sha512-8mOPs1//5q/rlkNSPcCegA6hiHJYDmSLEI8aMH/CdSQJNWztHC9WHNam5zdQlfpTwB9Xp7IBEsHfV5LKMJGVAw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": {