recursal/MDN huggingface dataset:
BaseAudioContext.createBufferSource()
=====================================

La méthode `createBufferSource()` de l'interface `BaseAudioContext` est utilisée pour créer un nouveau `AudioBufferSourceNode`, qui peut être employé pour jouer des données audio contenues dans un objet `AudioBuffer`.

Des `AudioBuffer` peuvent être créés en utilisant `BaseAudioContext.createBuffer`, ou sont retournés par la méthode `BaseAudioContext.decodeAudioData` (en-US) quand elle a terminé de décoder une piste audio avec succès.

Syntaxe
-------


```js
var source = baseAudioContext.createBufferSource();
```

### Retourne

Un `AudioBufferSourceNode`.

Exemple
-------

Dans cet exemple, on crée un tampon de deux secondes, on le remplit avec du bruit blanc, puis on le joue via un `AudioBufferSourceNode`. Les commentaires devraient expliquer clairement ce qui se passe.

**Note :** Vous pouvez également exécuter le code en direct, ou voir la source.


```js
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var button = document.querySelector("button");
var pre = document.querySelector("pre");
var myScript = document.querySelector("script");

pre.innerHTML = myScript.innerHTML;

// Stéréo
var channels = 2;
// Crée un tampon stéréo vide de deux secondes au
// taux d’échantillonage de l’AudioContext
var frameCount = audioCtx.sampleRate \* 2.0;

var myArrayBuffer = audioCtx.createBuffer(2, frameCount, audioCtx.sampleRate);

button.onclick = function () {
  // Remplit le tampon avec du bruit blanc ;
  // simplement des valeurs aléatoires entre -1.0 et 1.0
  for (var channel = 0; channel < channels; channel++) {
    // Ceci nous donne l’ArrayBuffer qui contient les données
    var nowBuffering = myArrayBuffer.getChannelData(channel);
    for (var i = 0; i < frameCount; i++) {
      // Math.random() est parmi [0; 1.0]
      // audio doit être parmi [-1.0; 1.0]
      nowBuffering[i] = Math.random() \* 2 - 1;
    }
  }

  // Obtient un AudioBufferSourceNode.
  // C’est l’AudioNode à utiliser quand nous voulons jouer un AudioBuffer
  var source = audioCtx.createBufferSource();
  // renseigne l’AudioBufferSourceNode avec notre tampon
  source.buffer = myArrayBuffer;
  // connecte l’AudioBufferSourceNode à la
  // destination afin qu’on puisse entendre le son
  source.connect(audioCtx.destination);
  // commence la lecture de la source
  source.start();
};
```

Spécifications
--------------

| Specification |
| --- |
| Web Audio API # dom-baseaudiocontext-createbuffersource |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* Utiliser la Web Audio API
AudioContext.createGain()
=========================

La méthode createGain de l'interface `AudioContext` crée un `GainNode` qui peut être utilisé pour contrôler le volume global du graphe audio.

Syntaxe
-------


```js
var contexteAudio = new AudioContext();
var gainNode = contexteAudio.createGain();
```

### Retourne

Un `GainNode` qui prend en entrée une ou plusieurs sources audio et en sortie un son dont le volume a été ajusté à un niveau indiqué par le paramètre de type a-rate `GainNode.gain` (en-US).

Exemple
-------

L'exemple suivant montre l'utilisation d'un `AudioContext` pour créer un `GainNode`, qui sert à activer et désactiver le son au clic d'un bouton, en changeant la valeur de la propriété gain.

L'extrait de code ci-dessous ne fonctionne pas tel quel - pour un exemple complet qui fonctionne, consulter la démo Voice-change-O-matic (et son code source.)


```html
<div>
  <button class="boutonson">Mute button</button>
</div>
```



```js
var contexteAudio = new (window.AudioContext || window.webkitAudioContext)();
var gainNode = contexteAudio.createGain();
var boutonSon = document.querySelector('.boutonson'),
    source;

if (navigator.getUserMedia) {
  navigator.getUserMedia (
    // contraintes - cette app nécessite seulement l'audio
    {
       audio: true
    },
    // fonction de rappel en cas de succès
    function (flux) {
        source = contexteAudio.createMediaStreamSource(flux);
    },
    // fonction de rappel en cas d'erreur
    function (erreur) {
        console.log("L'erreur à la noix suivante vient de se produire : " + erreur);
    });
}
else {
    console.log("getUserMedia n'est pas supporté par votre navigateur !");
}

source.connect(gainNode);
gainNode.connect(contexteAudio.destination);

  ...

boutonSon.onclick = couperSon;

function couperSon () {
    if (boutonSon.id == "") {
        gainNode.gain.value = 0;
        boutonSon.id = "activated";
        boutonSon.innerHTML = "Activer le son";
    }
    else {
        gainNode.gain.value = 1;
        boutonSon.id = "";
        boutonSon.innerHTML = "Couper le son";
    }
}
```

Spécifications
--------------

| Specification |
| --- |
| Web Audio API # dom-baseaudiocontext-creategain |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* Utiliser la Web Audio API (en-US)
PerformanceEntry.name
=====================

La propriété **`name`** de l'interface `PerformanceEntry` renvoie une valeur qui précise davantage la valeur renvoyée par la propriété `PerformanceEntry.entryType`. Cette propriété est en lecture seule.

**Note:** Cette fonctionnalité est disponible via les Web Workers

Syntaxe
-------


```js
var name = entry.name;
```

### Valeur de retour

La valeur de retour dépend du sous-type de l'objet `PerformanceEntry` et de la valeur de `PerformanceEntry.entryType`, comme le montre le tableau ci-dessous.

| Type de valeur pour `name` | Sous-type | Type (`entryType`) | Description |
| --- | --- | --- | --- |
| `URL` | `PerformanceFrameTiming`, `PerformanceNavigationTiming` | `frame`, `navigation` | L'adresse du document. |
| `URL` | `PerformanceResourceTiming` | `resource` | L'URL résolue de la ressource demandée. Cette valeur ne change pas même si la demande est redirigée. |
| `DOMString` | `PerformanceMark` | `mark` | Le nom utilisé lorsque le marqueur a été créé en appelant `mark()`. |
| `DOMString` | `PerformanceMeasure` | `measure` | Le nom utilisé lorsque la mesure a été créée en appelant `measure()`. |
| `DOMString` | `PerformancePaintTiming` | `paint` | Soit `'first-paint'` ou `'first-contentful-paint'`. |

Exemple
-------

L'exemple suivant montre l'utilisation de la propriété `name`.


```js
function run\_PerformanceEntry() {
  console.log("Support de PerformanceEntry ...");

  if (performance.mark === undefined) {
    console.log("... performance.mark n'est pas pris en charge");
    return;
  }

  // Crée quelques entrées de performance via la méthode mark()
  performance.mark("Begin");
  do\_work(50000);
  performance.mark("End");

  // Utilise getEntries() pour itérer à travers chaque entrée.
  let p = performance.getEntries();
  for (let i = 0; i < p.length; i++) {
    console.log("Entry[" + i + "]");
    check\_PerformanceEntry(p[i]);
  }
}
function check\_PerformanceEntry(obj) {
  let properties = ["name", "entryType", "startTime", "duration"];
  let methods = ["toJSON"];

  for (let i = 0; i < properties.length; i++) {
    // Vérifie chaque propriété
    let supported = properties[i] in obj;
    if (supported)
      console.log("..." + properties[i] + " = " + obj[properties[i]]);
    else console.log("..." + properties[i] + " = Not supported");
  }
  for (let i = 0; i < methods.length; i++) {
    // Vérifie chaque méthode
    let supported = typeof obj[methods[i]] == "function";
    if (supported) {
      let js = obj[methods[i]]();
      console.log("..." + methods[i] + "() = " + JSON.stringify(js));
    } else {
      console.log("..." + methods[i] + " = Not supported");
    }
  }
}
```

Spécifications
--------------

| Specification |
| --- |
| Performance Timeline # dom-performanceentry-name |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
PerformanceEntry.startTime
==========================

La propriété **`startTime`** renvoie le premier `timestamp` enregistré pour l'entrée de performance.

**Note:** Cette fonctionnalité est disponible via les Web Workers

La valeur renvoyée par cette propriété dépend du `type` de l'entrée de performance :

* « `frame` » - retourne le
 `timestamp` quand l'affichage a été démarré.
* « `mark` » - retourne le `timestamp` lorsque le marquage a été créé par un appel de `performance.mark()`.
* « `measure` » - retourne le `timestamp` lorsque la mesure a été créée par un appel à `performance.measure()`.
* « `navigation` » - retourne le `timestamp` avec une valeur de "`0`".
* « `resource` » - retourne le `timestamp` immédiatement avant que le navigateur ne commence à récupérer la ressource.

Cette propriété est en lecture seule.

Syntaxe
-------


```js
entry.startTime;
```

### Valeur de retour

Un objet `DOMHighResTimeStamp` représentant le premier horodatage lorsque l'entrée de performance a été créée.

**Note :** Si l'entrée de performance a un `entryType` "`resource`" (c'est-à-dire que l'entrée est un objet `PerformanceResourceTiming`), cette propriété renvoie la valeur de l'horodatage fournie par `PerformanceResourceTiming.fetchStart`.

Exemple
-------

L'exemple suivant montre l'utilisation de la propriété `startTime`.


```js
function run\_PerformanceEntry() {
  console.log("Support de PerformanceEntry ...");

  if (performance.mark === undefined) {
    console.log("... performance.mark n'est pas pris en charge");
    return;
  }

  // Crée quelques entrées de performance via la méthode mark()
  performance.mark("Begin");
  do\_work(50000);
  performance.mark("End");

  // Utilise getEntries() pour itérer à travers chaque entrée
  let p = performance.getEntries();
  for (let i = 0; i < p.length; i++) {
    log("Entry[" + i + "]");
    check\_PerformanceEntry(p[i]);
  }
}
function check\_PerformanceEntry(obj) {
  let properties = ["name", "entryType", "startTime", "duration"];
  let methods = ["toJSON"];

  for (let i = 0; i < properties.length; i++) {
    // On vérifie chaque propriété
    let supported = properties[i] in obj;
    if (supported) log("..." + properties[i] + " = " + obj[properties[i]]);
    else log("..." + properties[i] + " = N'est pas pris en charge");
  }
  for (let i = 0; i < methods.length; i++) {
    // On vérifie chaque méthode
    let supported = typeof obj[methods[i]] == "function";
    if (supported) {
      let js = obj[methods[i]]();
      log("..." + methods[i] + "() = " + JSON.stringify(js));
    } else {
      log("..." + methods[i] + " = N'est pas pris en charge");
    }
  }
}
```

Spécifications
--------------

| Specification |
| --- |
| Performance Timeline # dom-performanceentry-starttime |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
PerformanceEntry.toJSON()
=========================

La méthode **`toJSON()`** permet de sérialiser l'objet `PerformanceEntry` courant et renvoie une représentation JSON de l'objet.

**Note:** Cette fonctionnalité est disponible via les Web Workers

Syntaxe
-------


```js
let jsonObj = perfEntry.toJSON();
```

### Arguments

Aucun.

### Valeur de retour

`json`

Un objet JSON qui est la sérialisation de l'objet `PerformanceEntry`.

Exemple
-------

L'exemple suivant montre l'utilisation de la méthode `toJSON()`.


```js
function run\_PerformanceEntry() {
  console.log("Support de PerformanceEntry ...");

  if (performance.mark === undefined) {
    console.log("... performance.mark n'est pas pris en charge");
    return;
  }

  // Crée quelques entrées de performance via la méthode mark()
  performance.mark("Begin");
  do\_work(50000);
  performance.mark("End");

  // Utilise getEntries() pour itérer à travers chaque entrée.
  let p = performance.getEntries();
  for (let i = 0; i < p.length; i++) {
    console.log("Entry[" + i + "]");
    check\_PerformanceEntry(p[i]);
  }
}
function check\_PerformanceEntry(obj) {
  let properties = ["name", "entryType", "startTime", "duration"];
  let methods = ["toJSON"];

  for (let i = 0; i < properties.length; i++) {
    // On vérifie chaque propriété
    let supported = properties[i] in obj;
    if (supported)
      console.log("..." + properties[i] + " = " + obj[properties[i]]);
    else console.log("..." + properties[i] + " = N'est pas pris en charge");
  }
  for (let i = 0; i < methods.length; i++) {
    // On vérifie chaque méthode
    let supported = typeof obj[methods[i]] == "function";
    if (supported) {
      let js = obj[methods[i]]();
      console.log("..." + methods[i] + "() = " + JSON.stringify(js));
    } else {
      console.log("..." + methods[i] + " = N'est pas pris en charge");
    }
  }
}
```

Spécifications
--------------

| Specification |
| --- |
| Performance Timeline # dom-performanceentry-tojson |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
PerformanceEntry.entryType
==========================

La propriété **`entryType`** renvoie un `DOMString` représentant le type de mesure de performance tel que, par exemple, « `mark` ». Cette propriété est en lecture seule.

**Note:** Cette fonctionnalité est disponible via les Web Workers

Syntaxe
-------


```js
var type = entry.entryType;
```

### Valeur de retour

La valeur de retour dépend du sous-type de l'objet `PerformanceEntry` et affecte la valeur de la propriété `PerformanceEntry.name` comme le montre le tableau ci-dessous.

### Noms des types d'entrée de performance

| Valeur | Sous-type | Type de propriété pour le nom | Description de la valeur du nom. |
| --- | --- | --- | --- |
| `element` | `PerformanceElementTiming` | `DOMString` | Rapporte le temps de chargement des éléments. |
| `frame`, `navigation` | `PerformanceFrameTiming`, `PerformanceNavigationTiming` | `URL` | L'adresse du document. |
| `resource` | `PerformanceResourceTiming` | `URL` | L'URL résolue de la ressource demandée. Cette valeur ne change pas même si la demande est redirigée. |
| `mark` | `PerformanceMark` | `DOMString` | Le nom utilisé lorsque la marque a été créée en appelant `mark()`. |
| `measure` | `PerformanceMeasure` | `DOMString` | Le nom utilisé lorsque la mesure a été créée en appelant `measure()`. |
| `paint` | `PerformancePaintTiming` | `DOMString` | Soit `'first-paint'` ou `'first-contentful-paint'`. |
| `longtask` | `PerformanceLongTaskTiming` | `DOMString` | Signale les cas de tâches longues. |

Exemple
-------

L'exemple suivant montre l'utilisation de la propriété `entryType`.


```js
function run\_PerformanceEntry() {
  // Vérifie le support des fonctionnalités avant de continuer
  if (performance.mark === undefined) {
    console.log("performance.mark n'est pas pris en charge");
    return;
  }

  // Crée une entrée de performance nommée "begin" via la méthode mark()
  performance.mark("begin");

  // Vérifie le type d'entrée de toutes les entrées "begin".
  let entriesNamedBegin = performance.getEntriesByName("begin");
  for (let i = 0; i < entriesNamedBegin.length; i++) {
    let typeOfEntry = entriesNamedBegin[i].entryType;
    console.log("L'entrée est de type : " + typeOfEntry);
  }
}
```

Spécifications
--------------

| Specification |
| --- |
| Performance Timeline # dom-performanceentry-entrytype |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
ServiceWorkerRegistration.scope
===============================

La propriété en lecture seule **`scope`** de l'interface `ServiceWorkerRegistration` (en-US) renvoie un identifiant unique pour un enregistrement de service worker. Le service worker doit être sur la même origine que le document qui enregistre le `ServiceWorker`.

**Note :** Cette fonctionnalité est disponible dans Web Workers.

Syntaxe
-------


```js
serviceWorkerRegistration.scope;
```

Spécifications
--------------

| Specification |
| --- |
| Service Workers # service-worker-registration-scope |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* Utilisation des Service Workers
* Exemple basique de code pour les Services workers
* ServiceWorker est-il prêt?
* `Promesse`
* Utilisation des web workers
ServiceWorkerRegistration.getNotifications()
============================================

La méthode **`getNotifications()`** de l'interface `ServiceWorkerRegistration` (en-US) renvoie une liste des notifications dans l'ordre dans lequel elles ont été créées à partir de l'origine actuelle via l'enregistrement actuel du service worker. Les origines peuvent avoir de nombreuses inscriptions de service worker actives mais de portée différente. Les notifications créées par un service worker sur la même origine ne seront pas disponibles pour les autres services workers actifs sur la même origine.

Syntaxe
-------


```js
serviceWorkerRegistration.getNotifications(options)
.then(function(notificationsList) { ... })
```

### Paramétres

options Facultatif

Un objet contenant des options pour filtrer les notifications renvoyées. Les options disponibles sont:

* `tag`: Un `DOMString` représentant un tag de notification. Si spécifié, seules les notifications contenant cette balise seront renvoyées.

### Valeur de retour

Une `Promesse` qui se résout en une liste d'objets `Notification`.

Exemple
-------


```js
navigator.serviceWorker.register("sw.js");

const options = { tag: "user\_alerts" };

navigator.serviceWorker.ready.then((registration) => {
  registration.getNotifications(options).then((notifications) => {
    // do something with your notifications
  });
});
```

Spécifications
--------------

| Specification |
| --- |
| Notifications API Standard # dom-serviceworkerregistration-getnotifications |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
ServiceWorkerRegistration.active
================================

**Expérimental:** **Cette fonction est expérimentale**  
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.  
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.

La propriété **`active`** de l'interface `ServiceWorkerRegistration` (en-US) retourne un *service worker* dont le `ServiceWorker.state` est `activating` ou `activated`. Cette propriété est initialement définie à `null`.

Un *worker* actif contrôle un `ServiceWorkerClient` (en-US) si l'URL du client appartient au domaine de l'inscription (l'option `scope` définie lorsque `ServiceWorkerContainer.register` est initialement appelé.)

**Note :** Cette fonctionnalité est disponible dans les Web Workers.

Syntaxe
-------


```js
sw = ServiceWorker.active;
```

### Valeur

Un objet `ServiceWorker`, si le *worker* est actuellement dans un état `activating` ou `activated`.

Spécifications
--------------

| Specification |
| --- |
| Service Workers # navigator-service-worker-active |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* Utiliser les Service Workers (en-US)
* Service workers basic code example
* Is ServiceWorker ready?
* `Promise`
* Utilisation des web workers (en-US)
IDBIndex.getAll()
=================

La méthode **`getAll()`** de l'interface `IDBIndex` fait une requête (`IDBRequest`) qui renvoie un tableau ordonné suivant les clés, des clones structurés des enregistrements de l'index relié (`IDBIndex`). On peut limiter le nombre d'enregistrements en les filtrant suivant leurs clés ou en paramétrant le compteur.

On peut comparer cette méthode avec une recherche par curseur. Effectivement, il est plus intéressant si l'on veut accéder aux enregistrements un par un d'utiliser un `curseur`, les clones structurés des valeurs seront faits un par un. Mais si l'on veut un tableau des clones structurés des valeurs il vaut mieux utiliser `getAll()`, le moteur Gecko fera les clones structurés en une seule fois.

Syntaxe
-------


```js
var getAllKeysRequest = IDBIndex.getAll();
var getAllKeysRequest = IDBIndex.getAll(query);
var getAllKeysRequest = IDBIndex.getAll(query, count);
```

### Paramètres

query Facultatif

Une clé ou un intervalle de clé (`IDBKeyRange`) **pour filtrer**, seules les valeurs des enregistrements correspondant sont renvoyées. Par défaut toutes les clones structurés des enregistrements de l'index relié sont renvoyés.

count Facultatif

Le nombre d'enregistrement **maximum renvoyés**. Un nombre décimal sera tronqué. Zéro annule le compteur et toutes les valeurs sont retournées.

### Valeur de retour

`IDBRequest`

La propriété `result` de cette requête renvoie le tableau des clones structurés des enregistrements en cas de succès.

### Exceptions

`TransactionInactiveError`

Cette `exception` est levée si la transaction (`IDBTransaction`) est inactive.

`DataError`

Cette exception (`DOMException`) est levée si la clé ou l'intervalle de clé (`IDBKeyRange`) est invalide.

`InvalidStateError`

Cette exception (`DOMException`) est levée si l'index à été supprimé.

`TypeError`

Cette exception (`DOMException`) est levée si le compteur n'est pas un nombre positif.

Exemples
--------


```js
//on récupère l’accès à l'index
var myIndex = objectStore.index("index");
//on fait une requête de recherche sur l'index
var getAllKeyRequest = myIndex.getAllKeys();
//si la requête réussi
getAllKeysRequest.onsuccess = function () {
  //on affiche le résultat sur la console
  //~= [{key:'a',value:un\_clone\_structuré},{key:'2',value:un\_clone\_structuré},...]
  console.log(getAllKeysRequest.result);
};
```

Spécifications
--------------

| Specification |
| --- |
| Indexed Database API 3.0 # ref-for-dom-idbindex-getall① |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Utiliser IndexedDB`
* `Débuter une connexion`
* `Utilisé les transactions`
* `Définir l'intervalle des clés`
* `Accès aux magasins d'objets`
* `Utiliser les curseur`
* Exemple de référence: To-do Notifications (view example live.)