recursal/MDN huggingface dataset:
IDBObjectStore.getAllKeys()
===========================

La méthode **`getAllKeys()`**, rattachée à l'interface `IDBObjectStore`, renvoie un objet `IDBRequest` qui permet de récupérer l'ensemble des clés pour les objets qui correspondent au critère passé en argument (ou les clés de tous les objets du magasin si aucun paramètre n'est fourni).

Si une valeur est trouvée, un clone structurelle sera créé et fourni comme résultat pour la requête.

Cette méthode produira le même résultat pour :

* un enregistrement qui n'existe pas dans la base de données
* un enregistrement qui possède une valeur indéfinie

Pour différencier ces deux situations, on peut appeler la méthode `openCursor()` avec la même clé. Cette méthode fournit un curseur si l'enregistrement existe et ne fournit aucun curseur s'il n'y a pas d'enregistrement.

Syntaxe
-------


```js
var request = objectStore.getAllKeys();
var request = objectStore.getAllKeys(query);
var request = objectStore.getAllKeys(query, count);
```

### Parameters

`query` Facultatif

Une valeur qui est (ou se résoud) en un intervalle de clés (`IDBKeyRange`).

`count` Facultatif

Une valeur qui définit le nombre de valeurs à renvoyer si plusieurs correspondent. Cette valeur doit être supérieure à `0` ou inférieure `à 2^32-1`, sinon une exception `TypeError` sera levée.

### Valeur de retour

Un objet `IDBRequest` pour lequel seront déclenchés les différents évènements relatifs à l'opération.

### Exceptions

Cette méthode peut déclencher une exception `DOMException` ayant le type suivant :

| Exception | Description |
| --- | --- |
| `TransactionInactiveError` | 
 Le magasin d'objets (`IDBObjectStore`) associé à
 la transaction est inactif.
  |
| `DataError` | 
 La clé ou l'intervalle de clé fourni contient une clé invalide ou est
 nul.
  |
| `InvalidStateError` | 
 Le magasin d'objets (`IDBObjectStore`) a été
 supprimé ou retiré.
  |

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

| Specification |
| --- |
| Indexed Database API 3.0 # ref-for-dom-idbobjectstore-getallkeys① |

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

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

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

* Utiliser IndexedDB
* Initier une connexion : `IDBDatabase`
* Utiliser les transactions : `IDBTransaction`
* Définir un intervalle de clés : `IDBKeyRange`
* Récupérer et modifier les données : `IDBObjectStore`
* Utiliser les curseurs `IDBCursor`
* Exemple de référence : To-do Notifications (exemple *live*).
IDBObjectStore.keyPath
======================

La propriété **`keyPath`** de l'interface `IDBObjectStore` renvoie le chemin de la clé de ce magasin d'objet.

Si cette propriété vaut `null` l'application doit fournir une clé pour chaque opération de modification.

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

Syntaxe
-------


```js
var mykeyPath = objectStore.keyPath;
```

### Valeur

N'importe quel type de valeur.

Exemple
-------

Dans l'exemple suivant, on initialise une transaction de lecture/écriture sur une base de données en ajoutant des données dans un magasin d'objets via la méthode `add()`. Une fois l'objet créé, on affiche `objectStore.keyPath` en sortie de la console. Pour un exemple complet et fonctionnel, vous pouvez utiliser notre application To-do Notifications (tester la démo).


```js
// On commence par ouvrir la base de données
var DBOpenRequest = window.indexedDB.open("toDoList", 4);

DBOpenRequest.onsuccess = function(event) {
  note.innerHTML += '<li>Initialisation de la base.</li>';

  // On enregistre le résultat de l'ouverture
  // dans la variable db afin de l'utiliser
  // ensuite
  var db = DBOpenRequest.result;

  // On utilise la fonction addData() afin d'ajouter
  // des données à la base de données
  addData();
};

function addData() {
  // On crée un nouvel objet prêt à être inséré
  // dans la base de données
  var newItem = [ { taskTitle: "Promener le chien", hours: 19, minutes: 30, day: 24, month: "Décembre", year: 2013, notified: "no" } ];

  // On ouvre une transaction en lecture/écriture
  // vers la base de données afin d'ajouter des
  // données
  var transaction = db.transaction(["toDoList"], "readwrite");

  // On indique le succès de la transaction
  transaction.oncomplete = function(event) {
    note.innerHTML += '<li>Transaction terminée : modification finie.</li>';
  };

  transaction.onerror = function(event) {
    note.innerHTML += '<li>Transaction non-ouverte à cause d'une erreur. Les doublons ne sont pas autorisés.</li>';
  };

  // On crée un magasin d'objet pour la transaction
  // et on affiche KeyPath dans la console
  var objectStore = transaction.objectStore("toDoList");
  console.log(objectStore.keyPath);

  // On ajoute l'objet newItem au magasin d'objets
  var objectStoreRequest = objectStore.add(newItem[0]);

  objectStoreRequest.onsuccess = function(event) {
    // On indique le succès de l'ajout de l'objet
    // dans la base de données
    note.innerHTML += '<li>Un nouvel élément a été ajouté dans la base de données.</li>';
  };
};
```

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

| Specification |
| --- |
| Indexed Database API 3.0 # ref-for-dom-idbobjectstore-keypath① |

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

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

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

* Utiliser IndexedDB
* Initier une connexion : `IDBDatabase`
* Utiliser les transactions : `IDBTransaction`
* Définir un intervalle de clés : `IDBKeyRange`
* Récupérer et modifier les données : `IDBObjectStore`
* Utiliser les curseurs `IDBCursor`
* Exemple de référence : To-do Notifications (exemple *live*).
IDBObjectStore.count()
======================

La méthode **`count()`**, rattachée à l'interface `IDBObjectStore`, renvoie un objet `IDBRequest` et, dans un *thread* séparé, renvoie le nombre d'enregistrements qui correspondent à la clé ou à l'intervalle de clé (`IDBKeyRange`) passé en argument. Si aucun argument n'est fourni, la méthode renvoie le nombre total d'enregistrements contenus dans le magasin d'objets.

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

Syntaxe
-------


```js
var requete = ObjectStore.count(optionalKeyRange);
```

### Paramètres

`optionalKeyRange`

Une clé ou un intervalle de clé (`IDBKeyRange`) qui indique le critère de comptage des enregistrements.

### Valeur de retour

Un objet `IDBRequest` sur lequel seront déclenchés les différents évènements relatifs à l'opération.

### Exceptions

Cette méthode peut déclencher une exception `DOMException` ayant un des types suivants :

| Exception | Description |
| --- | --- |
| `InvalidStateError` | L'objet `IDBObjectStore` a été supprimé. |
| `TransactionInactiveError` | La transaction associée à l'objet `IDBObjectStore` est inactive. |
| `DataError` | La clé ou l'intervalle de clé passé en argument est invalide. |

Exemples
--------

Dans ce fragment de code, on crée une transaction, on récupère un magasin d'objets puis on compte le nombre d'enregistrements contenus dans ce magasin grâce à la méthode `count()`. Lorsque l'évènement associé au succès de l'opération est déclenché, on inscrit le résultat dans la console.


```js
var transaction = db.transaction(["fThings"], "readonly");
var objectStore = transaction.objectStore("fThings");

var countRequest = objectStore.count();
countRequest.onsuccess = function () {
  console.log(countRequest.result);
};
```

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

| Specification |
| --- |
| Indexed Database API 3.0 # ref-for-dom-idbobjectstore-count① |

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

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

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

* Utiliser IndexedDB
* Initier une connexion : `IDBDatabase`
* Utiliser les transactions : `IDBTransaction`
* Définir un intervalle de clés : `IDBKeyRange`
* Récupérer et modifier les données : `IDBObjectStore`
* Utiliser les curseurs `IDBCursor`
* Exemple de référence : To-do Notifications (exemple *live*).
IDBObjectStore.indexNames
=========================

La propriété **`indexNames`**, rattachée à l'interface `IDBObjectStore`, renvoie la liste des noms des index pour les objets du magasin d'objets courant.

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

Syntaxe
-------


```js
var myindexNames = objectStore.indexNames;
```

### Valeur

Une liste `DOMStringList`.

Exemples
--------

Dans l'exemple suivant, on initialise une transaction de lecture/écriture sur une base de données en ajoutant des données dans un magasin d'objets via la méthode `add()`. Une fois l'objet créé, on affiche `objectStore.indexNames` en sortie de la console. Pour un exemple complet et fonctionnel, vous pouvez utiliser notre application To-do Notifications (tester la démo).


```js
// On commence par ouvrir la base de données
var DBOpenRequest = window.indexedDB.open("toDoList", 4);

DBOpenRequest.onsuccess = function(event) {
  note.innerHTML += '<li>Base de données initialisée.</li>';

  // On enregistre le résultat de l'ouverture
  // dans la variable db afin de l'utiliser
  // ensuite
  db = this.result;

  // On exécute la fonction addData() afin
  // d'ajouter des données à la base de données
  addData();
};

function addData() {
  // On crée un nouvel objet prêt à être inséré
  // dans la base de données
  var newItem = [ { taskTitle: "Walk dog", hours: 19, minutes: 30, day: 24, month: "December", year: 2013, notified: "no" } ];

  // On ouvre une transaction en lecture/écriture
  // vers la base de données afin d'ajouter des
  // données
  var transaction = db.transaction(["toDoList"], "readwrite");

  // On indique le succès de la transaction
  transaction.oncomplete = function(event) {
    note.innerHTML += '<li>Transaction terminée : modification finie.</li>';
  };

  transaction.onerror = function(event) {
    note.innerHTML += '<li>Transaction non-ouverte à cause d'une erreur. Les doublons ne sont pas autorisés.</li>';
  };

  // On crée un magasin d'objet pour la transaction
  // et on affiche indexNames dans la console
  var objectStore = transaction.objectStore("toDoList");
  console.log(objectStore.indexNames);

  // On ajoute l'objet newItem au magasin d'objets
  var objectStoreRequest = objectStore.add(newItem[0]);

  objectStoreRequest.onsuccess = function(event) {
    // On indique le succès de l'ajout de l'objet
    // dans la base de données
    note.innerHTML += '<li>Un nouvel élément a été ajouté dans la base de données.</li>';
  };
};
```

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

| Specification |
| --- |
| Indexed Database API 3.0 # ref-for-dom-idbobjectstore-indexnames① |

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

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

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

* Utiliser IndexedDB
* Initier une connexion : `IDBDatabase`
* Utiliser les transactions : `IDBTransaction`
* Définir un intervalle de clés : `IDBKeyRange`
* Récupérer et modifier les données : `IDBObjectStore`
* Utiliser les curseurs `IDBCursor`
* Exemple de référence : To-do Notifications (exemple *live*).
IDBObjectStore.getAll()
=======================

La méthode **`getAll()`**, rattachée à l'interface `IDBObjectStore`, renvoie un objet `IDBRequest` contenant tous les objets du magasin d'objets qui correspondent au paramètre indiqué, ou tous les objets du magasin si aucun paramètre n'a été fourni.

Si une valeur a été trouvée, un clone structuré est créé et fourni comme résultat sur l'objet de la requête.

Cette méthode produit les mêmes résultats pour :

* Un enregistrement qui n'existe pas en base de données
* Un enregistrement qui a une valeur indéfinie

Pour distinguer ces situations, on pourra appeler une de ces deux méthodes :

1. `openCursor()` en utilisant la même clé. Cette méthode fournira un curseur si l'enregistrement existe et pas de curseur sinon.
2. `count()` en utilisant la même clé, qui renverra 1 si la ligne existe et 0 sinon.
Syntaxe
-------


```js
getAll();
getAll(query);
getAll(query, count);
```

### Paramètres

`query` Facultatif

Une clé ou un intervalle de clés (`IDBKeyRange`) pour la requête. Si aucune valeur n'est passée, la valeur par défaut sera un intervalle de clé qui sélectionne tous les enregistrements du magasin d'objets.

`count` Facultatif

Indique le nombre de valeurs à renvoyer si plusieurs valeurs sont trouvées. Si cet argument est négatif ou supérieur à `2^32 - 1`, une exception `TypeError` sera levée.

### Valeur de retour

Un objet `IDBRequest` sur lequel les évènements suivants cette opération seront déclenchés.

### Exceptions

Cette méthode peut déclencher une exception `DOMException` avec l'un des types suivants :

`TransactionInactiveError`

Levée si la transaction sur l'objet `IDBObjectStore` est inactive

`DataError`

Levée si la clé ou l'intervalle de clés fourni contient une clé invalide ou est nul.

`InvalidStateError`

Levée si le magasin d'objets `IDBObjectStore` a été supprimé ou retiré.

`TypeError`

Levée si le paramètre `count` n'est pas compris entre `0` et `2^32 - 1` au sens large.

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

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

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

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

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

* Utiliser l'API IndexedDB
* Initier des transactions : `IDBDatabase`
* Utiliser des transactions : `IDBTransaction`
* Définir un intervalle de clés : `IDBKeyRange`
* Récupérer et modifier les données : `IDBObjectStore`
* Utiliser les curseurs : `IDBCursor`
* Exemples : Notifications d'une liste de tâches (voir l'exemple qui fonctionne)
IDBObjectStore.getKey()
=======================

La méthode **`getKey()`** de l'interface `IDBObjectStore` retourne un objet `IDBRequest`, et, dans un *thread* séparé, retourne la clé sélectionnée par la requête spécifiée. Cela permet de retrouver un enregistrement spécifique depuis un espace de stockage déterminé.

Si la clé a bien été retrouvée, alors un clone structuré (une copie conforme) sera créée et servira comme résultat à l'objet de requête.

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

Syntaxe
-------


```js
let request = objectStore.getKey(key);
```

### Paramètres

*key*

La clé ou l'intervale de clé qui identifie l'enregistrement à retrouver.

### Valeur de retour

Un objet `IDBRequest` sur lequel les événements ultérieurs liés à cette opération sont déclenchés.

### Exceptions

Cette méthode peut provoquer une `DOMException` de l'un des types suivants :

| Exception | Description |
| --- | --- |
| `TransactionInactiveError` | La transaction de ce `IDBObjectStore` est inactive. |
| `DataError` | La clé ou la plage de clés fournie contient une clé invalide. |
| `InvalidStateError` | Le `IDBObjectStore` a été supprimé ou retiré. |

Exemple
-------


```js
let openRequest = indexedDB.open("telemetry");
openRequest.onsuccess = (event) => {
  let db = event.target.result;
  let store = db.transaction("netlogs").objectStore("netlogs");

  let today = new Date();
  let yesterday = new Date(today);
  yesterday.setDate(today.getDate() - 1);
  let request = store.getKey(IDBKeyRange(yesterday, today));
  request.onsuccess = (event) => {
    let when = event.target.result;
    alert("La 1ère activité des dernières 24 heures s'est produite à " + when);
  };
};
```

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

| Specification |
| --- |
| Indexed Database API 3.0 # ref-for-dom-idbobjectstore-getkey① |

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

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

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

* Utiliser IndexedDB
* Transactions de départ : `IDBDatabase`
* Utilisation des transactions : `IDBTransaction`
* Réglage d'une fourchette de clés : `IDBKeyRange`
* Récupération et modification de vos données : `IDBObjectStore`
* Utilisation des curseurs : `IDBCursor`
* Exemple de référence : Notifications des tâches (voir l'exemple en direct.)
ServiceWorkerContainer.getRegistration()
========================================

La méthode **`getRegistration()`** de l'interface `ServiceWorkerContainer` fournis un objet `ServiceWorkerRegistration` (en-US) dont la porté inclue l'URL du document. Cette méthode retourne une `Promise` qui se résout avec un `ServiceWorkerRegistration` (en-US) ou `undefined`.

Syntaxe
-------


```js
serviceWorkerContainer.getRegistration(scope).then(function(serviceWorkerRegistration) { ... });
```

### Paramètres

`scope` Facultatif

Un identifiant unique pour l'enregistrement du service worker que vous voulez récupérer. L'URL de porté de l'enregistrement . C'est souvent une URL relative.

### Valeur retournée

Une `Promise` (en-US) qui est résolue avec un objet `ServiceWorkerRegistration` (en-US) ou `undefined`.

Exemple
-------


```js
navigator.serviceWorker.getRegistration("/app").then(function (registration) {
  if (registration) {
    document.querySelector("#status").textContent =
      "ServiceWorkerRegistration found.";
  }
});
```

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

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

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

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

La propriété **`loopEnd`** de l'interface `AudioBufferSourceNode` est un nombre flottant à double précision qui indique, en secondes, à quel moment de l'`AudioBuffer` la relecture doit s'arrêter, et éventuellement boucler de nouveau en reprenant à la position indiquée par la propriété `loopStart`. Elle n'est prise en compte que si la propriété `loop` vaut `true.`

Syntaxe
-------


```js
var source = contexteAudio.createBufferSource();
source.loopEnd = 3;
```

### Valeur

Un nombre flottant à double précision. La valeur par défaut est `0`.

Exemples
--------

Dans cet exemple, la fonction `AudioContext.decodeAudioData` (en-US) est utilisée pour décoder une piste audio et la mettre dans un `AudioBufferSourceNode`. L'interface fournit deux boutons pour démarrer et arrêter la lecture, et des sliders pour modifier les propriétés `playbackRate`, `loopStart` et `loopEnd` à la volée.

Lorsque la lecture de la source audio est terminée, elle boucle. Il est possible de contrôler la durée de la boucle en modifiant `loopStart` et `loopEnd`. Par exemple, si leurs valeurs sont fixées à 20 et 25, respectivement, le son bouclera entre la 20ème et la 25ème secondes du morceau.

**Note :** Voir l'exemple complet et son code source.


```js
function getData() {
  source = contexteAudio.createBufferSource();
  requete = new XMLHttpRequest();

  requete.open('GET', 'viper.ogg', true);

  requete.responseType = 'arraybuffer';

  requete.onload = function() {
    var donneesAudio = requete.response;

    contexteAudio.decodeAudioData(donneesAudio, function(buffer) {
        maMemoireTampon = buffer;
        dureeMorceau = buffer.duration;
        source.buffer = maMemoireTampon;
        source.playbackRate.value = playbackControl.value;
        source.connect(contexteAudio.destination);
        source.loop = true;

        loopstartControl.setAttribute('max', Math.floor(dureeMorceau));
        loopendControl.setAttribute('max', Math.floor(dureeMorceau));
      },

      function(e){"Erreur lors du décodage des données audio " + e.err});

  }

  requete.send();
}

  ...

loopstartControl.oninput = function() {
  source.loopStart = loopstartControl.value;
  loopstartValue.innerHTML = loopstartControl.value;
}

loopendControl.oninput = function() {
  source.loopEnd = loopendControl.value;
  loopendValue.innerHTML = loopendControl.value;
}
```

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

| Specification |
| --- |
| Web Audio API # dom-audiobuffersourcenode-loopend |

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
AudioBufferSourceNode.loopStart
===============================


 La propriété `loopStart` de l'interface `AudioBufferSourceNode` est un nombre flottant à double précision qui indique, en secondes, à quel moment de l'`AudioBuffer` la lecture doit reprendre lors d'une boucle. Elle n'est prise en compte que lorque la propriété `loop` est `true`.
Syntaxe
-------


```js
var source = contexteAudio.createBufferSource();
source.loopStart = 3;
```

### Valeur

Un nombre flottant à double précision. La valeur par défaut est `0`.

Exemple
-------

Dans cet exemple, la fonction `AudioContext.decodeAudioData` (en-US) est utilisée pour décoder une piste audio et la mettre dans un `AudioBufferSourceNode`. L'interface fournit deux boutons pour démarrer et arrêter la lecture, et des sliders pour modifier les propriétés `playbackRate`, `loopStart` et `loopEnd` à la volée.

Lorsque la lecture de la source audio est terminée, elle boucle. Il est possible de contrôler la durée de la boucle en modifiant `loopStart` et `loopEnd`. Par exemple, si leurs valeurs sont fixées à 20 et 25, respectivement, le son bouclera entre la 20ème et la 25ème secondes du morceau.

**Note :** Voir l'exemple complet en direct et son code source.


```js
function getData() {
  source = audioCtx.createBufferSource();
  request = new XMLHttpRequest();

  request.open('GET', 'viper.ogg', true);
  request.responseType = 'arraybuffer';

  request.onload = function() {
    var audioData = request.response;

    audioCtx.decodeAudioData(audioData, function(buffer) {
        myBuffer = buffer;
        songLength = buffer.duration;
        source.buffer = myBuffer;
        source.playbackRate.value = playbackControl.value;
        source.connect(audioCtx.destination);
        source.loop = true;

        loopstartControl.setAttribute('max', Math.floor(songLength));
        loopendControl.setAttribute('max', Math.floor(songLength));
      },

      function(e){"Erreur lors du décodage des données " + e.err});

  }

  request.send();
}

  ...

loopstartControl.oninput = function() {
  source.loopStart = loopstartControl.value;
  loopstartValue.innerHTML = loopstartControl.value;
}

loopendControl.oninput = function() {
  source.loopEnd = loopendControl.value;
  loopendValue.innerHTML = loopendControl.value;
}
```

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

| Specification |
| --- |
| Web Audio API # dom-audiobuffersourcenode-loopstart |

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