Améliorations de l'API pour l'utilisation de fichiers dans le navigateur

Compatibilité avec plusieurs lecteurs et rédacteurs pour FileSystemSyncAccessHandle, et rédacteur exclusif pour FileSystemWritableFileStream.

Plusieurs lecteurs et rédacteurs pour FileSystemSyncAccessHandle

Le système de fichiers privés d'origine (parfois également appelé système de fichiers de bucket) permet aux développeurs d'accéder à des fichiers optimisés pour des performances de lecture et d'écriture maximales. Cela se produit via des objets FileSystemSyncAccessHandle. Actuellement, la tentative d'ouverture de plusieurs objets FileSystemSyncAccessHandle pour la même entrée de fichier échoue et renvoie une erreur NoModificationAllowedError. Comme cette contrainte est limitée dans certains cas d'utilisation, Chrome 121 introduit un nouveau paramètre mode pour la méthode FileSystemFileHandle.createSyncAccessHandle() avec les valeurs de chaîne autorisées suivantes:

  • "readwrite": valeur par défaut actuelle. Une fois ouverte, toutes les méthodes sur FileSystemSyncAccessHandle sont autorisées. Une seule instance de FileSystemSyncAccessHandle est autorisée.
  • "read-only" : autorise plusieurs lecteurs. Une fois ouvertes, seules les méthodes de lecture sur FileSystemSyncAccessHandle sont autorisées: read(), getSize() et close(). Plusieurs instances de FileSystemSyncAccessHandle peuvent être créées, à condition qu'elles soient toutes en mode lecture seule.
  • "readwrite-unsafe": plusieurs rédacteurs autorisés. Une fois ouverte, toutes les méthodes sur FileSystemSyncAccessHandle sont autorisées. Plusieurs instances de FileSystemSyncAccessHandle peuvent être créées, à condition qu'elles soient toutes en mode non sécurisé en lecture/écriture.

Le comportement actuel est préservé en conservant l'option "readwrite" par défaut, ce qui n'autorise qu'une seule instance à la fois. Si un site doit ouvrir plusieurs objets FileSystemSyncAccessHandle, mais n'a pas besoin d'effectuer d'écritures, vous devez utiliser l'option "read-only". Enfin, la dernière option "readwrite-unsafe" autorise plusieurs instances, ainsi qu'une lecture et une écriture. Dans ce cas, les écritures peuvent être pour adultes si elles sont effectuées à partir de plusieurs onglets, et les sites doivent fournir leur propre schéma de verrouillage.

const handle1 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});
// This will succeed:
const handle2 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});

Rédacteur exclusif pour FileSystemWritableFileStream

Contrairement à FileSystemSyncAccessHandle, plusieurs instances de FileSystemWritableFileStream peuvent être créées par entrée de fichier aujourd'hui. Ce qui manque, c'est un moyen de proposer une option pour un auteur exclusif. Chrome 121 ajoute un paramètre mode facultatif à la méthode FileSystemAccessFileHandle.createWritable() avec les valeurs suivantes:

  • Mode "exclusive": un seul auteur peut exister à la fois.
  • Mode "siloed": il s'agit du mode par défaut actuel. Chaque auteur créé possède son propre fichier d'échange.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();

Prise en charge des navigateurs

Les deux fonctionnalités, à savoir plusieurs lecteurs et rédacteurs pour FileSystemSyncAccessHandle, et écriture exclusive pour FileSystemWritableFileStream, sont compatibles à partir de Chrome 121.

Accéder à l'essai de développement

Pour participer à l'essai de développement et tester la fonctionnalité avant le lancement de Chrome 121, définissez l'indicateur #file-system-access-locking-scheme dans chrome://flags sur Activé. Cela vous permettra de tester la fonctionnalité localement sur votre ordinateur.

Remerciements

Cet article a été lu par Daseul Lee, Nathan Memmott et Rachel Andrew.