ब्राउज़र में फ़ाइलों के साथ काम करने के लिए API सुधार

FileSystemSyncAccessHandle के लिए, एक से ज़्यादा पाठकों और लेखकों के लिए और FileSystemWritableFileStream के लिए, खास लेखक के तौर पर काम करने की सुविधा.

थॉमस स्टेनर
थॉमस स्टेनर

FileSystemSyncAccessHandle के लिए, एक से ज़्यादा पाठक और लेखक

ऑरिजिन प्राइवेट फ़ाइल सिस्टम (कभी-कभी इसे बकेट फ़ाइल सिस्टम भी कहा जाता है) की मदद से, डेवलपर ऐसी फ़ाइलों को ऐक्सेस कर सकते हैं जिन्हें पढ़ने और लिखने की परफ़ॉर्मेंस बेहतर बनाने के लिए ऑप्टिमाइज़ किया गया है. यह FileSystemSyncAccessHandle ऑब्जेक्ट के ज़रिए होता है. फ़िलहाल, एक ही फ़ाइल के लिए एक से ज़्यादा FileSystemSyncAccessHandle ऑब्जेक्ट को खोलने की कोशिश, NoModificationAllowedError के साथ नहीं की जा सकी. ऐसे कई मामले हैं जिनमें यह कंस्ट्रेंट सीमित हो रहा है, इसलिए Chrome 121, FileSystemFileHandle.createSyncAccessHandle() तरीके के लिए एक नया mode पैरामीटर उपलब्ध कराता है. इसमें, इन स्ट्रिंग वैल्यू को शामिल किया जाता है:

  • "readwrite": यह मौजूदा डिफ़ॉल्ट सेटिंग है. फ़ाइल खोलने के बाद, FileSystemSyncAccessHandle पर किसी भी तरीके को इस्तेमाल किया जा सकता है. FileSystemSyncAccessHandle के सिर्फ़ एक इंस्टेंस की अनुमति है.
  • "read-only" : कई लोगों को पढ़ने की अनुमति देता है. फ़ाइल खोलने के बाद, FileSystemSyncAccessHandle पर सिर्फ़ रीड-लाइक मेथड का इस्तेमाल किया जा सकता है: read(), getSize(), और close(). अगर सभी रीड-ओनली मोड में हैं, तो FileSystemSyncAccessHandle के एक से ज़्यादा इंस्टेंस बनाए जा सकते हैं.
  • "readwrite-unsafe": एक से ज़्यादा लेखकों को लिखने की अनुमति देता है. फ़ाइल खोलने के बाद, FileSystemSyncAccessHandle पर किसी भी तरीके को इस्तेमाल किया जा सकता है. FileSystemSyncAccessHandle के एक से ज़्यादा इंस्टेंस बनाए जा सकते हैं, जब तक कि सभी रीडराइट-असुरक्षित मोड में हों.

"readwrite" विकल्प को डिफ़ॉल्ट के तौर पर रखकर, मौजूदा व्यवहार को बनाए रखा जाता है. इससे एक बार में सिर्फ़ एक इंस्टेंस को अनुमति मिलती है. अगर किसी साइट को एक से ज़्यादा FileSystemSyncAccessHandle ऑब्जेक्ट खोलने की ज़रूरत है, लेकिन उसमें लिखने की ज़रूरत नहीं है, तो "read-only" विकल्प का इस्तेमाल किया जाना चाहिए. आखिर में, आखिरी विकल्प "readwrite-unsafe" में एक से ज़्यादा इंस्टेंस के साथ-साथ पढ़ने और लिखने, दोनों की अनुमति है. इस मामले में, अगर एक से ज़्यादा टैब से कॉन्टेंट लिखा जाता है, तो हो सकता है कि कॉन्टेंट वयस्कों के लिए हो. साथ ही, साइटों को अपने हिसाब से लॉकिंग स्कीम उपलब्ध करानी होगी.

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

FileSystemWritableFileStream के लिए खास लेखक

FileSystemSyncAccessHandle के उलट, आज हर फ़ाइल एंट्री के लिए FileSystemWritableFileStream एक से ज़्यादा इंस्टेंस बनाए जा सकते हैं. एक खास लेखक के लिए विकल्प देने का एक तरीका मौजूद नहीं है. Chrome 121, FileSystemAccessFileHandle.createWritable() तरीके में एक वैकल्पिक mode पैरामीटर जोड़ता है, जिसमें ये वैल्यू होती हैं:

  • "exclusive" मोड: एक समय पर सिर्फ़ एक लेखक मौजूद हो सकता है.
  • "siloed" मोड: यह मौजूदा डिफ़ॉल्ट मोड है. बनाए गए हर लेखक के पास उसकी अपनी स्वैप फ़ाइल होगी.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();

ब्राउज़र समर्थन

ये दोनों सुविधाएं, Chrome 121 में काम करती हैं. जैसे, FileSystemSyncAccessHandle के लिए एक से ज़्यादा पाठक और लेखक और FileSystemWritableFileStream के लिए खास लेखक.

डेवलपर के लिए मुफ़्त में आज़माने की अवधि शुरू करें

Chrome 121 के लॉन्च होने से पहले, इस सुविधा को आज़माने के लिए डेव ट्रायल की सुविधा चालू करने के लिए, chrome://flags में #file-system-access-locking-scheme फ़्लैग को चालू है पर सेट करें. इससे आपको अपनी मशीन पर स्थानीय रूप से सुविधा की जांच करने में मदद मिलेगी.

स्वीकार हैं

इस लेख की समीक्षा डज़ूल ली, नेथन मेमॉट, और रेचल एंड्रू ने की थी.