From b12def31533da2de2079296d67185d54371f93c9 Mon Sep 17 00:00:00 2001 From: Joseph Martinez Date: Wed, 17 May 2023 15:56:35 -0700 Subject: [PATCH 01/17] Fix typo (#26826) Fix plural typo Change "If the methods don't depends on" to "If the methods don't depend on" --- files/en-us/learn/server-side/express_nodejs/mongoose/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/en-us/learn/server-side/express_nodejs/mongoose/index.md b/files/en-us/learn/server-side/express_nodejs/mongoose/index.md index 0bbdf02cc7c4f6a..3351e45ae8ec640 100644 --- a/files/en-us/learn/server-side/express_nodejs/mongoose/index.md +++ b/files/en-us/learn/server-side/express_nodejs/mongoose/index.md @@ -142,7 +142,7 @@ try { ``` The asynchronous methods above are run in sequence. -If the methods don't depends on each other then you can run them in parallel and finish the whole operation more quickly. +If the methods don't depend on each other then you can run them in parallel and finish the whole operation more quickly. This done using the [`Promise.all()`](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all) method, which takes an iterable of promises as input and returns a single `Promise`. This returned promise fulfills when all of the input's promises fulfill, with an array of the fulfillment values. It rejects when any of the input's promises rejects, with this first rejection reason. From 3631765c1497de9d72cdb32469099a50c89eca73 Mon Sep 17 00:00:00 2001 From: Codophilus Persicus Date: Thu, 18 May 2023 04:10:20 +0330 Subject: [PATCH 02/17] removing scrollbar (#26813) * removing scrollbar * Update files/en-us/learn/html/tables/basics/index.md Co-authored-by: Brian Thomas Smith --------- Co-authored-by: Brian Thomas Smith --- files/en-us/learn/html/tables/basics/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/files/en-us/learn/html/tables/basics/index.md b/files/en-us/learn/html/tables/basics/index.md index 9ca887bcb710e14..0be332fd1f24233 100644 --- a/files/en-us/learn/html/tables/basics/index.md +++ b/files/en-us/learn/html/tables/basics/index.md @@ -203,7 +203,7 @@ td { } ``` -{{EmbedLiveSample("How_does_a_table_work", 100, 460)}} +{{EmbedLiveSample("How_does_a_table_work", 100, 560)}} When implemented correctly, HTML tables are handled well by accessibility tools such as screen readers, so a successful HTML table should enhance the experience of sighted and visually impaired users alike. @@ -526,7 +526,7 @@ Now it's time to have a go yourself. Below you can see the timetable of a languages teacher. On Friday she has a new class teaching Dutch all day, but she also teaches German for a few periods on Tuesday and Thursdays. She wants to highlight the columns containing the days she is teaching. -{{EmbedGHLiveSample("learning-area/html/tables/basic/timetable-fixed.html", '100%', 320)}} +{{EmbedGHLiveSample("learning-area/html/tables/basic/timetable-fixed.html", '100%', 350)}} Recreate the table by following the steps below. From 9d97062148bdbafc5618ddfc4ab03bf610dfa8a8 Mon Sep 17 00:00:00 2001 From: Joseph Martinez Date: Wed, 17 May 2023 17:54:23 -0700 Subject: [PATCH 03/17] Small typo fix (#26822) --- .../en-us/learn/server-side/first_steps/web_frameworks/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/en-us/learn/server-side/first_steps/web_frameworks/index.md b/files/en-us/learn/server-side/first_steps/web_frameworks/index.md index c99bee0e88347f6..f06ac77301f02d4 100644 --- a/files/en-us/learn/server-side/first_steps/web_frameworks/index.md +++ b/files/en-us/learn/server-side/first_steps/web_frameworks/index.md @@ -137,7 +137,7 @@ def youngest(request): ### Rendering data -Web frameworks often provide templating systems. These allow you to specify the structure of an output document, using placeholders for data that will be added when a page is generated. Templates are often used to create HTML, but can also create other types of document. +Web frameworks often provide templating systems. These allow you to specify the structure of an output document, using placeholders for data that will be added when a page is generated. Templates are often used to create HTML, but can also create other types of documents. Web frameworks often provide a mechanism to make it easy to generate other formats from stored data, including {{glossary("JSON")}} and {{glossary("XML")}}. From 93bb45994e95a3d25b47ad8bc0a4282de746c078 Mon Sep 17 00:00:00 2001 From: Laurence Rowe Date: Thu, 18 May 2023 04:05:16 -0700 Subject: [PATCH 04/17] Rename nonexistent globalScope to globalThis in service worker event examples (#26808) * Rename globalScope -> globalThis in activate_event/index.md * Rename globalScope -> globalThis in install_event/index.md * globalThis -> self for consistency with other examples * globalThis -> self for consistency with other examples * Fix spelling --- .../web/api/serviceworkerglobalscope/activate_event/index.md | 4 ++-- .../web/api/serviceworkerglobalscope/install_event/index.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/files/en-us/web/api/serviceworkerglobalscope/activate_event/index.md b/files/en-us/web/api/serviceworkerglobalscope/activate_event/index.md index 177be8834a020de..cc0ece5edc9a838 100644 --- a/files/en-us/web/api/serviceworkerglobalscope/activate_event/index.md +++ b/files/en-us/web/api/serviceworkerglobalscope/activate_event/index.md @@ -37,7 +37,7 @@ _Doesn't implement any specific properties, but inherits properties from its par The following snippet shows how you could use an `activate` event handler to upgrade a cache. ```js -globalScope.addEventListener("activate", (event) => { +self.addEventListener("activate", (event) => { const cacheAllowlist = ["v2"]; event.waitUntil( @@ -53,7 +53,7 @@ globalScope.addEventListener("activate", (event) => { You can also set up the event handler using the `onactivate` property: ```js -globalScope.onactivate = (event) => { +self.onactivate = (event) => { // ... }; ``` diff --git a/files/en-us/web/api/serviceworkerglobalscope/install_event/index.md b/files/en-us/web/api/serviceworkerglobalscope/install_event/index.md index 13f5a71e82e8cc4..a7a5cd0cbd893cf 100644 --- a/files/en-us/web/api/serviceworkerglobalscope/install_event/index.md +++ b/files/en-us/web/api/serviceworkerglobalscope/install_event/index.md @@ -37,7 +37,7 @@ _Doesn't implement any specific properties, but inherits properties from its par The following snippet shows how an `install` event handler can be used to populate a cache with a number of responses, which the service worker can then use to serve assets offline: ```js -this.addEventListener("install", (event) => { +self.addEventListener("install", (event) => { event.waitUntil( caches .open("v1") @@ -62,7 +62,7 @@ this.addEventListener("install", (event) => { You can also set up the event handler using the `oninstall` property: ```js -globalScope.oninstall = (event) => { +self.oninstall = (event) => { // ... }; ``` From 341eeccc9019762fcb45ab4336a29ab37edb2905 Mon Sep 17 00:00:00 2001 From: Onkar Ruikar <87750369+OnkarRuikar@users.noreply.github.com> Date: Thu, 18 May 2023 18:10:35 +0530 Subject: [PATCH 05/17] Synchronize with BCD v5.2.58 (#26829) Co-authored-by: OnkarRuikar --- .../rtcaudiosourcestats/audiolevel/index.md | 4 +++- .../web/api/rtcaudiosourcestats/index.md | 6 ++--- .../totalaudioenergy/index.md | 4 +++- .../totalsamplesduration/index.md | 4 +++- .../en-us/web/api/webtransport/close/index.md | 4 +--- .../web/api/webtransport/closed/index.md | 4 +--- .../createbidirectionalstream/index.md | 4 +--- .../createunidirectionalstream/index.md | 4 +--- .../web/api/webtransport/datagrams/index.md | 4 +--- .../incomingbidirectionalstreams/index.md | 4 +--- .../incomingunidirectionalstreams/index.md | 4 +--- files/en-us/web/api/webtransport/index.md | 22 +++++++++---------- .../en-us/web/api/webtransport/ready/index.md | 4 +--- .../api/webtransport/webtransport/index.md | 4 +--- files/en-us/web/api/webtransport_api/index.md | 6 ++--- .../webtransportbidirectionalstream/index.md | 8 +++---- .../readable/index.md | 4 +--- .../writable/index.md | 4 +--- .../incominghighwatermark/index.md | 4 +--- .../incomingmaxage/index.md | 4 +--- .../webtransportdatagramduplexstream/index.md | 18 +++++++-------- .../maxdatagramsize/index.md | 4 +--- .../outgoinghighwatermark/index.md | 4 +--- .../outgoingmaxage/index.md | 4 +--- .../readable/index.md | 4 +--- .../writable/index.md | 4 +--- .../en-us/web/api/webtransporterror/index.md | 10 ++++----- .../web/api/webtransporterror/source/index.md | 4 +--- .../streamerrorcode/index.md | 4 +--- .../webtransporterror/index.md | 4 +--- 30 files changed, 60 insertions(+), 106 deletions(-) diff --git a/files/en-us/web/api/rtcaudiosourcestats/audiolevel/index.md b/files/en-us/web/api/rtcaudiosourcestats/audiolevel/index.md index 6ccd6d877f989fe..e32c2919d27fe37 100644 --- a/files/en-us/web/api/rtcaudiosourcestats/audiolevel/index.md +++ b/files/en-us/web/api/rtcaudiosourcestats/audiolevel/index.md @@ -3,10 +3,12 @@ title: "RTCAudioSourceStats: audioLevel property" short-title: audioLevel slug: Web/API/RTCAudioSourceStats/audioLevel page-type: web-api-instance-property +status: + - experimental browser-compat: api.RTCStatsReport.type_media-source.audioLevel --- -{{APIRef("WebRTC")}} +{{APIRef("WebRTC")}}{{SeeCompatTable}} The {{domxref("RTCAudioSourceStats")}} dictionary's **`audioLevel`** property represents the audio level of the media source. diff --git a/files/en-us/web/api/rtcaudiosourcestats/index.md b/files/en-us/web/api/rtcaudiosourcestats/index.md index 6f560866a20ee14..c1b65a3e6d529dc 100644 --- a/files/en-us/web/api/rtcaudiosourcestats/index.md +++ b/files/en-us/web/api/rtcaudiosourcestats/index.md @@ -15,11 +15,11 @@ These statistics can be obtained by iterating the {{domxref("RTCStatsReport")}} ## Instance properties -- {{domxref("RTCAudioSourceStats.audioLevel", "audioLevel")}} +- {{domxref("RTCAudioSourceStats.audioLevel", "audioLevel")}} {{Experimental_Inline}} - : A number that represents the audio level of the media source. -- {{domxref("RTCAudioSourceStats.totalAudioEnergy", "totalAudioEnergy")}} +- {{domxref("RTCAudioSourceStats.totalAudioEnergy", "totalAudioEnergy")}} {{Experimental_Inline}} - : A number that represents the total audio energy of the media source over the lifetime of the stats object. -- {{domxref("RTCAudioSourceStats.totalSamplesDuration", "totalSamplesDuration")}} +- {{domxref("RTCAudioSourceStats.totalSamplesDuration", "totalSamplesDuration")}} {{Experimental_Inline}} - : A number that represents the total duration of all samples produced by the media source over the lifetime of the stats object. The following properties are present in both `RTCAudioSourceStats` and {{domxref("RTCVideoSourceStats")}}: diff --git a/files/en-us/web/api/rtcaudiosourcestats/totalaudioenergy/index.md b/files/en-us/web/api/rtcaudiosourcestats/totalaudioenergy/index.md index 773c9f0ffc063ff..0731a660842edbb 100644 --- a/files/en-us/web/api/rtcaudiosourcestats/totalaudioenergy/index.md +++ b/files/en-us/web/api/rtcaudiosourcestats/totalaudioenergy/index.md @@ -3,10 +3,12 @@ title: "RTCAudioSourceStats: totalAudioEnergy property" short-title: totalAudioEnergy slug: Web/API/RTCAudioSourceStats/totalAudioEnergy page-type: web-api-instance-property +status: + - experimental browser-compat: api.RTCStatsReport.type_media-source.totalAudioEnergy --- -{{APIRef("WebRTC")}} +{{APIRef("WebRTC")}}{{SeeCompatTable}} The {{domxref("RTCAudioSourceStats")}} dictionary's **`totalAudioEnergy`** property represents the total audio energy of the media source over the lifetime of this stats object. diff --git a/files/en-us/web/api/rtcaudiosourcestats/totalsamplesduration/index.md b/files/en-us/web/api/rtcaudiosourcestats/totalsamplesduration/index.md index ce5a55745ccea77..9e36735d9920875 100644 --- a/files/en-us/web/api/rtcaudiosourcestats/totalsamplesduration/index.md +++ b/files/en-us/web/api/rtcaudiosourcestats/totalsamplesduration/index.md @@ -3,10 +3,12 @@ title: "RTCAudioSourceStats: totalSamplesDuration property" short-title: totalSamplesDuration slug: Web/API/RTCAudioSourceStats/totalSamplesDuration page-type: web-api-instance-property +status: + - experimental browser-compat: api.RTCStatsReport.type_media-source.totalSamplesDuration --- -{{APIRef("WebRTC")}} +{{APIRef("WebRTC")}}{{SeeCompatTable}} The {{domxref("RTCAudioSourceStats")}} dictionary's **`totalSamplesDuration`** property represents the combined duration of all samples produced by the media source over the lifetime of this stats object, in seconds. It does not include samples dropped before reaching this media source. diff --git a/files/en-us/web/api/webtransport/close/index.md b/files/en-us/web/api/webtransport/close/index.md index d9237a5851f7467..9749cd61190ad9a 100644 --- a/files/en-us/web/api/webtransport/close/index.md +++ b/files/en-us/web/api/webtransport/close/index.md @@ -3,12 +3,10 @@ title: "WebTransport: close() method" short-title: close() slug: Web/API/WebTransport/close page-type: web-api-instance-method -status: - - experimental browser-compat: api.WebTransport.close --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`close()`** method of the {{domxref("WebTransport")}} interface closes an ongoing WebTransport session. diff --git a/files/en-us/web/api/webtransport/closed/index.md b/files/en-us/web/api/webtransport/closed/index.md index 7d6d01e63b37c83..a256866d62483bb 100644 --- a/files/en-us/web/api/webtransport/closed/index.md +++ b/files/en-us/web/api/webtransport/closed/index.md @@ -3,12 +3,10 @@ title: "WebTransport: closed property" short-title: closed slug: Web/API/WebTransport/closed page-type: web-api-instance-property -status: - - experimental browser-compat: api.WebTransport.closed --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`closed`** read-only property of the {{domxref("WebTransport")}} interface returns a promise that resolves when the transport is closed. diff --git a/files/en-us/web/api/webtransport/createbidirectionalstream/index.md b/files/en-us/web/api/webtransport/createbidirectionalstream/index.md index b61e8a464a86525..8096f48979097bc 100644 --- a/files/en-us/web/api/webtransport/createbidirectionalstream/index.md +++ b/files/en-us/web/api/webtransport/createbidirectionalstream/index.md @@ -3,12 +3,10 @@ title: "WebTransport: createBidirectionalStream() method" short-title: createBidirectionalStream() slug: Web/API/WebTransport/createBidirectionalStream page-type: web-api-instance-method -status: - - experimental browser-compat: api.WebTransport.createBidirectionalStream --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`createBidirectionalStream()`** method of the {{domxref("WebTransport")}} interface opens a bidirectional stream; it returns a {{domxref("WebTransportBidirectionalStream")}} object containing `readable` and `writable` properties, which can be used to reliably read from and write to the server. diff --git a/files/en-us/web/api/webtransport/createunidirectionalstream/index.md b/files/en-us/web/api/webtransport/createunidirectionalstream/index.md index b52b7ec1200326e..86324e70e847519 100644 --- a/files/en-us/web/api/webtransport/createunidirectionalstream/index.md +++ b/files/en-us/web/api/webtransport/createunidirectionalstream/index.md @@ -3,12 +3,10 @@ title: "WebTransport: createUnidirectionalStream() method" short-title: createUnidirectionalStream() slug: Web/API/WebTransport/createUnidirectionalStream page-type: web-api-instance-method -status: - - experimental browser-compat: api.WebTransport.createUnidirectionalStream --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`createUnidirectionalStream()`** method of the {{domxref("WebTransport")}} interface opens a unidirectional stream; it returns a {{domxref("WritableStream")}} object that can be used to reliably write data to the server. diff --git a/files/en-us/web/api/webtransport/datagrams/index.md b/files/en-us/web/api/webtransport/datagrams/index.md index ecf15286e436043..573eaa00eb2ac63 100644 --- a/files/en-us/web/api/webtransport/datagrams/index.md +++ b/files/en-us/web/api/webtransport/datagrams/index.md @@ -3,12 +3,10 @@ title: "WebTransport: datagrams property" short-title: datagrams slug: Web/API/WebTransport/datagrams page-type: web-api-instance-property -status: - - experimental browser-compat: api.WebTransport.datagrams --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`datagrams`** read-only property of the {{domxref("WebTransport")}} interface returns a {{domxref("WebTransportDatagramDuplexStream")}} instance that can be used to send and receive datagrams — unreliable data transmission. diff --git a/files/en-us/web/api/webtransport/incomingbidirectionalstreams/index.md b/files/en-us/web/api/webtransport/incomingbidirectionalstreams/index.md index 2676e42d2fd460f..8475cb9d3d51246 100644 --- a/files/en-us/web/api/webtransport/incomingbidirectionalstreams/index.md +++ b/files/en-us/web/api/webtransport/incomingbidirectionalstreams/index.md @@ -3,12 +3,10 @@ title: "WebTransport: incomingBidirectionalStreams property" short-title: incomingBidirectionalStreams slug: Web/API/WebTransport/incomingBidirectionalStreams page-type: web-api-instance-property -status: - - experimental browser-compat: api.WebTransport.incomingBidirectionalStreams --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`incomingBidirectionalStreams`** read-only property of the {{domxref("WebTransport")}} interface represents one or more bidirectional streams opened by the server. Returns a {{domxref("ReadableStream")}} of {{domxref("WebTransportBidirectionalStream")}} objects. Each one can be used to reliably read data from the server and write data back to it. diff --git a/files/en-us/web/api/webtransport/incomingunidirectionalstreams/index.md b/files/en-us/web/api/webtransport/incomingunidirectionalstreams/index.md index 41cedfa08bed9c2..62efeae48e274e7 100644 --- a/files/en-us/web/api/webtransport/incomingunidirectionalstreams/index.md +++ b/files/en-us/web/api/webtransport/incomingunidirectionalstreams/index.md @@ -3,12 +3,10 @@ title: "WebTransport: incomingUnidirectionalStreams property" short-title: incomingUnidirectionalStreams slug: Web/API/WebTransport/incomingUnidirectionalStreams page-type: web-api-instance-property -status: - - experimental browser-compat: api.WebTransport.incomingUnidirectionalStreams --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`incomingUnidirectionalStreams`** read-only property of the {{domxref("WebTransport")}} interface represents one or more unidirectional streams opened by the server. Returns a {{domxref("ReadableStream")}} of {{domxref("WebTransportReceiveStream")}} objects. Each one can be used to reliably read data from the server. diff --git a/files/en-us/web/api/webtransport/index.md b/files/en-us/web/api/webtransport/index.md index 5b20409e336b737..41791ca814efec8 100644 --- a/files/en-us/web/api/webtransport/index.md +++ b/files/en-us/web/api/webtransport/index.md @@ -2,12 +2,10 @@ title: WebTransport slug: Web/API/WebTransport page-type: web-api-interface -status: - - experimental browser-compat: api.WebTransport --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`WebTransport`** interface of the {{domxref("WebTransport API", "WebTransport API", "", "nocode")}} provides functionality to enable a user agent to connect to an HTTP/3 server, initiate reliable and unreliable transport in either or both directions, and close the connection once it is no longer needed. @@ -17,29 +15,29 @@ The **`WebTransport`** interface of the {{domxref("WebTransport API", "WebTransp ## Constructor -- {{domxref("WebTransport.WebTransport", "WebTransport()")}} {{Experimental_Inline}} +- {{domxref("WebTransport.WebTransport", "WebTransport()")}} - : Creates a new `WebTransport` object instance. ## Instance properties -- {{domxref("WebTransport.closed", "closed")}} {{ReadOnlyInline}} {{Experimental_Inline}} +- {{domxref("WebTransport.closed", "closed")}} {{ReadOnlyInline}} - : Returns a promise that resolves when the transport is closed. -- {{domxref("WebTransport.datagrams", "datagrams")}} {{ReadOnlyInline}} {{Experimental_Inline}} +- {{domxref("WebTransport.datagrams", "datagrams")}} {{ReadOnlyInline}} - : Returns a {{domxref("WebTransportDatagramDuplexStream")}} instance that can be used to send and receive datagrams. -- {{domxref("WebTransport.incomingBidirectionalStreams", "incomingBidirectionalStreams")}} {{ReadOnlyInline}} {{Experimental_Inline}} +- {{domxref("WebTransport.incomingBidirectionalStreams", "incomingBidirectionalStreams")}} {{ReadOnlyInline}} - : Represents one or more bidirectional streams opened by the server. Returns a {{domxref("ReadableStream")}} of {{domxref("WebTransportBidirectionalStream")}} objects. Each one can be used to read data from the server and write data back to it. -- {{domxref("WebTransport.incomingUnidirectionalStreams", "incomingUnidirectionalStreams")}} {{ReadOnlyInline}} {{Experimental_Inline}} +- {{domxref("WebTransport.incomingUnidirectionalStreams", "incomingUnidirectionalStreams")}} {{ReadOnlyInline}} - : Represents one or more unidirectional streams opened by the server. Returns a {{domxref("ReadableStream")}} of {{domxref("WebTransportReceiveStream")}} objects. Each one can be used to read data from the server. -- {{domxref("WebTransport.ready", "ready")}} {{ReadOnlyInline}} {{Experimental_Inline}} +- {{domxref("WebTransport.ready", "ready")}} {{ReadOnlyInline}} - : Returns a promise that resolves when the transport is ready to use. ## Instance methods -- {{domxref("WebTransport.close", "close()")}} {{Experimental_Inline}} +- {{domxref("WebTransport.close", "close()")}} - : Closes an ongoing WebTransport session. -- {{domxref("WebTransport.createBidirectionalStream", "createBidirectionalStream()")}} {{Experimental_Inline}} +- {{domxref("WebTransport.createBidirectionalStream", "createBidirectionalStream()")}} - : Opens a bidirectional stream; returns a {{domxref("WebTransportBidirectionalStream")}} object containing `readable` and `writable` properties, which can be used to read from and write to the server. -- {{domxref("WebTransport.createUnidirectionalStream", "createUnidirectionalStream()")}} {{Experimental_Inline}} +- {{domxref("WebTransport.createUnidirectionalStream", "createUnidirectionalStream()")}} - : Opens a unidirectional stream; returns a {{domxref("WritableStream")}} object that can be used to write to the server. ## Examples diff --git a/files/en-us/web/api/webtransport/ready/index.md b/files/en-us/web/api/webtransport/ready/index.md index 3d19c9e5383ae35..827cbd9251fc543 100644 --- a/files/en-us/web/api/webtransport/ready/index.md +++ b/files/en-us/web/api/webtransport/ready/index.md @@ -3,12 +3,10 @@ title: "WebTransport: ready property" short-title: ready slug: Web/API/WebTransport/ready page-type: web-api-instance-property -status: - - experimental browser-compat: api.WebTransport.ready --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`ready`** read-only property of the {{domxref("WebTransport")}} interface returns a promise that resolves when the transport is ready to use. diff --git a/files/en-us/web/api/webtransport/webtransport/index.md b/files/en-us/web/api/webtransport/webtransport/index.md index c1754cf124263b1..28853a4a97b5bc8 100644 --- a/files/en-us/web/api/webtransport/webtransport/index.md +++ b/files/en-us/web/api/webtransport/webtransport/index.md @@ -3,12 +3,10 @@ title: "WebTransport: WebTransport() constructor" short-title: WebTransport() slug: Web/API/WebTransport/WebTransport page-type: web-api-constructor -status: - - experimental browser-compat: api.WebTransport.WebTransport --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`WebTransport()`** constructor creates a new {{domxref("WebTransport")}} object instance. diff --git a/files/en-us/web/api/webtransport_api/index.md b/files/en-us/web/api/webtransport_api/index.md index e259c18865a8891..8226124198447a6 100644 --- a/files/en-us/web/api/webtransport_api/index.md +++ b/files/en-us/web/api/webtransport_api/index.md @@ -2,12 +2,10 @@ title: WebTransport API slug: Web/API/WebTransport_API page-type: web-api-overview -status: - - experimental browser-compat: api.WebTransport --- -{{SeeCompatTable}}{{DefaultAPISidebar("WebTransport API")}}{{SecureContext_Header}} +{{DefaultAPISidebar("WebTransport API")}}{{SecureContext_Header}} The **WebTransport API** provides a modern update to {{domxref("WebSockets API", "WebSockets", "", "nocode")}}, transmitting data between client and server using [HTTP/3 Transport](https://datatracker.ietf.org/doc/html/draft-ietf-webtrans-http3/). WebTransport provides support for multiple streams, unidirectional streams, and out-of-order delivery. It enables reliable transport via {{domxref("Streams API", "streams", "", "nocode")}} and unreliable transport via UDP-like datagrams. @@ -221,7 +219,7 @@ async function receiveBidirectional() { ## Interfaces -- {{domxref("WebTransport")}} {{Experimental_Inline}} +- {{domxref("WebTransport")}} - : Provides functionality to enable a user agent to connect to an HTTP/3 server, initiate reliable and unreliable transport in either or both directions, and close the connection once it is no longer needed. - {{domxref("WebTransportBidirectionalStream")}} - : Represents a bidirectional stream created by a server or a client that can be used for reliable transport. Provides access to a {{domxref("ReadableStream")}} for reading incoming data, and a {{domxref("WritableStream")}} for writing outgoing data. diff --git a/files/en-us/web/api/webtransportbidirectionalstream/index.md b/files/en-us/web/api/webtransportbidirectionalstream/index.md index 069e75ac1230f82..095363e4e42665d 100644 --- a/files/en-us/web/api/webtransportbidirectionalstream/index.md +++ b/files/en-us/web/api/webtransportbidirectionalstream/index.md @@ -2,12 +2,10 @@ title: WebTransportBidirectionalStream slug: Web/API/WebTransportBidirectionalStream page-type: web-api-interface -status: - - experimental browser-compat: api.WebTransportBidirectionalStream --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`WebTransportBidirectionalStream`** interface of the {{domxref("WebTransport API", "WebTransport API", "", "nocode")}} represents a bidirectional stream created by a server or a client that can be used for reliable transport. Provides access to a {{domxref("ReadableStream")}} for reading incoming data, and a {{domxref("WritableStream")}} for writing outgoing data. @@ -17,9 +15,9 @@ The **`WebTransportBidirectionalStream`** interface of the {{domxref("WebTranspo ## Instance properties -- {{domxref("WebTransportBidirectionalStream.readable", "readable")}} {{ReadOnlyInline}} {{Experimental_Inline}} +- {{domxref("WebTransportBidirectionalStream.readable", "readable")}} {{ReadOnlyInline}} - : Returns a {{domxref("ReadableStream")}} instance that can be used to read incoming data. -- {{domxref("WebTransportBidirectionalStream.writable", "writable")}} {{ReadOnlyInline}} {{Experimental_Inline}} +- {{domxref("WebTransportBidirectionalStream.writable", "writable")}} {{ReadOnlyInline}} - : Returns a {{domxref("WritableStream")}} instance that can be used to write outgoing data. ## Examples diff --git a/files/en-us/web/api/webtransportbidirectionalstream/readable/index.md b/files/en-us/web/api/webtransportbidirectionalstream/readable/index.md index 05a2b4d7c02579f..0becddccad340d2 100644 --- a/files/en-us/web/api/webtransportbidirectionalstream/readable/index.md +++ b/files/en-us/web/api/webtransportbidirectionalstream/readable/index.md @@ -3,12 +3,10 @@ title: "WebTransportBidirectionalStream: readable property" short-title: readable slug: Web/API/WebTransportBidirectionalStream/readable page-type: web-api-instance-property -status: - - experimental browser-compat: api.WebTransportBidirectionalStream.readable --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`readable`** read-only property of the {{domxref("WebTransportBidirectionalStream")}} interface returns a {{domxref("ReadableStream")}} instance that can be used to reliably read incoming data. diff --git a/files/en-us/web/api/webtransportbidirectionalstream/writable/index.md b/files/en-us/web/api/webtransportbidirectionalstream/writable/index.md index 436eb6a0c0c4015..eed30c71c26bf02 100644 --- a/files/en-us/web/api/webtransportbidirectionalstream/writable/index.md +++ b/files/en-us/web/api/webtransportbidirectionalstream/writable/index.md @@ -3,12 +3,10 @@ title: "WebTransportBidirectionalStream: writable property" short-title: writable slug: Web/API/WebTransportBidirectionalStream/writable page-type: web-api-instance-property -status: - - experimental browser-compat: api.WebTransportBidirectionalStream.writable --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`writable`** read-only property of the {{domxref("WebTransportBidirectionalStream")}} interface returns a {{domxref("WritableStream")}} instance that can be used to write outgoing data. diff --git a/files/en-us/web/api/webtransportdatagramduplexstream/incominghighwatermark/index.md b/files/en-us/web/api/webtransportdatagramduplexstream/incominghighwatermark/index.md index c43517fa0854df5..2ace12e589e4fc0 100644 --- a/files/en-us/web/api/webtransportdatagramduplexstream/incominghighwatermark/index.md +++ b/files/en-us/web/api/webtransportdatagramduplexstream/incominghighwatermark/index.md @@ -3,12 +3,10 @@ title: "WebTransportDatagramDuplexStream: incomingHighWaterMark property" short-title: incomingHighWaterMark slug: Web/API/WebTransportDatagramDuplexStream/incomingHighWaterMark page-type: web-api-instance-property -status: - - experimental browser-compat: api.WebTransportDatagramDuplexStream.incomingHighWaterMark --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`incomingHighWaterMark`** property of the {{domxref("WebTransportDatagramDuplexStream")}} interface gets or sets the high water mark for incoming chunks of data — this is the maximum size, in chunks, that the incoming {{domxref("ReadableStream")}}'s internal queue can reach before it is considered full. See [Internal queues and queuing strategies](/en-US/docs/Web/API/Streams_API/Concepts#internal_queues_and_queuing_strategies) for more information. diff --git a/files/en-us/web/api/webtransportdatagramduplexstream/incomingmaxage/index.md b/files/en-us/web/api/webtransportdatagramduplexstream/incomingmaxage/index.md index f39b48711e50150..c8bcfa7a84f3e17 100644 --- a/files/en-us/web/api/webtransportdatagramduplexstream/incomingmaxage/index.md +++ b/files/en-us/web/api/webtransportdatagramduplexstream/incomingmaxage/index.md @@ -3,12 +3,10 @@ title: "WebTransportDatagramDuplexStream: incomingMaxAge property" short-title: incomingMaxAge slug: Web/API/WebTransportDatagramDuplexStream/incomingMaxAge page-type: web-api-instance-property -status: - - experimental browser-compat: api.WebTransportDatagramDuplexStream.incomingMaxAge --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`incomingMaxAge`** property of the {{domxref("WebTransportDatagramDuplexStream")}} interface gets or sets the maximum age for incoming datagrams, in milliseconds. diff --git a/files/en-us/web/api/webtransportdatagramduplexstream/index.md b/files/en-us/web/api/webtransportdatagramduplexstream/index.md index ef2463577bc618a..62b77222b21ddcb 100644 --- a/files/en-us/web/api/webtransportdatagramduplexstream/index.md +++ b/files/en-us/web/api/webtransportdatagramduplexstream/index.md @@ -2,12 +2,10 @@ title: WebTransportDatagramDuplexStream slug: Web/API/WebTransportDatagramDuplexStream page-type: web-api-interface -status: - - experimental browser-compat: api.WebTransportDatagramDuplexStream --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`WebTransportDatagramDuplexStream`** interface of the {{domxref("WebTransport API", "WebTransport API", "", "nocode")}} represents a duplex stream that can be used for unreliable transport of datagrams between client and server. Provides access to a {{domxref("ReadableStream")}} for reading incoming datagrams, a {{domxref("WritableStream")}} for writing outgoing datagrams, and various settings and statistics related to the stream. @@ -21,19 +19,19 @@ This is accessed via the {{domxref("WebTransport.datagrams")}} property. ## Instance properties -- {{domxref("WebTransportDatagramDuplexStream.incomingHighWaterMark", "incomingHighWaterMark")}} {{Experimental_Inline}} +- {{domxref("WebTransportDatagramDuplexStream.incomingHighWaterMark", "incomingHighWaterMark")}} - : Gets or sets the high water mark for incoming chunks of data — this is the maximum size, in chunks, that the incoming {{domxref("ReadableStream")}}'s internal queue can reach before it is considered full. See [Internal queues and queuing strategies](/en-US/docs/Web/API/Streams_API/Concepts#internal_queues_and_queuing_strategies) for more information. -- {{domxref("WebTransportDatagramDuplexStream.incomingMaxAge", "incomingMaxAge")}} {{Experimental_Inline}} +- {{domxref("WebTransportDatagramDuplexStream.incomingMaxAge", "incomingMaxAge")}} - : Gets or sets the maximum age for incoming datagrams, in milliseconds. Returns `null` if no maximum age has been set. -- {{domxref("WebTransportDatagramDuplexStream.maxDatagramSize", "maxDatagramSize")}} {{ReadOnlyInline}} {{Experimental_Inline}} +- {{domxref("WebTransportDatagramDuplexStream.maxDatagramSize", "maxDatagramSize")}} {{ReadOnlyInline}} - : Returns the maximum allowable size of outgoing datagrams, in bytes, that can be written to {{domxref("WebTransportDatagramDuplexStream.writable", "writable")}}. -- {{domxref("WebTransportDatagramDuplexStream.outgoingHighWaterMark", "outgoingHighWaterMark")}} {{Experimental_Inline}} +- {{domxref("WebTransportDatagramDuplexStream.outgoingHighWaterMark", "outgoingHighWaterMark")}} - : Gets or sets the high water mark for outgoing chunks of data — this is the maximum size, in chunks, that the outgoing {{domxref("WritableStream")}}'s internal queue can reach before it is considered full. See [Internal queues and queuing strategies](/en-US/docs/Web/API/Streams_API/Concepts#internal_queues_and_queuing_strategies) for more information. -- {{domxref("WebTransportDatagramDuplexStream.outgoingMaxAge", "outgoingMaxAge")}} {{Experimental_Inline}} +- {{domxref("WebTransportDatagramDuplexStream.outgoingMaxAge", "outgoingMaxAge")}} - : Gets or sets the maximum age for outgoing datagrams, in milliseconds. Returns `null` if no maximum age has been set. -- {{domxref("WebTransportDatagramDuplexStream.readable", "readable")}} {{ReadOnlyInline}} {{Experimental_Inline}} +- {{domxref("WebTransportDatagramDuplexStream.readable", "readable")}} {{ReadOnlyInline}} - : Returns a {{domxref("ReadableStream")}} instance that can be used to read incoming datagrams from the stream. -- {{domxref("WebTransportDatagramDuplexStream.writable", "writable")}} {{ReadOnlyInline}} {{Experimental_Inline}} +- {{domxref("WebTransportDatagramDuplexStream.writable", "writable")}} {{ReadOnlyInline}} - : Returns a {{domxref("WritableStream")}} instance that can be used to write outgoing datagrams to the stream. ## Examples diff --git a/files/en-us/web/api/webtransportdatagramduplexstream/maxdatagramsize/index.md b/files/en-us/web/api/webtransportdatagramduplexstream/maxdatagramsize/index.md index 69234d162710644..ea2a5a0afb8e11b 100644 --- a/files/en-us/web/api/webtransportdatagramduplexstream/maxdatagramsize/index.md +++ b/files/en-us/web/api/webtransportdatagramduplexstream/maxdatagramsize/index.md @@ -3,12 +3,10 @@ title: "WebTransportDatagramDuplexStream: maxDatagramSize property" short-title: maxDatagramSize slug: Web/API/WebTransportDatagramDuplexStream/maxDatagramSize page-type: web-api-instance-property -status: - - experimental browser-compat: api.WebTransportDatagramDuplexStream.maxDatagramSize --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`maxDatagramSize`** read-only property of the {{domxref("WebTransportDatagramDuplexStream")}} interface returns the maximum allowable size of outgoing datagrams, in bytes, that can be written to {{domxref("WebTransportDatagramDuplexStream.writable", "writable")}}. diff --git a/files/en-us/web/api/webtransportdatagramduplexstream/outgoinghighwatermark/index.md b/files/en-us/web/api/webtransportdatagramduplexstream/outgoinghighwatermark/index.md index 35cdc6d80db758a..87df028087c3fcf 100644 --- a/files/en-us/web/api/webtransportdatagramduplexstream/outgoinghighwatermark/index.md +++ b/files/en-us/web/api/webtransportdatagramduplexstream/outgoinghighwatermark/index.md @@ -3,12 +3,10 @@ title: "WebTransportDatagramDuplexStream: outgoingHighWaterMark property" short-title: outgoingHighWaterMark slug: Web/API/WebTransportDatagramDuplexStream/outgoingHighWaterMark page-type: web-api-instance-property -status: - - experimental browser-compat: api.WebTransportDatagramDuplexStream.outgoingHighWaterMark --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`outgoingHighWaterMark`** property of the {{domxref("WebTransportDatagramDuplexStream")}} interface gets or sets the high water mark for outgoing chunks of data — this is the maximum size, in chunks, that the outgoing {{domxref("WritableStream")}}'s internal queue can reach before it is considered full. See [Internal queues and queuing strategies](/en-US/docs/Web/API/Streams_API/Concepts#internal_queues_and_queuing_strategies) for more information. diff --git a/files/en-us/web/api/webtransportdatagramduplexstream/outgoingmaxage/index.md b/files/en-us/web/api/webtransportdatagramduplexstream/outgoingmaxage/index.md index d2aedd044e83ec5..fba33b3e7a18d15 100644 --- a/files/en-us/web/api/webtransportdatagramduplexstream/outgoingmaxage/index.md +++ b/files/en-us/web/api/webtransportdatagramduplexstream/outgoingmaxage/index.md @@ -1,12 +1,10 @@ --- title: WebTransportDatagramDuplexStream.outgoingMaxAge slug: Web/API/WebTransportDatagramDuplexStream/outgoingMaxAge -status: - - experimental browser-compat: api.WebTransportDatagramDuplexStream.outgoingMaxAge --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`outgoingMaxAge`** property of the {{domxref("WebTransportDatagramDuplexStream")}} interface gets or sets the maximum age for outgoing datagrams, in milliseconds. diff --git a/files/en-us/web/api/webtransportdatagramduplexstream/readable/index.md b/files/en-us/web/api/webtransportdatagramduplexstream/readable/index.md index f9931b15cd24d1b..65ffe0983a9b056 100644 --- a/files/en-us/web/api/webtransportdatagramduplexstream/readable/index.md +++ b/files/en-us/web/api/webtransportdatagramduplexstream/readable/index.md @@ -3,12 +3,10 @@ title: "WebTransportDatagramDuplexStream: readable property" short-title: readable slug: Web/API/WebTransportDatagramDuplexStream/readable page-type: web-api-instance-property -status: - - experimental browser-compat: api.WebTransportDatagramDuplexStream.readable --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`readable`** read-only property of the {{domxref("WebTransportDatagramDuplexStream")}} interface returns a {{domxref("ReadableStream")}} instance that can be used to unreliably read incoming datagrams from the stream. diff --git a/files/en-us/web/api/webtransportdatagramduplexstream/writable/index.md b/files/en-us/web/api/webtransportdatagramduplexstream/writable/index.md index 81a6609c4c5fe6f..360df85193b4eef 100644 --- a/files/en-us/web/api/webtransportdatagramduplexstream/writable/index.md +++ b/files/en-us/web/api/webtransportdatagramduplexstream/writable/index.md @@ -3,12 +3,10 @@ title: "WebTransportDatagramDuplexStream: writable property" short-title: writable slug: Web/API/WebTransportDatagramDuplexStream/writable page-type: web-api-instance-property -status: - - experimental browser-compat: api.WebTransportDatagramDuplexStream.writable --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`writable`** read-only property of the {{domxref("WebTransportDatagramDuplexStream")}} interface returns a {{domxref("WritableStream")}} instance that can be used to unreliably write outgoing datagrams to the stream. diff --git a/files/en-us/web/api/webtransporterror/index.md b/files/en-us/web/api/webtransporterror/index.md index af47966d8c51e20..27489e654d499fc 100644 --- a/files/en-us/web/api/webtransporterror/index.md +++ b/files/en-us/web/api/webtransporterror/index.md @@ -2,12 +2,10 @@ title: WebTransportError slug: Web/API/WebTransportError page-type: web-api-interface -status: - - experimental browser-compat: api.WebTransportError --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`WebTransportError`** interface of the {{domxref("WebTransport API", "WebTransport API", "", "nocode")}} represents an error related to the API, which can arise from server errors, network connection problems, or client-initiated abort operations (for example, arising from a {{domxref("WritableStream.abort()")}} call). @@ -17,16 +15,16 @@ The **`WebTransportError`** interface of the {{domxref("WebTransport API", "WebT ## Constructor -- {{domxref("WebTransportError.WebTransportError", "WebTransportError()")}} {{Experimental_Inline}} +- {{domxref("WebTransportError.WebTransportError", "WebTransportError()")}} - : Creates a new `WebTransportError` object instance. ## Instance properties _Inherits properties from its parent, {{DOMxRef("DOMException")}}._ -- {{domxref("WebTransportError.source", "source")}} {{ReadOnlyInline}} {{Experimental_Inline}} +- {{domxref("WebTransportError.source", "source")}} {{ReadOnlyInline}} - : Returns an enumerated value indicating the source of the error—can be either `stream` or `session`. -- {{domxref("WebTransportError.streamErrorCode", "streamErrorCode")}} {{ReadOnlyInline}} {{Experimental_Inline}} +- {{domxref("WebTransportError.streamErrorCode", "streamErrorCode")}} {{ReadOnlyInline}} - : Returns a number in the range 0-255 indicating the application protocol error code for this error, or `null` if one is not available. ## Examples diff --git a/files/en-us/web/api/webtransporterror/source/index.md b/files/en-us/web/api/webtransporterror/source/index.md index edc91ff5794cd0e..adcca4bc3521d9b 100644 --- a/files/en-us/web/api/webtransporterror/source/index.md +++ b/files/en-us/web/api/webtransporterror/source/index.md @@ -3,12 +3,10 @@ title: "WebTransportError: source property" short-title: source slug: Web/API/WebTransportError/source page-type: web-api-instance-property -status: - - experimental browser-compat: api.WebTransportError.source --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`source`** read-only property of the {{domxref("WebTransportError")}} interface returns an enumerated value indicating the source of the error. diff --git a/files/en-us/web/api/webtransporterror/streamerrorcode/index.md b/files/en-us/web/api/webtransporterror/streamerrorcode/index.md index 2c0a21584a34778..611384bbad87881 100644 --- a/files/en-us/web/api/webtransporterror/streamerrorcode/index.md +++ b/files/en-us/web/api/webtransporterror/streamerrorcode/index.md @@ -3,12 +3,10 @@ title: "WebTransportError: streamErrorCode property" short-title: streamErrorCode slug: Web/API/WebTransportError/streamErrorCode page-type: web-api-instance-property -status: - - experimental browser-compat: api.WebTransportError.streamErrorCode --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`streamErrorCode`** read-only property of the {{domxref("WebTransportError")}} interface returns a number in the range 0-255 indicating the application protocol error code for this error, or `null` if one is not available. diff --git a/files/en-us/web/api/webtransporterror/webtransporterror/index.md b/files/en-us/web/api/webtransporterror/webtransporterror/index.md index b68e55a59b4c95f..a418c75a6b2310c 100644 --- a/files/en-us/web/api/webtransporterror/webtransporterror/index.md +++ b/files/en-us/web/api/webtransporterror/webtransporterror/index.md @@ -3,12 +3,10 @@ title: "WebTransportError: WebTransportError() constructor" short-title: WebTransportError() slug: Web/API/WebTransportError/WebTransportError page-type: web-api-constructor -status: - - experimental browser-compat: api.WebTransportError.WebTransportError --- -{{APIRef("WebTransport API")}}{{SeeCompatTable}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}}{{SecureContext_Header}} The **`WebTransportError()`** constructor creates a new {{domxref("WebTransportError")}} object instance. From c9cc38c3c3c342e2e952c1acd57f55e104c5bb06 Mon Sep 17 00:00:00 2001 From: "Michael[tm] Smith" Date: Thu, 18 May 2023 22:31:57 +0900 Subject: [PATCH 06/17] Change all CSS spec URLs back to drafts.csswg.org (#26833) All w3c.github.io/csswg-drafts URLs now redirect to drafts.csswg.org URLs. Relates to https://github.com/mdn/content/issues/26613. Related BCD change: https://github.com/mdn/browser-compat-data/pull/19890 --- files/en-us/web/api/animation/commitstyles/index.md | 2 +- files/en-us/web/api/css_custom_highlight_api/index.md | 2 +- files/en-us/web/css/-webkit-line-clamp/index.md | 2 +- files/en-us/web/css/@font-face/src/index.md | 2 +- .../web/css/_doublecolon_view-transition-group/index.md | 2 +- .../en-us/web/css/_doublecolon_view-transition-new/index.md | 2 +- .../en-us/web/css/_doublecolon_view-transition-old/index.md | 2 +- files/en-us/web/css/css_animated_properties/index.md | 4 ++-- files/en-us/web/css/css_animations/index.md | 4 ++-- files/en-us/web/css/css_containment/index.md | 6 +++--- files/en-us/web/css/css_scrollbars/index.md | 2 +- files/en-us/web/css/display/index.md | 2 +- files/en-us/web/text_fragments/index.md | 2 +- 13 files changed, 17 insertions(+), 17 deletions(-) diff --git a/files/en-us/web/api/animation/commitstyles/index.md b/files/en-us/web/api/animation/commitstyles/index.md index 76b2c0369fcc29c..05ef98e74a36b77 100644 --- a/files/en-us/web/api/animation/commitstyles/index.md +++ b/files/en-us/web/api/animation/commitstyles/index.md @@ -10,7 +10,7 @@ browser-compat: api.Animation.commitStyles The `commitStyles()` method of the [Web Animations API](/en-US/docs/Web/API/Web_Animations_API)'s {{domxref("Animation")}} interface writes the [computed values](/en-US/docs/Web/CSS/computed_value) of the animation's current styles into its target element's [`style`](/en-US/docs/Web/HTML/Global_attributes#style) attribute. `commitStyles()` works even if the animation has been [automatically removed](/en-US/docs/Web/API/Web_Animations_API/Using_the_Web_Animations_API#automatically_removing_filling_animations). -`commitStyles()` can be used in combination with `fill` to cause the final state of an animation to persist after the animation ends. The same effect could be achieved with `fill` alone, but [using indefinitely filling animations is discouraged](https://w3c.github.io/csswg-drafts/web-animations-1/#fill-behavior). Animations [take precedence over all static styles](/en-US/docs/Web/CSS/Cascade#cascading_order), so an indefinite filling animation can prevent the target element from ever being styled normally. +`commitStyles()` can be used in combination with `fill` to cause the final state of an animation to persist after the animation ends. The same effect could be achieved with `fill` alone, but [using indefinitely filling animations is discouraged](https://drafts.csswg.org/web-animations-1/#fill-behavior). Animations [take precedence over all static styles](/en-US/docs/Web/CSS/Cascade#cascading_order), so an indefinite filling animation can prevent the target element from ever being styled normally. Using `commitStyles()` writes the styling state into the element's [`style`](/en-US/docs/Web/HTML/Global_attributes#style) attribute, where they can be modified and replaced as normal. diff --git a/files/en-us/web/api/css_custom_highlight_api/index.md b/files/en-us/web/api/css_custom_highlight_api/index.md index f87b206011ddc3b..85ce32868586772 100644 --- a/files/en-us/web/api/css_custom_highlight_api/index.md +++ b/files/en-us/web/api/css_custom_highlight_api/index.md @@ -8,7 +8,7 @@ browser-compat: - api.Highlight - api.HighlightRegistry - css.selectors.highlight -spec-urls: https://w3c.github.io/csswg-drafts/css-highlight-api-1/ +spec-urls: https://drafts.csswg.org/css-highlight-api-1/ --- {{DefaultAPISidebar("CSS Custom Highlight API")}}{{SeeCompatTable}} diff --git a/files/en-us/web/css/-webkit-line-clamp/index.md b/files/en-us/web/css/-webkit-line-clamp/index.md index c7f90b68a83590e..7d2fcb7f017e248 100644 --- a/files/en-us/web/css/-webkit-line-clamp/index.md +++ b/files/en-us/web/css/-webkit-line-clamp/index.md @@ -15,7 +15,7 @@ In most cases you will also want to set {{cssxref("overflow")}} to `hidden`, oth When applied to anchor elements, the truncating can happen in the middle of the text, not necessarily at the end. -> **Note:** This property was originally implemented in WebKit and has some issues. It got standardized in [CSS Overflow Module Level 4](https://w3c.github.io/csswg-drafts/css-overflow-4/#propdef--webkit-line-clamp) for legacy support. The [CSS Overflow Module Level 4](https://w3c.github.io/csswg-drafts/css-overflow-4/#propdef-line-clamp) specification also defines a {{cssxref("line-clamp")}} property, which is meant to replace this property and avoid its issues. +> **Note:** This property was originally implemented in WebKit and has some issues. It got standardized in [CSS Overflow Module Level 4](https://drafts.csswg.org/css-overflow-4/#propdef--webkit-line-clamp) for legacy support. The [CSS Overflow Module Level 4](https://drafts.csswg.org/css-overflow-4/#propdef-line-clamp) specification also defines a {{cssxref("line-clamp")}} property, which is meant to replace this property and avoid its issues. ## Syntax diff --git a/files/en-us/web/css/@font-face/src/index.md b/files/en-us/web/css/@font-face/src/index.md index 78a301ca72e3565..b99f0b50b4cdc1e 100644 --- a/files/en-us/web/css/@font-face/src/index.md +++ b/files/en-us/web/css/@font-face/src/index.md @@ -64,7 +64,7 @@ src: url("trickster-COLRv1.otf") format(opentype) tech(color-COLRv1), url("trick - `` - : Specifies the full name or postscript name of a locally-installed font face using the `local()` component value, which uniquely identifies a single font face within a larger family. - The name can optionally be enclosed in quotes. The font face name [is not case-sensitive](https://w3c.github.io/csswg-drafts/css-fonts-3/#font-family-casing). + The name can optionally be enclosed in quotes. The font face name [is not case-sensitive](https://drafts.csswg.org/css-fonts-3/#font-family-casing). > **Note:** The {{domxref("Local Font Access API", "Local Font Access API", "", "nocode")}} can be used to access the user's locally installed font data — this includes higher-level details such as names, styles, and families, as well as the raw bytes of the underlying font files. diff --git a/files/en-us/web/css/_doublecolon_view-transition-group/index.md b/files/en-us/web/css/_doublecolon_view-transition-group/index.md index 4831a025846f670..e35c5146060a29a 100644 --- a/files/en-us/web/css/_doublecolon_view-transition-group/index.md +++ b/files/en-us/web/css/_doublecolon_view-transition-group/index.md @@ -30,7 +30,7 @@ By default, selected elements initially mirror the size and position of the {{cs If there's both an "old" and "new" view state, styles in the view transition style sheet animate this pseudo-element's {{cssxref("width")}} and {{cssxref("height")}} from the size of the "old" view state's border box to that of the "new" view state's border box. -> **Note:** View transition style sheet styles are dynamically generated during the view transition; see the specification [setup transition pseudo-elements](https://w3c.github.io/csswg-drafts/css-view-transitions-1/#setup-transition-pseudo-elements) and [update pseudo-element styles](https://w3c.github.io/csswg-drafts/css-view-transitions-1/#update-pseudo-element-styles) sections for more details. +> **Note:** View transition style sheet styles are dynamically generated during the view transition; see the specification [setup transition pseudo-elements](https://drafts.csswg.org/css-view-transitions-1/#setup-transition-pseudo-elements) and [update pseudo-element styles](https://drafts.csswg.org/css-view-transitions-1/#update-pseudo-element-styles) sections for more details. In addition, the element's transform is animated from the "old" view state's screen space transform to the new view state's screen space transform. This style is generated dynamically since the values of animated properties are determined at the time that the transition begins. diff --git a/files/en-us/web/css/_doublecolon_view-transition-new/index.md b/files/en-us/web/css/_doublecolon_view-transition-new/index.md index 2682588fcb7ffd8..ece636dfcc35b1c 100644 --- a/files/en-us/web/css/_doublecolon_view-transition-new/index.md +++ b/files/en-us/web/css/_doublecolon_view-transition-new/index.md @@ -36,7 +36,7 @@ html::view-transition-new(*) { } ``` -> **Note:** Additional view transition style sheet styles are also setup to animate `::view-transition-new`. These are dynamically generated during the view transition; see the specification [setup transition pseudo-elements](https://w3c.github.io/csswg-drafts/css-view-transitions-1/#setup-transition-pseudo-elements) and [update pseudo-element styles](https://w3c.github.io/csswg-drafts/css-view-transitions-1/#update-pseudo-element-styles) sections for more details. +> **Note:** Additional view transition style sheet styles are also setup to animate `::view-transition-new`. These are dynamically generated during the view transition; see the specification [setup transition pseudo-elements](https://drafts.csswg.org/css-view-transitions-1/#setup-transition-pseudo-elements) and [update pseudo-element styles](https://drafts.csswg.org/css-view-transitions-1/#update-pseudo-element-styles) sections for more details. ## Syntax diff --git a/files/en-us/web/css/_doublecolon_view-transition-old/index.md b/files/en-us/web/css/_doublecolon_view-transition-old/index.md index c82747219dd7220..736763ce535e926 100644 --- a/files/en-us/web/css/_doublecolon_view-transition-old/index.md +++ b/files/en-us/web/css/_doublecolon_view-transition-old/index.md @@ -36,7 +36,7 @@ html::view-transition-old(*) { } ``` -> **Note:** Additional view transition style sheet styles are also setup to animate `::view-transition-old`. These are dynamically generated during the view transition; see the specification [setup transition pseudo-elements](https://w3c.github.io/csswg-drafts/css-view-transitions-1/#setup-transition-pseudo-elements) and [update pseudo-element styles](https://w3c.github.io/csswg-drafts/css-view-transitions-1/#update-pseudo-element-styles) sections for more details. +> **Note:** Additional view transition style sheet styles are also setup to animate `::view-transition-old`. These are dynamically generated during the view transition; see the specification [setup transition pseudo-elements](https://drafts.csswg.org/css-view-transitions-1/#setup-transition-pseudo-elements) and [update pseudo-element styles](https://drafts.csswg.org/css-view-transitions-1/#update-pseudo-element-styles) sections for more details. ## Syntax diff --git a/files/en-us/web/css/css_animated_properties/index.md b/files/en-us/web/css/css_animated_properties/index.md index c8fe64e859d5484..6c7f6bd3993ee85 100644 --- a/files/en-us/web/css/css_animated_properties/index.md +++ b/files/en-us/web/css/css_animated_properties/index.md @@ -6,7 +6,7 @@ page-type: landing-page {{CSSRef}} -[CSS Animations](/en-US/docs/Web/CSS/CSS_Animations) and [Transitions](/en-US/docs/Web/CSS/CSS_Transitions) rely on the concept of **animatable** properties, and all CSS properties are animatable unless otherwise specified. Each property's _animation type_ determines how values [combine](https://w3c.github.io/csswg-drafts/css-values/#combining-values) - interpolate, add, or accumulate - for this property. Transitions only involve interpolation, whereas animations may use all three combination methods. +[CSS Animations](/en-US/docs/Web/CSS/CSS_Animations) and [Transitions](/en-US/docs/Web/CSS/CSS_Transitions) rely on the concept of **animatable** properties, and all CSS properties are animatable unless otherwise specified. Each property's _animation type_ determines how values [combine](https://drafts.csswg.org/css-values/#combining-values) - interpolate, add, or accumulate - for this property. Transitions only involve interpolation, whereas animations may use all three combination methods. > **Note:** The animation type for each CSS property is listed in its "Formal definition" table (E.g., {{CSSXref("color", "", "#formal_definition")}}). @@ -14,7 +14,7 @@ page-type: landing-page ## Animation types -There are mainly four animation types as defined in the [Web Animations](https://w3c.github.io/csswg-drafts/web-animations-1/#animating-properties) specification: +There are mainly four animation types as defined in the [Web Animations](https://drafts.csswg.org/web-animations-1/#animating-properties) specification: - Not animatable diff --git a/files/en-us/web/css/css_animations/index.md b/files/en-us/web/css/css_animations/index.md index f7009db33d96d71..d4e671a26fa7967 100644 --- a/files/en-us/web/css/css_animations/index.md +++ b/files/en-us/web/css/css_animations/index.md @@ -3,8 +3,8 @@ title: CSS animations slug: Web/CSS/CSS_Animations page-type: css-module spec-urls: - - https://w3c.github.io/csswg-drafts/css-animations-2/ - - https://w3c.github.io/csswg-drafts/css-animations/ + - https://drafts.csswg.org/css-animations-2/ + - https://drafts.csswg.org/css-animations/ --- {{CSSRef}} diff --git a/files/en-us/web/css/css_containment/index.md b/files/en-us/web/css/css_containment/index.md index 15b4ffe58b9776e..21df78d83857548 100644 --- a/files/en-us/web/css/css_containment/index.md +++ b/files/en-us/web/css/css_containment/index.md @@ -145,18 +145,18 @@ Its possible values are: ### Relevant to the user -The specification refers to the concept of [relevant to the user](https://w3c.github.io/csswg-drafts/css-contain/#relevant-to-the-user). An element that is relevant to the user should be rendered, as it is visible, and/or being interacted with by the user. +The specification refers to the concept of [relevant to the user](https://drafts.csswg.org/css-contain/#relevant-to-the-user). An element that is relevant to the user should be rendered, as it is visible, and/or being interacted with by the user. To be precise, an element is relevant to the user if any of the following are true: - The element appears in the viewport, or a user-agent-defined margin around the viewport (50% of the viewport dimensions, to give the app time to prepare for when the element visibility changes). - The element or its contents receive focus. - The element or its contents are selected, for example by dragging over the text with the mouse cursor or by some other highlight operation. -- The element or its contents are placed in the [top layer](https://w3c.github.io/csswg-drafts/css-position-4/#top-layer). +- The element or its contents are placed in the [top layer](https://drafts.csswg.org/css-position-4/#top-layer). ### Skips its contents -The specification refers to the concept of [skips its contents](https://w3c.github.io/csswg-drafts/css-contain/#skips-its-contents). This means that the element referred to is not relevant to the user and will not be rendered to improve performance. +The specification refers to the concept of [skips its contents](https://drafts.csswg.org/css-contain/#skips-its-contents). This means that the element referred to is not relevant to the user and will not be rendered to improve performance. To be precise, when an element skips its contents: diff --git a/files/en-us/web/css/css_scrollbars/index.md b/files/en-us/web/css/css_scrollbars/index.md index 9608a9a574bec11..027daf7bd9dc1b8 100644 --- a/files/en-us/web/css/css_scrollbars/index.md +++ b/files/en-us/web/css/css_scrollbars/index.md @@ -5,7 +5,7 @@ page-type: css-module browser-compat: - css.properties.scrollbar-color - css.properties.scrollbar-width -spec-urls: https://w3c.github.io/csswg-drafts/css-scrollbars/ +spec-urls: https://drafts.csswg.org/css-scrollbars/ --- {{CSSRef}} diff --git a/files/en-us/web/css/display/index.md b/files/en-us/web/css/display/index.md index 66a8ab51d0eb266..058c47d0361294f 100644 --- a/files/en-us/web/css/display/index.md +++ b/files/en-us/web/css/display/index.md @@ -154,7 +154,7 @@ This can be used together with {{CSSxRef("list-style-type")}} and {{CSSxRef("lis - `contents` - - : These elements don't produce a specific box by themselves. They are replaced by their pseudo-box and their child boxes. Please note that the CSS Display Level 3 spec defines how the `contents` value should affect "unusual elements" — elements that aren't rendered purely by CSS box concepts such as replaced elements. See [Appendix B: Effects of display: contents on Unusual Elements](https://w3c.github.io/csswg-drafts/css-display/#unbox) for more details. + - : These elements don't produce a specific box by themselves. They are replaced by their pseudo-box and their child boxes. Please note that the CSS Display Level 3 spec defines how the `contents` value should affect "unusual elements" — elements that aren't rendered purely by CSS box concepts such as replaced elements. See [Appendix B: Effects of display: contents on Unusual Elements](https://drafts.csswg.org/css-display/#unbox) for more details. - `none` - : Turns off the display of an element so that it has no effect on layout (the document is rendered as though the element did not exist). All descendant elements also have their display turned off. diff --git a/files/en-us/web/text_fragments/index.md b/files/en-us/web/text_fragments/index.md index 520bbcd2f88a746..c32286a8f0c343a 100644 --- a/files/en-us/web/text_fragments/index.md +++ b/files/en-us/web/text_fragments/index.md @@ -104,7 +104,7 @@ If you don't see one or more of your text fragments highlighted and you are sure ### Styling matched text fragments -Browsers are free to style the highlighted text in whatever default way they choose. The [CSS Pseudo-Elements Module Level 4](https://w3c.github.io/csswg-drafts/css-pseudo/#selectordef-target-text) defines a pseudo-element, {{cssxref("::target-text")}}, which allows you to specifying custom styling. +Browsers are free to style the highlighted text in whatever default way they choose. The [CSS Pseudo-Elements Module Level 4](https://drafts.csswg.org/css-pseudo/#selectordef-target-text) defines a pseudo-element, {{cssxref("::target-text")}}, which allows you to specifying custom styling. For example, in our [scroll-to-text demo](https://mdn.github.io/css-examples/target-text/index.html#:~:text=From%20the%20foregoing%20remarks%20we%20may%20gather%20an%20idea%20of%20the%20importance) we have the following CSS: From 1200b313a9437d941b2e2ed6c867b3104e7628f0 Mon Sep 17 00:00:00 2001 From: wbamberg Date: Thu, 18 May 2023 20:37:18 -0700 Subject: [PATCH 07/17] =?UTF-8?q?Fix=20issue=2026048:=20document=20securit?= =?UTF-8?q?y=20requirements=20for=20opening=20and=20focus=E2=80=A6=20(#268?= =?UTF-8?q?38)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/en-us/web/api/clients/openwindow/index.md | 9 +++++++++ files/en-us/web/api/windowclient/focus/index.md | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/files/en-us/web/api/clients/openwindow/index.md b/files/en-us/web/api/clients/openwindow/index.md index 2a08e39267c667a..65baf7e53958bf7 100644 --- a/files/en-us/web/api/clients/openwindow/index.md +++ b/files/en-us/web/api/clients/openwindow/index.md @@ -39,6 +39,15 @@ A {{jsxref("Promise")}} that resolves to a {{domxref("WindowClient")}} object if URL is from the same origin as the service worker or a {{Glossary("null", "null value")}} otherwise. +### Exceptions + +- `InvalidAccessError` {{domxref("DOMException")}} + - : The promise is rejected with this exception if none of the windows in the app's origin have [transient activation](/en-US/docs/Web/Security/User_activation). + +## Security requirements + +- At least one window in the app's origin must have [transient activation](/en-US/docs/Web/Security/User_activation). + ## Examples ```js diff --git a/files/en-us/web/api/windowclient/focus/index.md b/files/en-us/web/api/windowclient/focus/index.md index 01fbd91d8549fb4..57948d5b429d02c 100644 --- a/files/en-us/web/api/windowclient/focus/index.md +++ b/files/en-us/web/api/windowclient/focus/index.md @@ -27,6 +27,15 @@ None. A {{jsxref("Promise")}} that resolves to the existing {{domxref("WindowClient")}}. +### Exceptions + +- `InvalidAccessError` {{domxref("DOMException")}} + - : The promise is rejected with this exception if none of the windows in the app's origin have [transient activation](/en-US/docs/Web/Security/User_activation). + +## Security requirements + +- At least one window in the app's origin must have [transient activation](/en-US/docs/Web/Security/User_activation). + ## Examples ```js From 1c2fd1d981acb52836d3701f52ac46238972b83b Mon Sep 17 00:00:00 2001 From: Adrian Pascu <1521321+adipascu@users.noreply.github.com> Date: Fri, 19 May 2023 05:38:36 +0200 Subject: [PATCH 08/17] Replace reference to time domain with amplitude domain in `AnalyserNode .fftSize` (#26840) --- files/en-us/web/api/analysernode/fftsize/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/en-us/web/api/analysernode/fftsize/index.md b/files/en-us/web/api/analysernode/fftsize/index.md index f2fbd5b2ceaa7b7..8355d589a767c04 100644 --- a/files/en-us/web/api/analysernode/fftsize/index.md +++ b/files/en-us/web/api/analysernode/fftsize/index.md @@ -12,7 +12,7 @@ The **`fftSize`** property of the {{domxref("AnalyserNode")}} interface is an un ## Value -An unsigned integer, representing the window size of the FFT, given in number of samples. A higher value will result in more details in the frequency domain but fewer details in the time domain. +An unsigned integer, representing the window size of the FFT, given in number of samples. A higher value will result in more details in the frequency domain but fewer details in the amplitude domain. Must be a power of 2 between 2^5 and 2^15, so one of: `32`, `64`, `128`, `256`, `512`, `1024`, `2048`, `4096`, `8192`, `16384`, and `32768`. Defaults to `2048`. From ac235d9b40e4ce1b777ff952497281c6d89f5a14 Mon Sep 17 00:00:00 2001 From: A1lo Date: Fri, 19 May 2023 17:48:00 +0800 Subject: [PATCH 09/17] add missing colon (#26846) --- files/en-us/mdn/writing_guidelines/writing_style_guide/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/en-us/mdn/writing_guidelines/writing_style_guide/index.md b/files/en-us/mdn/writing_guidelines/writing_style_guide/index.md index ae1d935a57b2c7d..3fbc32dd72c94ec 100644 --- a/files/en-us/mdn/writing_guidelines/writing_style_guide/index.md +++ b/files/en-us/mdn/writing_guidelines/writing_style_guide/index.md @@ -52,7 +52,7 @@ Make sure that the opening paragraph(s) before the first heading adequately summ In a guide or tutorial, the introductory paragraph(s) should inform the reader about the topics that will be covered as well as the prerequisite knowledge the reader is expected to have, if any. The opening paragraph should mention the technologies and/or APIs that are being documented or discussed, with links to the related information, and it should offer hints to situations in which the article's contents might be useful. -- **Example of short introduction** This example of an introduction is far too short. It leaves out too much information, such as what it means exactly to "stroke" text, where the text is drawn, and so forth. +- **Example of short introduction**: This example of an introduction is far too short. It leaves out too much information, such as what it means exactly to "stroke" text, where the text is drawn, and so forth. > **`CanvasRenderingContext2D.strokeText()`** draws a string. From 1bef5d6d866f2bc6ca6ac9a5dbb208a32d5bd30b Mon Sep 17 00:00:00 2001 From: wbamberg Date: Fri, 19 May 2023 05:40:36 -0700 Subject: [PATCH 10/17] Fix issue 26739: correct beforeunload situation wrt bfcache (#26819) --- files/en-us/web/api/window/beforeunload_event/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/files/en-us/web/api/window/beforeunload_event/index.md b/files/en-us/web/api/window/beforeunload_event/index.md index 1ca1838507d4b29..0110f7e241e77b4 100644 --- a/files/en-us/web/api/window/beforeunload_event/index.md +++ b/files/en-us/web/api/window/beforeunload_event/index.md @@ -52,13 +52,13 @@ Especially on mobile, the `beforeunload` event is not reliably fired. For exampl 2. The user then switches to a different app. 3. Later, the user closes the browser from the app manager. -The `beforeunload` event is not compatible with the [back/forward cache](https://web.dev/bfcache/) (bfcache), because many pages using this event assume that the page will not continue to exist after the event is fired. To combat this, browsers will not place pages in the bfcache if they have `beforeunload` listeners, and this is bad for performance. +Additionally, on Firefox, the `beforeunload` event is not compatible with the [back/forward cache](https://web.dev/bfcache/) (bfcache): that is, Firefox will not place pages in the bfcache if they have `beforeunload` listeners, and this is bad for performance. However, unlike the `unload` event, there is a legitimate use case for the `beforeunload` event: the scenario where the user has entered unsaved data that will be lost if the page is unloaded. It is recommended that developers listen for `beforeunload` only in this scenario, and only when they actually have unsaved changes, so as to minimize the effect on performance. See the Examples section below for an example of this. -See the [Page Lifecycle API](https://developer.chrome.com/blog/page-lifecycle-api/) guide for more information about the problems associated with the `beforeunload` event. +See the [bfcache guide](https://web.dev/bfcache/#only-add-beforeunload-listeners-conditionally) on web.dev for more information about the problems associated with the `beforeunload` event. ## Examples From 8315b27444fe66b1d7894af30db83be0ab9463d8 Mon Sep 17 00:00:00 2001 From: Hamish Willee Date: Fri, 19 May 2023 23:07:38 +1000 Subject: [PATCH 11/17] WebTransport API (#26529) * WebTransportDatagramDuplexStream.outgoingMaxAge - added missing page type * WebTransport constructor - add new construtor options * WebTransport.reliability() - add property doc * Not all errors are DOMExceptions * WebTransport.draining * Apply suggestions from code review Co-authored-by: Florian Scholz * Remove secure context header except on main interface * WebTransport constructor - lots of investigation into serverhashes * Reduce the example in draining to just the most relevant part * WebTransport.congestionControl * WebTransport.createXxxstream methods - add options * WebTransport.getStats() * Editorial improvements * Add WebTransportReceiveStream interface * Record the certificate requirements * Try clarify server certificates * Fix lint error --------- Co-authored-by: Florian Scholz --- .../transferable_objects/index.md | 1 + .../en-us/web/api/webtransport/close/index.md | 6 +- .../web/api/webtransport/closed/index.md | 2 +- .../webtransport/congestioncontrol/index.md | 48 +++++++ .../createbidirectionalstream/index.md | 31 +++-- .../createunidirectionalstream/index.md | 27 +++- .../web/api/webtransport/datagrams/index.md | 2 +- .../web/api/webtransport/draining/index.md | 48 +++++++ .../web/api/webtransport/getstats/index.md | 97 ++++++++++++++ .../incomingbidirectionalstreams/index.md | 2 +- .../incomingunidirectionalstreams/index.md | 2 +- files/en-us/web/api/webtransport/index.md | 49 +++++-- .../en-us/web/api/webtransport/ready/index.md | 2 +- .../web/api/webtransport/reliability/index.md | 57 ++++++++ .../api/webtransport/webtransport/index.md | 125 +++++++++++++++--- .../readable/index.md | 2 +- .../writable/index.md | 2 +- .../incominghighwatermark/index.md | 2 +- .../incomingmaxage/index.md | 2 +- .../maxdatagramsize/index.md | 2 +- .../outgoinghighwatermark/index.md | 2 +- .../outgoingmaxage/index.md | 6 +- .../readable/index.md | 2 +- .../writable/index.md | 2 +- .../web/api/webtransporterror/source/index.md | 2 +- .../streamerrorcode/index.md | 2 +- .../webtransporterror/index.md | 5 +- .../getstats/index.md | 61 +++++++++ .../api/webtransportreceivestream/index.md | 52 ++++++++ files/jsondata/GroupData.json | 1 + 30 files changed, 580 insertions(+), 64 deletions(-) create mode 100644 files/en-us/web/api/webtransport/congestioncontrol/index.md create mode 100644 files/en-us/web/api/webtransport/draining/index.md create mode 100644 files/en-us/web/api/webtransport/getstats/index.md create mode 100644 files/en-us/web/api/webtransport/reliability/index.md create mode 100644 files/en-us/web/api/webtransportreceivestream/getstats/index.md create mode 100644 files/en-us/web/api/webtransportreceivestream/index.md diff --git a/files/en-us/web/api/web_workers_api/transferable_objects/index.md b/files/en-us/web/api/web_workers_api/transferable_objects/index.md index 8b3843a008ea6d0..1cb2f61e76bbd12 100644 --- a/files/en-us/web/api/web_workers_api/transferable_objects/index.md +++ b/files/en-us/web/api/web_workers_api/transferable_objects/index.md @@ -78,6 +78,7 @@ The items that various specifications indicate can be _transferred_ are: - {{domxref("ReadableStream")}} - {{domxref("WritableStream")}} - {{domxref("TransformStream")}} +- {{domxref("WebTransportReceiveStream")}} - {{domxref("AudioData")}} - {{domxref("ImageBitmap")}} - {{domxref("VideoFrame")}} diff --git a/files/en-us/web/api/webtransport/close/index.md b/files/en-us/web/api/webtransport/close/index.md index 9749cd61190ad9a..7eb2f556b28d07d 100644 --- a/files/en-us/web/api/webtransport/close/index.md +++ b/files/en-us/web/api/webtransport/close/index.md @@ -6,7 +6,7 @@ page-type: web-api-instance-method browser-compat: api.WebTransport.close --- -{{APIRef("WebTransport API")}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}} The **`close()`** method of the {{domxref("WebTransport")}} interface closes an ongoing WebTransport session. @@ -14,8 +14,8 @@ The **`close()`** method of the {{domxref("WebTransport")}} interface closes an ## Syntax -```js -close(info); +```js-nolint +close(info) ``` ### Parameters diff --git a/files/en-us/web/api/webtransport/closed/index.md b/files/en-us/web/api/webtransport/closed/index.md index a256866d62483bb..ead54a4ca540fd4 100644 --- a/files/en-us/web/api/webtransport/closed/index.md +++ b/files/en-us/web/api/webtransport/closed/index.md @@ -6,7 +6,7 @@ page-type: web-api-instance-property browser-compat: api.WebTransport.closed --- -{{APIRef("WebTransport API")}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}} The **`closed`** read-only property of the {{domxref("WebTransport")}} interface returns a promise that resolves when the transport is closed. diff --git a/files/en-us/web/api/webtransport/congestioncontrol/index.md b/files/en-us/web/api/webtransport/congestioncontrol/index.md new file mode 100644 index 000000000000000..9cbd51b3725cbbc --- /dev/null +++ b/files/en-us/web/api/webtransport/congestioncontrol/index.md @@ -0,0 +1,48 @@ +--- +title: "WebTransport: congestionControl property" +short-title: congestionControl +slug: Web/API/WebTransport/congestionControl +page-type: web-api-instance-property +status: + - experimental +browser-compat: api.WebTransport.congestionControl +--- + +{{APIRef("WebTransport API")}}{{SeeCompatTable}} + +The **`congestionControl`** read-only property of the {{domxref("WebTransport")}} interface indicates the application's preference for either high throughput or low-latency when sending data. + +The value is set in the [`WebTransport()` constructor options](/en-US/docs/Web/API/WebTransport/WebTransport#congestioncontrol). + +{{AvailableInWorkers}} + +## Value + +A string with one of the following values: + +- `default` + - : The default congestion control tuning for the transport. + This is the default. +- `throughput` + - : The application prefers congestion control to be tuned for throughput. +- `low-latency` + - : The application prefers congestion control to be tuned for low-latency. + +## Examples + +This example shows how to get the `congestionControl` preference. +As this is not explicitly set in the constructor, the result is `default`. + +```js +const url = "https://example.com:4999/wt"; +const transport = new WebTransport(url); +console.log(transport.congestionControl); // default +``` + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} diff --git a/files/en-us/web/api/webtransport/createbidirectionalstream/index.md b/files/en-us/web/api/webtransport/createbidirectionalstream/index.md index 8096f48979097bc..1cf96f8e05d6283 100644 --- a/files/en-us/web/api/webtransport/createbidirectionalstream/index.md +++ b/files/en-us/web/api/webtransport/createbidirectionalstream/index.md @@ -6,32 +6,47 @@ page-type: web-api-instance-method browser-compat: api.WebTransport.createBidirectionalStream --- -{{APIRef("WebTransport API")}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}} -The **`createBidirectionalStream()`** method of the {{domxref("WebTransport")}} interface opens a bidirectional stream; it returns a {{domxref("WebTransportBidirectionalStream")}} object containing `readable` and `writable` properties, which can be used to reliably read from and write to the server. +The **`createBidirectionalStream()`** method of the {{domxref("WebTransport")}} interface asynchronously opens and returns a bidirectional stream. -"Reliable" means that transmission and order of data are guaranteed. This provides slower delivery (albeit faster than with WebSockets) than {{domxref("WebTransport.datagrams", "datagrams")}}, but is needed in situations where reliability and ordering are important, like chat applications. +The method returns a {{jsxref("Promise")}} that resolves to a {{domxref("WebTransportBidirectionalStream")}} object, which has `readable` and `writable` properties that can be used to reliably read from and write to the server. +"Reliable" means that transmission and order of data are guaranteed. +This provides slower delivery (albeit faster than with WebSockets) than {{domxref("WebTransport.datagrams", "datagrams")}}, but is needed in situations where reliability and ordering are important, like chat applications. + +The relative order in which queued bytes are emptied from created streams can be specified using the send-order option. +If set, queued bytes in streams with a higher send order are guaranteed to be sent before queued bytes for streams with a lower send order. +If the order number is not set then the order in which bytes are sent is implementation dependent. +Note however that even though bytes from higher send-order streams are sent first, they may not arrive first. {{AvailableInWorkers}} ## Syntax -```js -createBidirectionalStream(); +```js-nolint +createBidirectionalStream() +createBidirectionalStream({sendOrder: "596996858"}) ``` ### Parameters -None. +- `options` {{optional_inline}} + + - : An object that may have the following properties: + + - `sendOrder` {{optional_inline}} + - : A integer value specifying the send priority of this stream relative to other streams for which the value has been set. + Queued bytes are sent first for streams that have a higher value. + If not set, the send order depends on the implementation. ### Return value -A {{domxref("WebTransportBidirectionalStream")}} object. +A {{jsxref("Promise")}} that resolves to a {{domxref("WebTransportBidirectionalStream")}} object. ### Exceptions - `InvalidStateError` {{domxref("DOMException")}} - - : Thrown if `createBidirectionalStream()` is invoked while the WebTransport is closed or failed. + - : Thrown if `createBidirectionalStream()` is invoked while the `WebTransport` is closed or failed. ## Examples diff --git a/files/en-us/web/api/webtransport/createunidirectionalstream/index.md b/files/en-us/web/api/webtransport/createunidirectionalstream/index.md index 86324e70e847519..77956c7afaca75a 100644 --- a/files/en-us/web/api/webtransport/createunidirectionalstream/index.md +++ b/files/en-us/web/api/webtransport/createunidirectionalstream/index.md @@ -6,27 +6,42 @@ page-type: web-api-instance-method browser-compat: api.WebTransport.createUnidirectionalStream --- -{{APIRef("WebTransport API")}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}} -The **`createUnidirectionalStream()`** method of the {{domxref("WebTransport")}} interface opens a unidirectional stream; it returns a {{domxref("WritableStream")}} object that can be used to reliably write data to the server. +The **`createUnidirectionalStream()`** method of the {{domxref("WebTransport")}} interface asynchronously opens a unidirectional stream. + +The method returns a {{jsxref("Promise")}} that resolves to a {{domxref("WritableStream")}} object, which can be used to reliably write data to the server. "Reliable" means that transmission and order of data are guaranteed. This provides slower delivery (albeit faster than with WebSockets) than {{domxref("WebTransport.datagrams", "datagrams")}}, but is needed in situations where reliability and ordering are important, like chat applications. +The relative order in which queued bytes are emptied from created streams can be specified using the send-order option. +If set, queued bytes in streams with a higher send order are guaranteed to be sent before queued bytes for streams with a lower send order. +If the order number is not set then the order in which bytes are sent is implementation dependent. +Note however that even though bytes from higher send-order streams are sent first, they may not arrive first. + {{AvailableInWorkers}} ## Syntax -```js -createUnidirectionalStream(); +```js-nolint +createUnidirectionalStream() +createUnidirectionalStream({sendOrder: "596996858"}) ``` ### Parameters -None. +- `options` {{optional_inline}} + + - : An object that may have the following properties: + + - `sendOrder` {{optional_inline}} + - : A integer value specifying the send priority of this stream relative to other streams for which the value has been set. + Queued bytes are sent first for streams that have a higher value. + If not set, the send order depends on the implementation. ### Return value -A {{domxref("WritableStream")}} object. +A {{jsxref("Promise")}} that resolves to a {{domxref("WritableStream")}} object. ### Exceptions diff --git a/files/en-us/web/api/webtransport/datagrams/index.md b/files/en-us/web/api/webtransport/datagrams/index.md index 573eaa00eb2ac63..2a5ac276da67ef6 100644 --- a/files/en-us/web/api/webtransport/datagrams/index.md +++ b/files/en-us/web/api/webtransport/datagrams/index.md @@ -6,7 +6,7 @@ page-type: web-api-instance-property browser-compat: api.WebTransport.datagrams --- -{{APIRef("WebTransport API")}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}} The **`datagrams`** read-only property of the {{domxref("WebTransport")}} interface returns a {{domxref("WebTransportDatagramDuplexStream")}} instance that can be used to send and receive datagrams — unreliable data transmission. diff --git a/files/en-us/web/api/webtransport/draining/index.md b/files/en-us/web/api/webtransport/draining/index.md new file mode 100644 index 000000000000000..cef729bf96d6ee8 --- /dev/null +++ b/files/en-us/web/api/webtransport/draining/index.md @@ -0,0 +1,48 @@ +--- +title: "WebTransport: draining property" +short-title: draining +slug: Web/API/WebTransport/draining +page-type: web-api-instance-property +status: + - experimental +browser-compat: api.WebTransport.draining +--- + +{{APIRef("WebTransport API")}}{{SeeCompatTable}} + +The **`draining`** read-only property of the {{domxref("WebTransport")}} interface returns a promise that resolves if a server indicates that it wants the client to gracefully close the connection. + +The promise indicates that the server plans to close down the session in the near future. +The client should close the transport as soon as possible, but can continue to use it until if finds a safe/sensible point to stop receiving data. + +{{AvailableInWorkers}} + +## Value + +A {{jsxref("Promise")}} that resolves to `undefined`. + +## Examples + +The following asynchronous function shows how you might monitor for indication that the server wants to close the connection gracefully, and then handle the request. + +```js +async function safelyCloseTransport(transport) { + await transport.draining; + + // Complete any important outstanding tasks + // ... + + transport.close({ + closeCode: 022, + reason: "ServerRequestedSafeTermination", + }); +} +``` + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} diff --git a/files/en-us/web/api/webtransport/getstats/index.md b/files/en-us/web/api/webtransport/getstats/index.md new file mode 100644 index 000000000000000..2e73ccb95abcfd0 --- /dev/null +++ b/files/en-us/web/api/webtransport/getstats/index.md @@ -0,0 +1,97 @@ +--- +title: "WebTransport: getStats() method" +short-title: getStats() +slug: Web/API/WebTransport/getStats +page-type: web-api-instance-method +status: + - experimental +browser-compat: api.WebTransport.getStats +--- + +{{APIRef("WebTransport API")}}{{SeeCompatTable}} + +The **`getStats()`** method of the {{domxref("WebTransport")}} interface asynchronously returns an object containing HTTP/3 connection statistics. + +{{AvailableInWorkers}} + +## Syntax + +```js-nolint +getStats() +``` + +### Parameters + +None. + +### Return value + +A {{jsxref("Promise")}} that resolves to a object containing HTTP/3 connection statistics. +The returned object may have the following properties/statistics: + +- `timestamp` + - : A {{domxref("DOMHighResTimeStamp")}} indicating the timestamp at which the statistics were gathered, relative to Jan 1, 1970, UTC. +- `bytesSent` + - : A positive integer indicating the number of bytes sent on the QUIC connection, including retransmissions. + Note that this count does not include additional data from protocols used by QUIC, such as UDP, or any other outer framing. +- `packetsSent` + - : A positive integer indicating the number of packets sent on the QUIC connection, including those that are known to have been lost. +- `packetsLost` + - : A positive integer indicating the number of packets lost on the QUIC connection. + This value will increase as packets are declared lost, and decrease if they are subsequently received. +- `numOutgoingStreamsCreated` + - : A positive integer indicating the number of outgoing QUIC streams created on the QUIC connection. +- `numIncomingStreamsCreated` + - : A positive integer indicating the number of incoming QUIC streams created on the QUIC connection. +- `bytesReceived` + - : A positive integer indicating the total number of bytes received on the QUIC connection. + This count includes duplicate data from streams, but does not include additional data for protocols used by QUIC, such as UDP, or any other outer framing. +- `packetsReceived` + - : A positive integer indicating the total number of packets received on the QUIC connection, including packets that were not processable. +- `smoothedRtt` + - : A {{domxref("DOMHighResTimeStamp")}} containing the smoothed [round-trip time (RTT)](/en-US/docs/Glossary/Round_Trip_Time) currently observed on the connection, calculated as an exponentially weighted moving average of an endpoint's RTT samples after taking account of acknowledgement delays. +- `rttVariation` + - : A {{domxref("DOMHighResTimeStamp")}} containing the mean variation in round-trip time samples currently observed on the connection. +- `minRtt` + - : A {{domxref("DOMHighResTimeStamp")}} containing the minimum round-trip time observed on the entire connection. +- `datagrams` + + - : An object containing statistics for datagram transmission over the connection. + The object has the following properties: + + - `timestamp` + - : A {{domxref("DOMHighResTimeStamp")}} indicating the timestamp at which the statistics were gathered, relative to Jan 1, 1970, UTC. + - `expiredOutgoing` + - : A positive integer indicating the number of datagrams that were dropped from the queue for sending because they expired. + Note that the maximum age before a datagram in the send-queue expires can be found in [`outgoingMaxAge`](/en-US/docs/Web/API/WebTransportDatagramDuplexStream/outgoingMaxAge). + - `droppedIncoming` + - : A positive integer indicating the number incoming datagrams that were dropped. + Incoming datagrams are dropped if the application does not read them before new datagrams overflow the [`readable` stream](/en-US/docs/Web/API/WebTransportDatagramDuplexStream/readable) receive queue. + - `lostOutgoing` + - : A positive integer indicating the number of sent datagrams that were declared lost. + Note that a datagram may be declared lost if, for example, no acknowledgement arrived within a timeout, or an acknowledgement for a later datagram was received first. + + + +## Examples + +The example below uses `await` to wait on the {{jsxref("Promise")}} returned by `getStats()`. +When the promise fulfills, the result for the `bytesSent` property in the stats object is logged to the console. + +```js +const stats = await transport.getStats(); +console.log(`Bytes send: ${stats.bytesSent}`); +``` + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} diff --git a/files/en-us/web/api/webtransport/incomingbidirectionalstreams/index.md b/files/en-us/web/api/webtransport/incomingbidirectionalstreams/index.md index 8475cb9d3d51246..40c7b360aa61beb 100644 --- a/files/en-us/web/api/webtransport/incomingbidirectionalstreams/index.md +++ b/files/en-us/web/api/webtransport/incomingbidirectionalstreams/index.md @@ -6,7 +6,7 @@ page-type: web-api-instance-property browser-compat: api.WebTransport.incomingBidirectionalStreams --- -{{APIRef("WebTransport API")}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}} The **`incomingBidirectionalStreams`** read-only property of the {{domxref("WebTransport")}} interface represents one or more bidirectional streams opened by the server. Returns a {{domxref("ReadableStream")}} of {{domxref("WebTransportBidirectionalStream")}} objects. Each one can be used to reliably read data from the server and write data back to it. diff --git a/files/en-us/web/api/webtransport/incomingunidirectionalstreams/index.md b/files/en-us/web/api/webtransport/incomingunidirectionalstreams/index.md index 62efeae48e274e7..8caee2439c9d4fb 100644 --- a/files/en-us/web/api/webtransport/incomingunidirectionalstreams/index.md +++ b/files/en-us/web/api/webtransport/incomingunidirectionalstreams/index.md @@ -6,7 +6,7 @@ page-type: web-api-instance-property browser-compat: api.WebTransport.incomingUnidirectionalStreams --- -{{APIRef("WebTransport API")}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}} The **`incomingUnidirectionalStreams`** read-only property of the {{domxref("WebTransport")}} interface represents one or more unidirectional streams opened by the server. Returns a {{domxref("ReadableStream")}} of {{domxref("WebTransportReceiveStream")}} objects. Each one can be used to reliably read data from the server. diff --git a/files/en-us/web/api/webtransport/index.md b/files/en-us/web/api/webtransport/index.md index 41791ca814efec8..655601c60f7da59 100644 --- a/files/en-us/web/api/webtransport/index.md +++ b/files/en-us/web/api/webtransport/index.md @@ -24,43 +24,54 @@ The **`WebTransport`** interface of the {{domxref("WebTransport API", "WebTransp - : Returns a promise that resolves when the transport is closed. - {{domxref("WebTransport.datagrams", "datagrams")}} {{ReadOnlyInline}} - : Returns a {{domxref("WebTransportDatagramDuplexStream")}} instance that can be used to send and receive datagrams. +- {{domxref("WebTransport.congestionControl", "congestionControl")}} {{ReadOnlyInline}} {{Experimental_Inline}} + - : Returns a string that indicates the application preference for either high throughput or low-latency when sending data. +- {{domxref("WebTransport.draining", "draining")}} {{ReadOnlyInline}} {{Experimental_Inline}} + - : Returns a promise that resolves if a server wants the client to gracefully close the connection. - {{domxref("WebTransport.incomingBidirectionalStreams", "incomingBidirectionalStreams")}} {{ReadOnlyInline}} - : Represents one or more bidirectional streams opened by the server. Returns a {{domxref("ReadableStream")}} of {{domxref("WebTransportBidirectionalStream")}} objects. Each one can be used to read data from the server and write data back to it. - {{domxref("WebTransport.incomingUnidirectionalStreams", "incomingUnidirectionalStreams")}} {{ReadOnlyInline}} - : Represents one or more unidirectional streams opened by the server. Returns a {{domxref("ReadableStream")}} of {{domxref("WebTransportReceiveStream")}} objects. Each one can be used to read data from the server. - {{domxref("WebTransport.ready", "ready")}} {{ReadOnlyInline}} - : Returns a promise that resolves when the transport is ready to use. +- {{domxref("WebTransport.reliability", "reliability")}} {{ReadOnlyInline}} {{Experimental_Inline}} + - : Returns a string that indicates whether the connection supports reliable transports only, or whether it also supports unreliable transports (such as UDP). ## Instance methods - {{domxref("WebTransport.close", "close()")}} - : Closes an ongoing WebTransport session. - {{domxref("WebTransport.createBidirectionalStream", "createBidirectionalStream()")}} - - : Opens a bidirectional stream; returns a {{domxref("WebTransportBidirectionalStream")}} object containing `readable` and `writable` properties, which can be used to read from and write to the server. + - : Asynchronously opens a bidirectional stream ({{domxref("WebTransportBidirectionalStream")}}) that can be used to read from and write to the server. - {{domxref("WebTransport.createUnidirectionalStream", "createUnidirectionalStream()")}} - - : Opens a unidirectional stream; returns a {{domxref("WritableStream")}} object that can be used to write to the server. + - : Asynchronously opens a unidirectional stream ({{domxref("WritableStream")}}) that can be used to write to the server. +- {{domxref("WebTransport.getStats", "getStats()")}} + - : Asynchronously returns a {{jsxref("Promise")}} that fulfills with an object containing HTTP/3 connection statistics. ## Examples -The following snippet shows how you'd connect to an HTTP/3 server by passing its URL to the {{domxref("WebTransport.WebTransport", "WebTransport()")}} constructor. Note that the scheme needs to be HTTPS, and the port number needs to be explicitly specified. Once the {{domxref("WebTransport.ready")}} promise fulfills, you can start using the connection. - -Also note that you can respond to the connection closing by waiting for the {{domxref("WebTransport.closed")}} promise to fulfill. Errors returned by WebTransport operations are of type {{domxref("WebTransportError")}}, and contain additional data on top of the standard {{domxref("DOMException")}} set. +The example code below shows how you'd connect to an HTTP/3 server by passing its URL to the {{domxref("WebTransport.WebTransport", "WebTransport()")}} constructor. +Note that the scheme needs to be HTTPS, and the port number needs to be explicitly specified. +Once the {{domxref("WebTransport.ready")}} promise fulfills, you can start using the connection. ```js -const url = "https://example.com:4999/wt"; - async function initTransport(url) { // Initialize transport connection const transport = new WebTransport(url); // The connection can be used once ready fulfills await transport.ready; - - // ... + return transport; } +``` + +You can respond to the connection closing by waiting for the {{domxref("WebTransport.closed")}} promise to fulfill. +Errors returned by `WebTransport` operations are of type {{domxref("WebTransportError")}}, and contain additional data on top of the standard {{domxref("DOMException")}} set. -// ... +The `closeTransport()` method below shows a possible implementation. +Within a `try...catch` block it uses `await` to wait for the `closed` promise to fulfill or reject, and then reports whether or not the connection closed intentionally or due to error. +```js async function closeTransport(transport) { // Respond to connection closing try { @@ -72,6 +83,24 @@ async function closeTransport(transport) { } ``` +We might call the asynchronous functions above in their own asynchronous function, as shown below. + +```js +// Use the transport +async function useTransport(url) { + const transport = await initTransport(url); + + // Use the transport object to send and receive data + // ... + + // When done, close the transport + await closeTransport(transport); +} + +const url = "https://example.com:4999/wt"; +useTransport(url); +``` + For other example code, see the individual property and method pages. ## Specifications diff --git a/files/en-us/web/api/webtransport/ready/index.md b/files/en-us/web/api/webtransport/ready/index.md index 827cbd9251fc543..f9f58aab65a41d7 100644 --- a/files/en-us/web/api/webtransport/ready/index.md +++ b/files/en-us/web/api/webtransport/ready/index.md @@ -6,7 +6,7 @@ page-type: web-api-instance-property browser-compat: api.WebTransport.ready --- -{{APIRef("WebTransport API")}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}} The **`ready`** read-only property of the {{domxref("WebTransport")}} interface returns a promise that resolves when the transport is ready to use. diff --git a/files/en-us/web/api/webtransport/reliability/index.md b/files/en-us/web/api/webtransport/reliability/index.md new file mode 100644 index 000000000000000..5821db806ca21c6 --- /dev/null +++ b/files/en-us/web/api/webtransport/reliability/index.md @@ -0,0 +1,57 @@ +--- +title: "WebTransport: reliability property" +short-title: reliability +slug: Web/API/WebTransport/reliability +page-type: web-api-instance-property +status: + - experimental +browser-compat: api.WebTransport.reliability +--- + +{{APIRef("WebTransport API")}}{{SeeCompatTable}} + +The **`reliability`** read-only property of the {{domxref("WebTransport")}} interface indicates whether the connection supports reliable transports only, or whether it also supports unreliable transports (such as UDP). + +{{AvailableInWorkers}} + +## Value + +A string with one of the following values: + +- `pending` + - : The connection has not yet been established. + The reliability is not yet known. +- `reliable-only` + - : The connection only supports reliable transports. +- `supports-unreliable` + - : The connection supports both unreliable and reliable transports. + +## Examples + +```js +const url = "https://example.com:4999/wt"; + +async function initTransport(url) { + // Initialize transport connection + const transport = new WebTransport(url); + + // Once ready fulfils the connection can be used + // Prior to this the reliability is "pending" + await transport.ready; + + if (transport.reliability == "reliable-only") { + // Use connection only with reliable transports + } else { + // Use connection with either reliable or unreliable transports. + } + // ... +} +``` + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} diff --git a/files/en-us/web/api/webtransport/webtransport/index.md b/files/en-us/web/api/webtransport/webtransport/index.md index 28853a4a97b5bc8..f75c73edcfdcfcf 100644 --- a/files/en-us/web/api/webtransport/webtransport/index.md +++ b/files/en-us/web/api/webtransport/webtransport/index.md @@ -6,59 +6,111 @@ page-type: web-api-constructor browser-compat: api.WebTransport.WebTransport --- -{{APIRef("WebTransport API")}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}} -The **`WebTransport()`** constructor creates a new -{{domxref("WebTransport")}} object instance. +The **`WebTransport()`** constructor creates a new {{domxref("WebTransport")}} object instance. {{AvailableInWorkers}} ## Syntax ```js-nolint +new WebTransport(url) new WebTransport(url, options) ``` ### Parameters - `url` - - : A string representing the URL of the HTTP/3 server to connect to. The scheme needs to be HTTPS, and the port number needs to be explicitly specified. + - : A string representing the URL of the HTTP/3 server to connect to. + The scheme must be HTTPS, and the port number needs to be explicitly specified. - `options` {{optional_inline}} - - : An object containing the following properties: + + - : An object that may have the following properties: + + - `allowPooling` {{optional_inline}} + - : A boolean value. + If `true`, the network connection for this {{domxref("WebTransport")}} can be shared with a pool of other HTTP/3 sessions. + By default the value is `false`, and the connection cannot be shared. + - `congestionControl` {{optional_inline}} + - : A string indicating the application's preference that the congestion control algorithm used when sending data over this connection be tuned for either throughput or low-latency. + This is a hint to the user agent. + The allowed values are: `default` (default), `throughput`, and `low-latency`. + - `requireUnreliable` {{optional_inline}} + - : A boolean value. + If `true`, the connection cannot be established over HTTP/2 if an HTTP/3 connection is not possible. + By default the value is `false`. - `serverCertificateHashes` {{optional_inline}} - - : An array of `WebTransportHash` objects. If specified, it allows the website to connect to a server by authenticating the certificate against the expected certificate hash instead of using the Web public key infrastructure (PKI). This feature allows Web developers to connect to WebTransport servers that would normally find obtaining a publicly trusted certificate challenging, such as hosts that are not publicly routable, or ephemeral hosts like virtual machines. -`WebTransportHash` objects contain two properties: + - : An array of objects, each defining the hash value of a server certificate along with the name of the algorithm that was used to generate it. + This option is only supported for transports using dedicated connections (`allowPooling` is `false`). + + If specified, the browser will attempt to authenticate the certificate provided by the server against the provided certificate hash(es) in order to connect, instead of using the Web public key infrastructure (PKI). + If any hashes match, the browser knows that the server has possession of a trusted certificate and will connect as normal. + If empty the user agent uses the same PKI certificate verification procedures it would use for a normal fetch operation. + + This feature allows developers to connect to WebTransport servers that would normally find obtaining a publicly trusted certificate challenging, such as hosts that are not publicly routable, or ephemeral hosts like virtual machines. + + > **Note:** The web application might typically fetch the hashes from a trusted intermediary. + > For example, you might use a cloud provider to provision VMs that run your WebTransport servers. + > The provider has trusted access to the server and can request its certificate, generate hashes, and provide these to the application via an API (which is mediated via PKI), or a cloud console. + > The web application can now connect directly to the VM-hosted server using the supplied hashes, even though the VM itself does not have a long-lived TLS certificate. + + The certificate must be an X.509v3 certificate that has a validity period of less that 2 weeks, and the current time must be within that validity period. + The format of the public key in the certificate depends on the implementation, but must minimally include ECDSA with the secp256r1 (NIST P-256) named group, and must not include RSA keys. + An ECSDA key is therefore an interoperable default public key format. + A user agent may add further requirements; these will be listed in the [browser compatibility](#browser_compatibility) section if known. -- `algorithm` - - : A string representing the algorithm to use to verify the hash. Any hash using an unknown algorithm will be ignored. -- `value` - - : A `BufferSource` representing the hash value. + Each object in the array has the following properties: + + - `algorithm` + + - : A string with the value: `sha-256` (case-insensitive). + Note that this string represents the algorithm to use to verify the hash, and that any hash using an unknown algorithm will be ignored. + At time of writing, `SHA-256` is the only hash algorithm listed in the specification. + + - `value` + - : An [`ArrayBuffer`](/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) or {{jsxref("TypedArray")}} containing the hash value. ### Exceptions - `NotSupportedError` {{domxref("DOMException")}} - : Thrown if `serverCertificateHashes` is specified but the transport protocol does not support this feature. -- `SyntaxError` {{domxref("DOMException")}} +- `SyntaxError` - : Thrown if the specified `url` is invalid, if the scheme is not HTTPS, or if the URL includes a fragment. +- `TypeError` + - : Thrown if a `serverCertificateHashes` is set for a non-dedicated connection (in other words, if `allowPooling` is `true`). ## Examples -```js -const url = "https://example.com:4999/wt"; +### Connecting with default options + +This example shows how you might construct a `WebTransport` using just a URL, wait for it to connect, and then monitor the transport and report when it has closed. + +First we define an `async` method that takes an URL and uses it to construct the `WebTransport` object. +No constructor options are specified, so the connection uses default options: dedicated connection, support for unreliable transports is not required, default congestion control, and normal Web PKI authentication with the server. +Note that the scheme needs to be HTTPS, and the port number needs to be explicitly specified. + +Once the {{domxref("WebTransport.ready")}} promise fulfills, you can start using the connection. +```js async function initTransport(url) { // Initialize transport connection const transport = new WebTransport(url); // The connection can be used once ready fulfills await transport.ready; - - // ... + return transport; } +``` -// ... +You can respond to the connection closing by waiting for the {{domxref("WebTransport.closed")}} promise to fulfill. +Errors returned by `WebTransport` operations are of type {{domxref("WebTransportError")}}, and contain additional data on top of the standard {{domxref("DOMException")}} set. +The `closeTransport()` method below shows how. +Within a `try...catch` block it uses `await` to wait for the `closed` promise to fulfill or reject, and then reports whether or not the connection closed intentionally or due to error. + +```js async function closeTransport(transport) { // Respond to connection closing try { @@ -70,6 +122,45 @@ async function closeTransport(transport) { } ``` +We might call the asynchronous functions above in their own asynchronous function, as shown below. + +```js +// Use the transport +async function useTransport(url) { + const transport = await initTransport(url); + + // Use the transport object to send and receive data + // ... + + // When done, close the transport + await closeTransport(transport); +} + +const url = "https://example.com:4999/wt"; +useTransport(url); +``` + +### Connecting with server certificate hashes + +The example below shows the code to construct a `WebTransport` that specifies the `serverCertificateHashes` option. +In this case the array contains two hashes, both encoded using the SHA-256 algorithm. +Note that the `allowPooling` option must be `false` (the default). + +```js +const transport = new WebTransport(url, { + serverCertificateHashes: [ + { + algorithm: "sha-256", + value: "5a155927eba7996228455e4721e6fe5f739ae15db6915d765e5db302b4f8a274", + }, + { + algorithm: "sha-256", + value: "7d7094e7a8d3097feff3b5ee84fa5cab58e4de78f38bcfdee5ea8b51f4bfa8fd", + }, + ], +}); +``` + ## Specifications {{Specifications}} diff --git a/files/en-us/web/api/webtransportbidirectionalstream/readable/index.md b/files/en-us/web/api/webtransportbidirectionalstream/readable/index.md index 0becddccad340d2..eb35b729363dc8d 100644 --- a/files/en-us/web/api/webtransportbidirectionalstream/readable/index.md +++ b/files/en-us/web/api/webtransportbidirectionalstream/readable/index.md @@ -6,7 +6,7 @@ page-type: web-api-instance-property browser-compat: api.WebTransportBidirectionalStream.readable --- -{{APIRef("WebTransport API")}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}} The **`readable`** read-only property of the {{domxref("WebTransportBidirectionalStream")}} interface returns a {{domxref("ReadableStream")}} instance that can be used to reliably read incoming data. diff --git a/files/en-us/web/api/webtransportbidirectionalstream/writable/index.md b/files/en-us/web/api/webtransportbidirectionalstream/writable/index.md index eed30c71c26bf02..cdfbeab146eadfb 100644 --- a/files/en-us/web/api/webtransportbidirectionalstream/writable/index.md +++ b/files/en-us/web/api/webtransportbidirectionalstream/writable/index.md @@ -6,7 +6,7 @@ page-type: web-api-instance-property browser-compat: api.WebTransportBidirectionalStream.writable --- -{{APIRef("WebTransport API")}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}} The **`writable`** read-only property of the {{domxref("WebTransportBidirectionalStream")}} interface returns a {{domxref("WritableStream")}} instance that can be used to write outgoing data. diff --git a/files/en-us/web/api/webtransportdatagramduplexstream/incominghighwatermark/index.md b/files/en-us/web/api/webtransportdatagramduplexstream/incominghighwatermark/index.md index 2ace12e589e4fc0..88758d8b540094c 100644 --- a/files/en-us/web/api/webtransportdatagramduplexstream/incominghighwatermark/index.md +++ b/files/en-us/web/api/webtransportdatagramduplexstream/incominghighwatermark/index.md @@ -6,7 +6,7 @@ page-type: web-api-instance-property browser-compat: api.WebTransportDatagramDuplexStream.incomingHighWaterMark --- -{{APIRef("WebTransport API")}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}} The **`incomingHighWaterMark`** property of the {{domxref("WebTransportDatagramDuplexStream")}} interface gets or sets the high water mark for incoming chunks of data — this is the maximum size, in chunks, that the incoming {{domxref("ReadableStream")}}'s internal queue can reach before it is considered full. See [Internal queues and queuing strategies](/en-US/docs/Web/API/Streams_API/Concepts#internal_queues_and_queuing_strategies) for more information. diff --git a/files/en-us/web/api/webtransportdatagramduplexstream/incomingmaxage/index.md b/files/en-us/web/api/webtransportdatagramduplexstream/incomingmaxage/index.md index c8bcfa7a84f3e17..0ffb20831fd6fdf 100644 --- a/files/en-us/web/api/webtransportdatagramduplexstream/incomingmaxage/index.md +++ b/files/en-us/web/api/webtransportdatagramduplexstream/incomingmaxage/index.md @@ -6,7 +6,7 @@ page-type: web-api-instance-property browser-compat: api.WebTransportDatagramDuplexStream.incomingMaxAge --- -{{APIRef("WebTransport API")}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}} The **`incomingMaxAge`** property of the {{domxref("WebTransportDatagramDuplexStream")}} interface gets or sets the maximum age for incoming datagrams, in milliseconds. diff --git a/files/en-us/web/api/webtransportdatagramduplexstream/maxdatagramsize/index.md b/files/en-us/web/api/webtransportdatagramduplexstream/maxdatagramsize/index.md index ea2a5a0afb8e11b..daceda2f5413f3a 100644 --- a/files/en-us/web/api/webtransportdatagramduplexstream/maxdatagramsize/index.md +++ b/files/en-us/web/api/webtransportdatagramduplexstream/maxdatagramsize/index.md @@ -6,7 +6,7 @@ page-type: web-api-instance-property browser-compat: api.WebTransportDatagramDuplexStream.maxDatagramSize --- -{{APIRef("WebTransport API")}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}} The **`maxDatagramSize`** read-only property of the {{domxref("WebTransportDatagramDuplexStream")}} interface returns the maximum allowable size of outgoing datagrams, in bytes, that can be written to {{domxref("WebTransportDatagramDuplexStream.writable", "writable")}}. diff --git a/files/en-us/web/api/webtransportdatagramduplexstream/outgoinghighwatermark/index.md b/files/en-us/web/api/webtransportdatagramduplexstream/outgoinghighwatermark/index.md index 87df028087c3fcf..8959cff95bd6a79 100644 --- a/files/en-us/web/api/webtransportdatagramduplexstream/outgoinghighwatermark/index.md +++ b/files/en-us/web/api/webtransportdatagramduplexstream/outgoinghighwatermark/index.md @@ -6,7 +6,7 @@ page-type: web-api-instance-property browser-compat: api.WebTransportDatagramDuplexStream.outgoingHighWaterMark --- -{{APIRef("WebTransport API")}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}} The **`outgoingHighWaterMark`** property of the {{domxref("WebTransportDatagramDuplexStream")}} interface gets or sets the high water mark for outgoing chunks of data — this is the maximum size, in chunks, that the outgoing {{domxref("WritableStream")}}'s internal queue can reach before it is considered full. See [Internal queues and queuing strategies](/en-US/docs/Web/API/Streams_API/Concepts#internal_queues_and_queuing_strategies) for more information. diff --git a/files/en-us/web/api/webtransportdatagramduplexstream/outgoingmaxage/index.md b/files/en-us/web/api/webtransportdatagramduplexstream/outgoingmaxage/index.md index fba33b3e7a18d15..aafe27cf02d2f33 100644 --- a/files/en-us/web/api/webtransportdatagramduplexstream/outgoingmaxage/index.md +++ b/files/en-us/web/api/webtransportdatagramduplexstream/outgoingmaxage/index.md @@ -1,10 +1,12 @@ --- -title: WebTransportDatagramDuplexStream.outgoingMaxAge +title: "WebTransportDatagramDuplexStream: outgoingMaxAge property" +short-title: outgoingMaxAge slug: Web/API/WebTransportDatagramDuplexStream/outgoingMaxAge +page-type: web-api-instance-property browser-compat: api.WebTransportDatagramDuplexStream.outgoingMaxAge --- -{{APIRef("WebTransport API")}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}} The **`outgoingMaxAge`** property of the {{domxref("WebTransportDatagramDuplexStream")}} interface gets or sets the maximum age for outgoing datagrams, in milliseconds. diff --git a/files/en-us/web/api/webtransportdatagramduplexstream/readable/index.md b/files/en-us/web/api/webtransportdatagramduplexstream/readable/index.md index 65ffe0983a9b056..2862c0bc9618f69 100644 --- a/files/en-us/web/api/webtransportdatagramduplexstream/readable/index.md +++ b/files/en-us/web/api/webtransportdatagramduplexstream/readable/index.md @@ -6,7 +6,7 @@ page-type: web-api-instance-property browser-compat: api.WebTransportDatagramDuplexStream.readable --- -{{APIRef("WebTransport API")}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}} The **`readable`** read-only property of the {{domxref("WebTransportDatagramDuplexStream")}} interface returns a {{domxref("ReadableStream")}} instance that can be used to unreliably read incoming datagrams from the stream. diff --git a/files/en-us/web/api/webtransportdatagramduplexstream/writable/index.md b/files/en-us/web/api/webtransportdatagramduplexstream/writable/index.md index 360df85193b4eef..f1bc2ac4410ffc1 100644 --- a/files/en-us/web/api/webtransportdatagramduplexstream/writable/index.md +++ b/files/en-us/web/api/webtransportdatagramduplexstream/writable/index.md @@ -6,7 +6,7 @@ page-type: web-api-instance-property browser-compat: api.WebTransportDatagramDuplexStream.writable --- -{{APIRef("WebTransport API")}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}} The **`writable`** read-only property of the {{domxref("WebTransportDatagramDuplexStream")}} interface returns a {{domxref("WritableStream")}} instance that can be used to unreliably write outgoing datagrams to the stream. diff --git a/files/en-us/web/api/webtransporterror/source/index.md b/files/en-us/web/api/webtransporterror/source/index.md index adcca4bc3521d9b..eb1f04f05690c44 100644 --- a/files/en-us/web/api/webtransporterror/source/index.md +++ b/files/en-us/web/api/webtransporterror/source/index.md @@ -6,7 +6,7 @@ page-type: web-api-instance-property browser-compat: api.WebTransportError.source --- -{{APIRef("WebTransport API")}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}} The **`source`** read-only property of the {{domxref("WebTransportError")}} interface returns an enumerated value indicating the source of the error. diff --git a/files/en-us/web/api/webtransporterror/streamerrorcode/index.md b/files/en-us/web/api/webtransporterror/streamerrorcode/index.md index 611384bbad87881..af4492a32f4e7b8 100644 --- a/files/en-us/web/api/webtransporterror/streamerrorcode/index.md +++ b/files/en-us/web/api/webtransporterror/streamerrorcode/index.md @@ -6,7 +6,7 @@ page-type: web-api-instance-property browser-compat: api.WebTransportError.streamErrorCode --- -{{APIRef("WebTransport API")}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}} The **`streamErrorCode`** read-only property of the {{domxref("WebTransportError")}} interface returns a number in the range 0-255 indicating the application protocol error code for this error, or `null` if one is not available. diff --git a/files/en-us/web/api/webtransporterror/webtransporterror/index.md b/files/en-us/web/api/webtransporterror/webtransporterror/index.md index a418c75a6b2310c..99dec07ca944247 100644 --- a/files/en-us/web/api/webtransporterror/webtransporterror/index.md +++ b/files/en-us/web/api/webtransporterror/webtransporterror/index.md @@ -6,10 +6,9 @@ page-type: web-api-constructor browser-compat: api.WebTransportError.WebTransportError --- -{{APIRef("WebTransport API")}}{{SecureContext_Header}} +{{APIRef("WebTransport API")}} -The **`WebTransportError()`** constructor creates a new -{{domxref("WebTransportError")}} object instance. +The **`WebTransportError()`** constructor creates a new {{domxref("WebTransportError")}} object instance. {{AvailableInWorkers}} diff --git a/files/en-us/web/api/webtransportreceivestream/getstats/index.md b/files/en-us/web/api/webtransportreceivestream/getstats/index.md new file mode 100644 index 000000000000000..0218a7a977fe0fd --- /dev/null +++ b/files/en-us/web/api/webtransportreceivestream/getstats/index.md @@ -0,0 +1,61 @@ +--- +title: "WebTransportReceiveStream: getStats() method" +short-title: getStats() +slug: Web/API/WebTransportReceiveStream/getStats +page-type: web-api-instance-method +status: + - experimental +browser-compat: api.WebTransportReceiveStream.getStats +--- + +{{APIRef("WebTransport API")}}{{SeeCompatTable}} + +The **`getStats()`** method of the {{domxref("WebTransportReceiveStream")}} interface asynchronously returns an object containing statistics for the current stream. + +The statistics include the total number of ordered bytes that have arrived on this stream (ignoring network overhead, up until the first missing byte) and the total number that have been read by the application. +It therefore provides a measure of how quickly the application is consuming bytes from the server on this particular stream. + +{{AvailableInWorkers}} + +## Syntax + +```js-nolint +getStats() +``` + +### Parameters + +None. + +### Return value + +A {{jsxref("Promise")}} that resolves to a object containing statistics about the current stream. +The returned object has the following properties: + +- `timestamp` + - : A {{domxref("DOMHighResTimeStamp")}} indicating the timestamp at which the statistics were gathered, relative to Jan 1, 1970, UTC. +- `bytesReceived` + - : A positive integer indicating the number of bytes received by this stream, up to the first missing byte. + The number does not include any network overhead, and can only increase. +- `bytesRead` + - : A positive integer indicating the number of bytes the application has read from this `WebTransportReceiveStream` stream. + This number can only increase, and is always less than or equal to `bytesReceived`. + +## Examples + +The code snippet below uses `await` to wait on the {{jsxref("Promise")}} returned by `getStats()`. +When the promise fulfills, the result for the `bytesSent` property in the stats object is logged to the console. + +```js +const stats = await stream.getStats(); +const unConsumedBytes = stats.bytesReceived - stats.bytesRead; +console.log(`Bytes in reader queue: ${unConsumedBytes}`); +``` + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} diff --git a/files/en-us/web/api/webtransportreceivestream/index.md b/files/en-us/web/api/webtransportreceivestream/index.md new file mode 100644 index 000000000000000..ae56239582de46c --- /dev/null +++ b/files/en-us/web/api/webtransportreceivestream/index.md @@ -0,0 +1,52 @@ +--- +title: WebTransportReceiveStream +slug: Web/API/WebTransportReceiveStream +page-type: web-api-interface +status: + - experimental +browser-compat: api.WebTransportReceiveStream +--- + +{{APIRef("WebTransport API")}}{{SeeCompatTable}} + +The `WebTransportReceiveStream` interface of the {{domxref("WebTransport API", "WebTransport API", "", "nocode")}} is a {{domxref("ReadableStream")}} that can be used to read from an incoming unidirectional or bidirectional {{domxref("WebTransport")}} stream from a server. + +The stream is a [readable byte stream](/en-US/docs/Web/API/Streams_API/Using_readable_byte_streams) of [`Uint8Array`](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array), and can be consumed using either a BYOB reader ([`ReadableStreamBYOBReader`](/en-US/docs/Web/API/ReadableStreamBYOBReader)) or the default reader ([`ReadableStreamDefaultReader`](/en-US/docs/Web/API/ReadableStreamDefaultReader)). + +Objects of this type are not constructed directly. +Instead they are obtained using the [`WebTransport.incomingUnidirectionalStream`](/en-US/docs/Web/API/WebTransport/incomingUnidirectionalStreams) property. + +`WebTransportReceiveStream` is a [transferable object](/en-US/docs/Web/API/Web_Workers_API/Transferable_objects). + +{{InheritanceDiagram}} + +{{AvailableInWorkers}} + +## Instance properties + +_Inherits properties from its parent interface, {{domxref("ReadableStream")}}._ + +## Instance methods + +_Also inherits properties from its parent interface, {{domxref("ReadableStream")}}._ + +- {{domxref("WebTransportReceiveStream.getStats()")}} + - : Returns a {{jsxref("Promise")}} that resolves with statistics related to this stream. + +## Examples + +See [`WebTransport.incomingUnidirectionalStreams`](/en-US/docs/Web/API/WebTransport/incomingUnidirectionalStreams) for an example of how to get a {{domxref("ReadableStream")}} of `WebTransportReceiveStream` objects. + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} + +## See also + +- [Using WebTransport](https://web.dev/webtransport/) +- {{domxref("Streams API", "Streams API", "", "nocode")}} +- [WebTransport over HTTP/3](https://datatracker.ietf.org/doc/html/draft-ietf-webtrans-http3/) diff --git a/files/jsondata/GroupData.json b/files/jsondata/GroupData.json index 5e835c102d8cdda..813474405cf3a76 100644 --- a/files/jsondata/GroupData.json +++ b/files/jsondata/GroupData.json @@ -2144,6 +2144,7 @@ "WebTransport", "WebTransportBidirectionalStream", "WebTransportDatagramDuplexStream", + "WebTransportReceiveStream", "WebTransportError" ], "methods": [], From a78beba1e117fc9062cfce09e96dcfdc84b376c0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 May 2023 15:04:15 +0000 Subject: [PATCH 12/17] Bump @mdn/yari from 2.21.0 to 2.22.0 (#26858) --- package.json | 2 +- yarn.lock | 134 +++++++++++++++++++++++++-------------------------- 2 files changed, 68 insertions(+), 68 deletions(-) diff --git a/package.json b/package.json index 7476771f0f86e96..1f1af58288b7094 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "dependencies": { "@apideck/better-ajv-errors": "^0.3.6", "@caporal/core": "^2.0.2", - "@mdn/yari": "2.21.0", + "@mdn/yari": "2.22.0", "ajv": "^8.12.0", "ajv-formats": "^2.1.1", "async": "^3.2.4", diff --git a/yarn.lock b/yarn.lock index a0aa248325d493a..e72e39ec0fc1513 100644 --- a/yarn.lock +++ b/yarn.lock @@ -590,25 +590,25 @@ resolved "https://registry.npmjs.org/@mdn/bcd-utils-api/-/bcd-utils-api-0.0.4.tgz" integrity sha512-X9Qs+Um1EyFiQVZ8wEGPMEwN53VePTpZGMt2S0glKjVxwpF1kMQfKtPoaTcWmRl7kmNpCVYjvB5c3MdMTyxrxQ== -"@mdn/browser-compat-data@^5.2.57": - version "5.2.57" - resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-5.2.57.tgz#8aa713ed5bdf2686b72775623ef14ffb58c2c0f4" - integrity sha512-ED1+lSPglyGjBVPubg44h7nIzZK/Oc3lUI/rEZ+xDWmSY/LRKFINdJKYdGnViy/R7LXa3EGDKFSC9jXG6mfaiQ== +"@mdn/browser-compat-data@^5.2.58": + version "5.2.58" + resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-5.2.58.tgz#f91f9eec2c785daebeea532612f0f8a1957df560" + integrity sha512-LgWYcbQQCJCdm5X/ACvoVnZOkXFQVKJO25frCSx4YKPuCm/Winfwey/aqCkFgJki3UGbmmqtxlcffCzmtlVMVA== -"@mdn/yari@2.21.0": - version "2.21.0" - resolved "https://registry.yarnpkg.com/@mdn/yari/-/yari-2.21.0.tgz#8472b5bc630cb56e25a8230928939bd702281a3e" - integrity sha512-fE16zZe5sLGxeEgcvVMp2LXre8lxsM/snII7QgZtVbN9zV1R+DhKi2x+7TJZ7amgJzQqdk1vQOTWRx8Dg6T0+Q== +"@mdn/yari@2.22.0": + version "2.22.0" + resolved "https://registry.yarnpkg.com/@mdn/yari/-/yari-2.22.0.tgz#c0039abdb779ab9860a841d1f57dab208a74f2f5" + integrity sha512-idujyMubmpVT3i4FVLd3/eXBmQmspbHDrJ0lEsbzGUE2tPikFtp2O10+Rh6psrf7sy8rajmF8YSrKvtLQ8e6VQ== dependencies: "@caporal/core" "^2.0.2" "@fast-csv/parse" "^4.3.6" "@mdn/bcd-utils-api" "^0.0.4" - "@mdn/browser-compat-data" "^5.2.57" + "@mdn/browser-compat-data" "^5.2.58" "@mozilla/glean" "1.4.0" - "@sentry/integrations" "^7.51.2" - "@sentry/node" "^7.51.2" + "@sentry/integrations" "^7.52.1" + "@sentry/node" "^7.52.1" "@use-it/interval" "^1.0.0" - "@vscode/ripgrep" "^1.15.2" + "@vscode/ripgrep" "^1.15.3" "@webref/css" "^5.4.4" accept-language-parser "^1.5.0" async "^3.2.4" @@ -639,7 +639,7 @@ imagemin-mozjpeg "^10.0.0" imagemin-pngquant "^9.0.2" imagemin-svgo "^10.0.1" - inquirer "^9.2.3" + inquirer "^9.2.4" is-svg "^5.0.0" js-yaml "^4.1.0" loglevel "^1.8.1" @@ -658,7 +658,7 @@ rehype-raw "^6.1.1" rehype-stringify "^9.0.3" remark-gfm "^3.0.1" - remark-parse "^10.0.1" + remark-parse "^10.0.2" remark-rehype "^10.1.0" sanitize-filename "^1.6.3" send "^0.18.0" @@ -668,7 +668,7 @@ unist-builder "^3.0.1" unist-util-visit "^4.1.2" web-features "^0.4.1" - web-specs "^2.57.0" + web-specs "^2.58.0" "@mozilla/glean@1.4.0": version "1.4.0" @@ -701,60 +701,60 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" -"@sentry-internal/tracing@7.52.0": - version "7.52.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.52.0.tgz#c4e0750ad0c3949c5bb4b59cbb708b0fef274080" - integrity sha512-o1YPcRGtC9tjeFCvWRJsbgK94zpExhzfxWaldAKvi3PuWEmPeewSdO/Q5pBIY1QonvSI+Q3gysLRcVlLYHhO5A== +"@sentry-internal/tracing@7.52.1": + version "7.52.1" + resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.52.1.tgz#c98823afd2f9814466fa26f24a1a54fe63b27c24" + integrity sha512-6N99rE+Ek0LgbqSzI/XpsKSLUyJjQ9nychViy+MP60p1x+hllukfTsDbNtUNrPlW0Bx+vqUrWKkAqmTFad94TQ== dependencies: - "@sentry/core" "7.52.0" - "@sentry/types" "7.52.0" - "@sentry/utils" "7.52.0" + "@sentry/core" "7.52.1" + "@sentry/types" "7.52.1" + "@sentry/utils" "7.52.1" tslib "^1.9.3" -"@sentry/core@7.52.0": - version "7.52.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.52.0.tgz#6c820ca48fe2f06bfd6b290044c96de2375f2ad4" - integrity sha512-BWdG6vCMeUeMhF4ILpxXTmw70JJvT1MGJcnv09oSupWHTmqy6I19YP6YcEyFuBL4jXPN51eCl7luIdLGJrPbOg== +"@sentry/core@7.52.1": + version "7.52.1" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.52.1.tgz#4de702937ba8944802bb06eb8dfdf089c39f6bab" + integrity sha512-36clugQu5z/9jrit1gzI7KfKbAUimjRab39JeR0mJ6pMuKLTTK7PhbpUAD4AQBs9qVeXN2c7h9SVZiSA0UDvkg== dependencies: - "@sentry/types" "7.52.0" - "@sentry/utils" "7.52.0" + "@sentry/types" "7.52.1" + "@sentry/utils" "7.52.1" tslib "^1.9.3" -"@sentry/integrations@^7.51.2": - version "7.52.0" - resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.52.0.tgz#632aa5e54bdfdab910a24057c2072634a2670409" - integrity sha512-tqxYzgc71XdFD8MTCsVMCPef08lPY9jULE5Zi7TzjyV2AItDRJPkixG0qjwjOGwCtN/6KKz0lGPGYU8ZDxvsbg== +"@sentry/integrations@^7.52.1": + version "7.52.1" + resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.52.1.tgz#e8a5988477e8d295fa1d90ce5628c1a7794c2a09" + integrity sha512-4uejF01723wzEHjcP5AcNcV+Z/6U27b1LyaDu0jY3XDry98MMjhS/ASzecLpaEFxi3dh/jMTUrNp1u7WMj59Lg== dependencies: - "@sentry/types" "7.52.0" - "@sentry/utils" "7.52.0" + "@sentry/types" "7.52.1" + "@sentry/utils" "7.52.1" localforage "^1.8.1" tslib "^1.9.3" -"@sentry/node@^7.51.2": - version "7.52.0" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.52.0.tgz#de3ce99eaf21ad439174960ce28b7a951c07a0ae" - integrity sha512-RNmlLTbJVHx9Yhg4D8+K1j9IiBtQ7bG3SfbJCB2V7mjxNeugejEESH5aL1xaQ9+/oFl91Yzu+H5gkRX2TsZlcg== +"@sentry/node@^7.52.1": + version "7.52.1" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.52.1.tgz#3939bf47485461d990f6fe192d9fdced6ed95953" + integrity sha512-n3frjYbkY/+eZ5RTQMaipv6Hh9w3ia40GDeRK6KJQit7OLKLmXisD+FsdYzm8Jc784csSvb6HGGVgqLpO1p9Og== dependencies: - "@sentry-internal/tracing" "7.52.0" - "@sentry/core" "7.52.0" - "@sentry/types" "7.52.0" - "@sentry/utils" "7.52.0" + "@sentry-internal/tracing" "7.52.1" + "@sentry/core" "7.52.1" + "@sentry/types" "7.52.1" + "@sentry/utils" "7.52.1" cookie "^0.4.1" https-proxy-agent "^5.0.0" lru_map "^0.3.3" tslib "^1.9.3" -"@sentry/types@7.52.0": - version "7.52.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.52.0.tgz#b7d5372f17355e3991cbe818ad567f3fe277cc6b" - integrity sha512-XnEWpS6P6UdP1FqbmeqhI96Iowqd2jM5R7zJ97txTdAd5NmdHHH0pODTR9NiQViA1WlsXDut7ZLxgPzC9vIcMA== +"@sentry/types@7.52.1": + version "7.52.1" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.52.1.tgz#bcff6d0462d9b9b7b9ec31c0068fe02d44f25da2" + integrity sha512-OMbGBPrJsw0iEXwZ2bJUYxewI1IEAU2e1aQGc0O6QW5+6hhCh+8HO8Xl4EymqwejjztuwStkl6G1qhK+Q0/Row== -"@sentry/utils@7.52.0": - version "7.52.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.52.0.tgz#cacc36d905036ba7084c14965e964fc44239d7f0" - integrity sha512-X1NHYuqW0qpZfP731YcVe+cn36wJdAeBHPYPIkXCl4o4GePCJfH/CM/+9V9cZykNjyLrs2Xy/TavSAHNCj8j7w== +"@sentry/utils@7.52.1": + version "7.52.1" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.52.1.tgz#4a3e49b918f78dba4524c924286210259020cac5" + integrity sha512-MPt1Xu/jluulknW8CmZ2naJ53jEdtdwCBSo6fXJvOTI0SDqwIPbXDVrsnqLAhVJuIN7xbkj96nuY/VBR6S5sWg== dependencies: - "@sentry/types" "7.52.0" + "@sentry/types" "7.52.1" tslib "^1.9.3" "@sinclair/typebox@^0.25.16": @@ -1000,10 +1000,10 @@ resolved "https://registry.npmjs.org/@use-it/interval/-/interval-1.0.0.tgz" integrity sha512-WQFcnSt/xM/mS8ZtJ0ut5lhPrl+V0HDPPcI/J0eUClsfiD+/r8A7IeW/pVcfpSVGWRmN3+WnjNteWuKyWs2WZg== -"@vscode/ripgrep@^1.15.2": - version "1.15.2" - resolved "https://registry.yarnpkg.com/@vscode/ripgrep/-/ripgrep-1.15.2.tgz#85b55181353d6d204210e64e03853c5e2ee6edd9" - integrity sha512-8zmyoxV6F+CY1Rinaq7LO/bGShaX2+B333X+Nqo984nC6jg2OvfZtQHzU+PKNQte2fjhm9h2ZlZTufnJxHaX9w== +"@vscode/ripgrep@^1.15.3": + version "1.15.3" + resolved "https://registry.yarnpkg.com/@vscode/ripgrep/-/ripgrep-1.15.3.tgz#bd53c555ed7f2f546edc46a47d72b1914a5ba23d" + integrity sha512-fCJP+4MRnhSTWw+GYAH93kSIomWYvdSe5206IqcHofBFcaFKR51XQNU0D5RB26Ps/5zRf5AQS26DIqqbMsB1Cw== dependencies: https-proxy-agent "^5.0.0" proxy-from-env "^1.1.0" @@ -3861,10 +3861,10 @@ inquirer@^6.0.0: strip-ansi "^5.1.0" through "^2.3.6" -inquirer@^9.2.3: - version "9.2.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-9.2.3.tgz#48993a6cf832b581a0df0ba0445c435e3d76a69c" - integrity sha512-/Et0+d28D7hnTYaqeCQkp3FYuD/X5cc2qbM6BzFdC5zs30oByoU5W/pmLc493FVVMwYmAILKjPBEmwRKTtknSQ== +inquirer@^9.2.4: + version "9.2.4" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-9.2.4.tgz#6a2c1ce029579eba2bb5c2953f0460c07e03dbf4" + integrity sha512-Q2KnguYUxC/GqkAWJBTWpXH1E3Qqh5VZaCqxK5HYYnQmaePKGLgscVfb3L3/32oF6NRW5VpGqUr75uDjtHHqRw== dependencies: ansi-escapes "^4.3.2" chalk "^5.2.0" @@ -6478,10 +6478,10 @@ remark-gfm@^3.0.1: micromark-extension-gfm "^2.0.0" unified "^10.0.0" -remark-parse@^10.0.1: - version "10.0.1" - resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz" - integrity sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw== +remark-parse@^10.0.2: + version "10.0.2" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-10.0.2.tgz#ca241fde8751c2158933f031a4e3efbaeb8bc262" + integrity sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw== dependencies: "@types/mdast" "^3.0.0" mdast-util-from-markdown "^1.0.0" @@ -7785,10 +7785,10 @@ web-namespaces@^2.0.0: resolved "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz" integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== -web-specs@^2.57.0: - version "2.57.0" - resolved "https://registry.yarnpkg.com/web-specs/-/web-specs-2.57.0.tgz#e7a430d78a89947d93ccd18a4ce5421dcde29be0" - integrity sha512-AOqcu8WK/tUig+5qTcTBbXC5Jm+nAg2tAsxL8hYImlE3GnI+KpQGYJ0bCi5tB28/pPrVuBKMKV0s0oqz1uE90Q== +web-specs@^2.58.0: + version "2.58.0" + resolved "https://registry.yarnpkg.com/web-specs/-/web-specs-2.58.0.tgz#64cf88a2be554f8d8045b561dbca3d6bffb4363d" + integrity sha512-t3xn/4SEw4cV7AXj91+ySn2jwaIusWcVeddoBdwvkBuUeTCyok+1tOwHRd+K5GhR3LrSmzdhU4jmJBVnvxjSIA== which@^1.2.9: version "1.3.1" From 37163d27e0625a83a3f8633fe58b9041867adeaa Mon Sep 17 00:00:00 2001 From: Brian Thomas Smith Date: Fri, 19 May 2023 19:19:46 +0200 Subject: [PATCH 13/17] chore: Remove embedlivesample macro calls with a fourth parameter (#26816) * chore: remove EmbedLiveSample usage with third param * chore: remove EmbedLiveSample usage with third param * chore: revert deleting duplicate headings, remove empty macro params --- .../web/api/dommatrixreadonly/scale/index.md | 2 +- .../screen_shot_2019-02-18_at_13.23.31.png | Bin 163 -> 0 bytes .../api/dommatrixreadonly/translate/index.md | 3 +- .../screen_shot_2019-02-19_at_11.20.40.png | Bin 275 -> 0 bytes .../element-details.png | Bin 18865 -> 0 bytes .../using_templates_and_slots/index.md | 2 +- .../css/-moz-force-broken-image-icon/index.md | 2 +- .../web/css/_doublecolon_before/index.md | 2 +- .../web/css/text-combine-upright/index.md | 28 ++---------------- .../text-combine-upright-all.png | Bin 2384 -> 0 bytes .../web/css/text-decoration-line/index.md | 2 +- .../web/css/text-decoration-style/index.md | 2 +- .../css/text-decoration-thickness/index.md | 2 +- .../web/css/text-underline-offset/index.md | 2 +- files/en-us/web/css/z-index/index.md | 2 +- .../html/element/heading_elements/index.md | 18 ++++------- files/en-us/web/html/element/label/index.md | 16 ++++------ 17 files changed, 24 insertions(+), 59 deletions(-) delete mode 100644 files/en-us/web/api/dommatrixreadonly/scale/screen_shot_2019-02-18_at_13.23.31.png delete mode 100644 files/en-us/web/api/dommatrixreadonly/translate/screen_shot_2019-02-19_at_11.20.40.png delete mode 100644 files/en-us/web/api/web_components/using_templates_and_slots/element-details.png delete mode 100644 files/en-us/web/css/text-combine-upright/text-combine-upright-all.png diff --git a/files/en-us/web/api/dommatrixreadonly/scale/index.md b/files/en-us/web/api/dommatrixreadonly/scale/index.md index d66019b24334506..a4803e3bc3ef02e 100644 --- a/files/en-us/web/api/dommatrixreadonly/scale/index.md +++ b/files/en-us/web/api/dommatrixreadonly/scale/index.md @@ -102,7 +102,7 @@ document .setAttribute("transform", scaledMatrixWithOrigin.toString()); ``` -{{ EmbedLiveSample('Examples', '250', '250', 'screen_shot_2019-02-18_at_13.23.31.png') }} +{{EmbedLiveSample('Examples', '250', '250')}} ## Specifications diff --git a/files/en-us/web/api/dommatrixreadonly/scale/screen_shot_2019-02-18_at_13.23.31.png b/files/en-us/web/api/dommatrixreadonly/scale/screen_shot_2019-02-18_at_13.23.31.png deleted file mode 100644 index 6237cb8f3c9f8d4bcfb8162d2fab9a65f82ff7f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^zd)FY8AyI@+O!TxaR&H=xc+BiWM}x#(7?FxSNS!d zV5p~yV@Srmx2FvS85DR}HoS6VRr_$f$4jQ>d)%hwe%rJ^*WUk*iT(=i-xybdDGm~; bKlEQ9#CiTvp&7zJ3m80I{an^LB{Ts5v{^}z diff --git a/files/en-us/web/api/dommatrixreadonly/translate/index.md b/files/en-us/web/api/dommatrixreadonly/translate/index.md index 4fc0f116dfa38d8..28bc49196d427c9 100644 --- a/files/en-us/web/api/dommatrixreadonly/translate/index.md +++ b/files/en-us/web/api/dommatrixreadonly/translate/index.md @@ -62,8 +62,7 @@ document .setAttribute("transform", matrix.toString()); ``` -{{ EmbedLiveSample('Examples', '250', '250', - 'screen_shot_2019-02-19_at_11.20.40.png') }} +{{EmbedLiveSample('Examples', '250', '250')}} ## Specifications diff --git a/files/en-us/web/api/dommatrixreadonly/translate/screen_shot_2019-02-19_at_11.20.40.png b/files/en-us/web/api/dommatrixreadonly/translate/screen_shot_2019-02-19_at_11.20.40.png deleted file mode 100644 index 4157b53d0aff62c6938aaec64ecc7bbe245a76e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 275 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 KMNUMnLSTZO+_+T$ diff --git a/files/en-us/web/api/web_components/using_templates_and_slots/index.md b/files/en-us/web/api/web_components/using_templates_and_slots/index.md index 22f937f375b9d8f..0c9b6d95613abbc 100644 --- a/files/en-us/web/api/web_components/using_templates_and_slots/index.md +++ b/files/en-us/web/api/web_components/using_templates_and_slots/index.md @@ -289,7 +289,7 @@ body { Finally let's put all the snippets together and see what the rendered result looks like. -{{ EmbedLiveSample('A_more_involved_example', '300','400','element-details.png','') }} +{{EmbedLiveSample('A_more_involved_example', '300','400')}} Notice the following points about this rendered result: diff --git a/files/en-us/web/css/-moz-force-broken-image-icon/index.md b/files/en-us/web/css/-moz-force-broken-image-icon/index.md index b5e65f7f2093133..47c620803620571 100644 --- a/files/en-us/web/css/-moz-force-broken-image-icon/index.md +++ b/files/en-us/web/css/-moz-force-broken-image-icon/index.md @@ -49,7 +49,7 @@ img { ### Result -{{ EmbedLiveSample('Examples','125','125','/files/4619/broken%20image%20link.png') }} +{{EmbedLiveSample('Examples','125','125')}} > **Note:** Unless the image has a specified height and width the broken image icon will not be displayed but the alt attribute will also be hidden if `-moz-force-broken-image-icon` is set to `1`. diff --git a/files/en-us/web/css/_doublecolon_before/index.md b/files/en-us/web/css/_doublecolon_before/index.md index eeaaf8a37c65ff6..f2dfd05e86ac9a3 100644 --- a/files/en-us/web/css/_doublecolon_before/index.md +++ b/files/en-us/web/css/_doublecolon_before/index.md @@ -51,7 +51,7 @@ q::after { #### Result -{{EmbedLiveSample('Adding_quotation_marks', '500', '50', '')}} +{{EmbedLiveSample('Adding_quotation_marks', '500', '50')}} ### Decorative example diff --git a/files/en-us/web/css/text-combine-upright/index.md b/files/en-us/web/css/text-combine-upright/index.md index d03a78883b257e8..2febf6c27bb03fc 100644 --- a/files/en-us/web/css/text-combine-upright/index.md +++ b/files/en-us/web/css/text-combine-upright/index.md @@ -51,31 +51,7 @@ text-combine-upright: unset; ## Examples -### Example using "digits" - -The digits value requires less markup than the all value when digits are being combined, but it is currently not very widely supported by browsers. - -#### HTML - -```html -

平成20年4月16日に

-``` - -#### CSS - -```css -.exampleText { - writing-mode: vertical-lr; - text-combine-upright: digits 2; - font: 36px serif; -} -``` - -#### Results - -{{EmbedLiveSample('Example using "digits"', 100, 350, "tate-chu-yoko.png")}} - -### Example using "all" +### Using 'all' with horizontal text The all value requires markup around every piece of horizontal text, but it is currently supported by more browsers than the digits value. @@ -104,7 +80,7 @@ html { #### Results -{{EmbedLiveSample('Example using "all"', 250, 300, "text-combine-upright-all.png")}} +{{EmbedLiveSample('Example using "all"', 250, 200)}} ## Specifications diff --git a/files/en-us/web/css/text-combine-upright/text-combine-upright-all.png b/files/en-us/web/css/text-combine-upright/text-combine-upright-all.png deleted file mode 100644 index 2123bdf56eaa87b4e10ea8f39fd4bf0e4a9269d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2384 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 A`2YX_ diff --git a/files/en-us/web/css/text-decoration-line/index.md b/files/en-us/web/css/text-decoration-line/index.md index 8348d542b536fc7..cc47fae33f45cf6 100644 --- a/files/en-us/web/css/text-decoration-line/index.md +++ b/files/en-us/web/css/text-decoration-line/index.md @@ -79,7 +79,7 @@ The `text-decoration-line` property is specified as `none`, or **one or more** s } ``` -{{ EmbedLiveSample('Examples', '', '', '') }} +{{EmbedLiveSample('Examples')}} ## Specifications diff --git a/files/en-us/web/css/text-decoration-style/index.md b/files/en-us/web/css/text-decoration-style/index.md index fb1ef479325db38..3d4675441751c80 100644 --- a/files/en-us/web/css/text-decoration-style/index.md +++ b/files/en-us/web/css/text-decoration-style/index.md @@ -80,7 +80,7 @@ The following creates a red wavy underline: #### Results -{{ EmbedLiveSample('Setting_a_wavy_underline', '', '', '') }} +{{EmbedLiveSample('Setting_a_wavy_underline')}} ## Specifications diff --git a/files/en-us/web/css/text-decoration-thickness/index.md b/files/en-us/web/css/text-decoration-thickness/index.md index 3e49c8cacad8743..b8b44018bfb088d 100644 --- a/files/en-us/web/css/text-decoration-thickness/index.md +++ b/files/en-us/web/css/text-decoration-thickness/index.md @@ -88,7 +88,7 @@ text-decoration-thickness: unset; #### Results -{{ EmbedLiveSample('Varying_thickness', '', '', '') }} +{{EmbedLiveSample('Varying_thickness')}} ## Specifications diff --git a/files/en-us/web/css/text-underline-offset/index.md b/files/en-us/web/css/text-underline-offset/index.md index d41386c21800cb9..8fd91bc60080ae6 100644 --- a/files/en-us/web/css/text-underline-offset/index.md +++ b/files/en-us/web/css/text-underline-offset/index.md @@ -77,7 +77,7 @@ p { } ``` -{{ EmbedLiveSample('Examples', '', '', '') }} +{{EmbedLiveSample('Examples')}} ## Specifications diff --git a/files/en-us/web/css/z-index/index.md b/files/en-us/web/css/z-index/index.md index f84ff29096b44e2..ec365faf2a27da2 100644 --- a/files/en-us/web/css/z-index/index.md +++ b/files/en-us/web/css/z-index/index.md @@ -104,7 +104,7 @@ The `z-index` property is specified as either the keyword `auto` or an `Heading level 6 ``` -#### Result - -{{ EmbedLiveSample('All_headings', '280', '300', '') }} +{{EmbedLiveSample('All_headings', '280', '300')}} ### Example page @@ -125,9 +123,7 @@ The following code shows a few headings with some content under them.

Some text here…

``` -#### Result - -{{ EmbedLiveSample('Example_page', '280', '480', '') }} +{{EmbedLiveSample('Example_page', '280', '480')}} ## Accessibility concerns @@ -135,7 +131,7 @@ The following code shows a few headings with some content under them. A common navigation technique for users of screen reading software is jumping from heading to quickly determine the content of the page. Because of this, it is important to not skip one or more heading levels. Doing so may create confusion, as the person navigating this way may be left wondering where the missing heading is. -#### Don't +**Don't do this:** ```html example-bad

Heading level 1

@@ -143,7 +139,7 @@ A common navigation technique for users of screen reading software is jumping fr

Heading level 4

``` -#### Do +**Prefer this:** ```html example-good

Heading level 1

@@ -197,7 +193,7 @@ Another common navigation technique for users of screen reading software is to g Sectioning content can be labeled using a combination of the [`aria-labelledby`](/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-labelledby) and [`id`](/en-US/docs/Web/HTML/Global_attributes#id) attributes, with the label concisely describing the purpose of the section. This technique is useful for situations where there is more than one sectioning element on the same page. -#### Examples +#### Sectioning content examples ```html
@@ -217,9 +213,7 @@ Sectioning content can be labeled using a combination of the [`aria-labelledby`] ``` -##### Result - -{{EmbedLiveSample('Examples')}} +{{EmbedLiveSample('Sectioning_content_examples')}} In this example, screen reading technology would announce that there are two {{HTMLElement("nav")}} sections, one called "Primary navigation" and one called "Footer navigation". If labels were not provided, the person using screen reading software may have to investigate each `nav` element's contents to determine their purpose. diff --git a/files/en-us/web/html/element/label/index.md b/files/en-us/web/html/element/label/index.md index dde2c28a3375607..79cee67152d6de7 100644 --- a/files/en-us/web/html/element/label/index.md +++ b/files/en-us/web/html/element/label/index.md @@ -65,9 +65,7 @@ There are no special styling considerations for `