File System Access API के लिए स्थायी अनुमतियां

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

मौजूदा तरीके से जुड़ी समस्याएं

File System Access API की मदद से डेवलपर, उपयोगकर्ता की लोकल हार्ड डिस्क पर मौजूद फ़ाइलों को पढ़ सकते हैं. साथ ही, उनके पास फ़ाइलों में बदलाव करने का विकल्प भी होता है. इस एपीआई का इस्तेमाल करने वाले कई अन्य ऐप्लिकेशन में से एक लोकप्रिय ऐप्लिकेशन Visual Studio Code (VS Code) है. यह Microsoft का आईडीई है, जो सीधे ब्राउज़र में चलता है. VS Code खोलने पर, आपको Welcome स्क्रीन दिखेगी. यहां नई फ़ाइल बनाई जा सकती है. इसके अलावा, कोई मौजूदा फ़ाइल या फ़ोल्डर खोला जा सकता है.

Visual Studio Code की वेलकम स्क्रीन.

फ़ोल्डर खोलें पर क्लिक करके, अपनी हार्ड डिस्क पर मौजूद किसी फ़ोल्डर को चुनने पर, ब्राउज़र आपसे पूछेगा कि क्या आपको VS Code को इस फ़ोल्डर को देखने का ऐक्सेस देना है.

Visual Studio Code, देखने का ऐक्सेस मांग रहा है.

ऐक्सेस देने के बाद, फ़ोल्डर के क्रम में नेविगेट किया जा सकता है. साथ ही, VS Code के एडिटर में फ़ाइलें खोली जा सकती हैं. किसी भी फ़ाइल में बदलाव करने पर, ब्राउज़र आपसे पूछेगा कि क्या आपको फ़ोल्डर में बदलाव करने का ऐक्सेस देना है.

Visual Studio Code, बदलाव करने का ऐक्सेस मांग रहा है.

इसकी अनुमति देने पर, पता बार में मौजूद फ़ाइल का आइकॉन बदल जाता है. साथ ही, एक छोटा डाउन ऐरो जुड़ जाता है. इससे पता चलता है कि ऐप्लिकेशन के पास फ़ाइल को पढ़ने और उसमें बदलाव करने की अनुमतियां हैं. अनुमतियां बदलने के लिए, आइकॉन पर क्लिक करें. इसके बाद, ऐक्सेस हटाएं पर क्लिक करें, ताकि ऐप्लिकेशन फ़ाइलों में बदलाव न कर सके.

इस इमेज में Visual Studio Code में पता बार के आइकॉन का प्रॉम्प्ट दिखाया गया है.

यह ऐक्सेस तब तक रहता है, जब तक ऑरिजिन का आखिरी टैब बंद नहीं कर दिया जाता. इसके बाद, अगर ऐप्लिकेशन को बंद करके फिर से खोला जाता है, तो VS Code आपको वहीं से काम जारी रखने की अनुमति देता है जहां आपने छोड़ा था. हाल ही में खोले गए पर क्लिक करने पर, VS Code आपको पहले से खुले फ़ोल्डर को फिर से खोलने का विकल्प देता है.

इस इमेज में, Visual Studio Code में हाल ही में खोली गई फ़ाइलें दिखाई गई हैं.

हालांकि, अगर आपने पहले फ़ोल्डर में बदलाव करने की अनुमति दी थी, तो अब आपको फिर से अनुमति देनी होगी. इससे बहुत जल्दी थकान हो जाती है. समाधान के बारे में जानने से पहले, यानी File System Access API के लिए लगातार बनी रहने वाली अनुमतियों के बारे में जानने से पहले, यह जान लें कि VS Code को हाल ही के फ़ोल्डर के बारे में कैसे पता चलता है?

रीलोड करने के बाद, Visual Studio Code में बदलाव करने का ऐक्सेस मांगा जा रहा है.

फ़ाइल सिस्टम ऐक्सेस एपीआई में, फ़ाइलों और फ़ोल्डर का ऐक्सेस FileSystemHandle ऑब्जेक्ट के ज़रिए मैनेज किया जाता है: FileSystemFileHandle ऑब्जेक्ट फ़ाइलों के लिए और FileSystemDirectoryHandle ऑब्जेक्ट फ़ोल्डर (डायरेक्ट्री) के लिए. दोनों को IndexedDB में सेव किया जा सकता है. VS Code भी ऐसा ही करता है. इसे देखने के लिए, Chrome DevTools खोलें. इसके बाद, Application टैब में IndexedDB सेक्शन पर जाएं. इसके बाद, vscode-web-db डेटाबेस में मौजूद काम की टेबल vscode-filehandles-store चुनें.

Chrome DevTools में Visual Studio Code को डीबग करने की सुविधा दिखाई गई है. इसमें IndexedDB सेक्शन में, सेव किया गया FileSystemHandle दिख रहा है.

नया तरीका: क्या बदल रहा है और कब

Chrome, उपयोगकर्ताओं के लिए एक नई सुविधा लॉन्च कर रहा है. इससे उपयोगकर्ता चाहें, तो अपनी फ़ाइलों और फ़ोल्डर का ऐक्सेस हमेशा के लिए दे सकते हैं. इससे उन्हें बार-बार अनुमति देने के लिए नहीं कहा जाएगा. Chrome 122 से, इस नई सुविधा का इस्तेमाल किया जा सकता है. इसे पहले आज़माने के लिए, Chrome 120 से शुरू होने वाले वर्शन में, chrome://flags/#file-system-access-persistent-permission और chrome://flags/#one-time-permission फ़्लैग को चालू है पर टॉगल करें.

पहला, नई सुविधा में अनुमति मांगने वाला एक नया प्रॉम्प्ट शामिल है. इसमें तीन विकल्प होते हैं. इसकी मदद से, उपयोगकर्ता हर बार ऐप्लिकेशन को चुनिंदा फ़ाइलों और फ़ोल्डर का ऐक्सेस दे सकते हैं.

इस इमेज में, Visual Studio Code में तीन तरह की अनुमतियों के लिए प्रॉम्प्ट दिखाया गया है.

इस नए तीन-तरफ़ा प्रॉम्प्ट में ये विकल्प शामिल हैं:

  • इस समय के लिए अनुमति दें: इससे ऐप्लिकेशन को मौजूदा सेशन के लिए फ़ाइलें ऐक्सेस करने की अनुमति मिलती है. (यह मौजूदा तरीके के मुताबिक है.)
  • हमेशा के लिए अनुमति दें: इससे ऐप्लिकेशन को हमेशा के लिए ऐक्सेस मिल जाता है. हालांकि, ऐक्सेस को कभी भी रद्द किया जा सकता है. ऐप्लिकेशन को लगातार ऐक्सेस करने की अनुमति मिलने के बाद, नई फ़ाइलें और फ़ोल्डर भी लगातार ऐक्सेस किए जा सकेंगे.
  • अनुमति न दें: इससे ऐप्लिकेशन को फ़ाइलों का ऐक्सेस नहीं मिलता. (यह मौजूदा व्यवहार के मुताबिक है.)

दूसरा, नई सुविधा के तहत साइट सेटिंग में एक नया सेक्शन जोड़ा गया है. उपयोगकर्ता इस सेक्शन पर, फ़ाइल में बदलाव करने की सुविधा टॉगल के बगल में मौजूद लॉन्च आइकॉन पर क्लिक करके पहुंच सकते हैं.

इस इमेज में, Visual Studio Code की साइट सेटिंग दिखाई गई हैं. इसमें फ़ाइल में बदलाव करने का आइकॉन भी दिखाया गया है.

इस लॉन्च आइकॉन पर क्लिक करने से, उस ऐप्लिकेशन के लिए निजता और सुरक्षा सेटिंग खुल जाती हैं जिसके लिए उपयोगकर्ता को अनुमति देनी है. यहां उपयोगकर्ता को उन सभी फ़ाइलों और फ़ोल्डर की सूची दिखती है जिनका ऐक्सेस ऐप्लिकेशन के पास है. ट्रैश कैन आइकॉन पर क्लिक करके, हर आइटम के हिसाब से ऐक्सेस वापस लिया जा सकता है. हर आइटम के लिए ऐक्सेस हटाने का मतलब है कि ऐप्लिकेशन को अब भी सामान्य तौर पर फ़ाइलों का ऐक्सेस दिया जा सकता है. ऐक्सेस रद्द करने के लिए, उपयोगकर्ता पता बार में मौजूद आइकॉन पर क्लिक कर सकता है. इसके बारे में पहले बताया जा चुका है.

vscode.dev साइट के लिए, Chrome की निजता और सुरक्षा से जुड़ी सेटिंग.

नई सुविधा को ट्रिगर करने का तरीका

File System Access API में, डेवलपर के लिए कोई बदलाव नहीं किया गया है. अनुमति बनाए रखने की सुविधा के साथ नए व्यवहार को ट्रिगर करने के तीन तरीके हैं. इन तरीकों के लिए, अलग-अलग शर्तें पूरी करनी होती हैं:

  1. उपयोगकर्ता ने ओरिजिन पर पिछली बार विज़िट करने के दौरान, किसी फ़ाइल या फ़ोल्डर (या कई फ़ाइलों या फ़ोल्डर) को ऐक्सेस करने की अनुमति दी हो. साथ ही, ऐप्लिकेशन ने IndexedDB में उससे जुड़े FileSystemHandle ऑब्जेक्ट सेव किए हों. जब उपयोगकर्ता अगली बार ऑरिजिन पर जाता है, तो ऐप्लिकेशन को IndexedDB से सेव किए गए FileSystemHandle ऑब्जेक्ट में से किसी एक को वापस पाना होगा. इसके बाद, उसे FileSystemHandle.requestPermission() तरीके को कॉल करना होगा. अगर ये ज़रूरी शर्तें पूरी होती हैं, तो तीन विकल्पों वाला नया प्रॉम्प्ट दिखेगा.
  2. ऑरिजिन ने उस FileSystemHandle पर FileSystemHandle.requestPermission() तरीके को कॉल किया हो जिसे पहले ऐक्सेस करने की अनुमति दी गई थी. हालांकि, टैब को कुछ समय के लिए बैकग्राउंड में रखने की वजह से, उसका ऐक्सेस अपने-आप रद्द हो गया हो. (अनुमति अपने-आप रद्द होने की सुविधा, उसी लॉजिक के आधार पर काम करती है जिसके बारे में Chrome में एक बार की अनुमतियां लेख में बताया गया है.) अगर ये ज़रूरी शर्तें पूरी होती हैं, तो तीन विकल्पों वाला नया प्रॉम्प्ट दिखेगा.
  3. उपयोगकर्ता ने ऐप्लिकेशन इंस्टॉल किया हो. इंस्टॉल किए गए ऐप्लिकेशन, उपयोगकर्ता के ऐक्सेस देने के बाद अनुमतियों को अपने-आप बनाए रखेंगे. इस मामले में, तीन विकल्पों वाला प्रॉम्प्ट नहीं दिखाया जाएगा. इसके बजाय, ऐप्लिकेशन को डिफ़ॉल्ट रूप से नई सुविधा मिल जाएगी.

पहले और दूसरे मामले में, प्रॉम्प्ट में उन सभी FileSystemHandle ऑब्जेक्ट की सूची दी जाती है जिन्हें ऐप्लिकेशन पहले ऐक्सेस कर चुका है. इसमें सिर्फ़ वह ऑब्जेक्ट शामिल नहीं होता जिसके लिए requestPermission() तरीके को कॉल किया जा रहा है. एक बार की अनुमति के लिए सूचना दिखाने के तरीके के मुताबिक, अगर कोई उपयोगकर्ता तीन से ज़्यादा बार सूचना को खारिज करता है, तो यह सूचना अब नहीं दिखेगी. इसके बजाय, अनुमति के लिए सामान्य सूचना दिखेगी.

नए बिहेवियर को आज़माएं

अगर आपके पास Chrome का ऐसा वर्शन है जिस पर यह सुविधा काम करती है या आपने ज़रूरी फ़्लैग सेट किए हैं, तो वेब पर VS Code में नए वर्शन के काम करने के तरीके की जांच की जा सकती है. कोई फ़ोल्डर खोलें और उसे ऐक्सेस करने की अनुमति दें. इसके बाद, टैब बंद करें और उसे फिर से खोलें. इसके बाद, हाल ही में इस्तेमाल किया गया फ़ोल्डर खोलें पर क्लिक करें. ध्यान दें कि तुरंत रीलोड करने पर, प्रॉम्प्ट ट्रिगर नहीं होता. इसके लिए, सभी टैब बंद करने होंगे. पिछला फ़ोल्डर चुनें. इसके बाद, आपको नया प्रॉम्प्ट दिखेगा.

मीटिंग में सामने आए नतीजे

फ़ाइल सिस्टम ऐक्सेस एपीआई के लिए, लगातार अनुमतियां पाने की सुविधा, एपीआई की सबसे ज़्यादा अनुरोध की गई सुविधाओं में से एक है. साथ ही, लागू करने से जुड़ी गड़बड़ी भी बहुत लोकप्रिय है. कई डेवलपर ने इसे स्टार किया है. इस सुविधा को डेवलपर और सबसे पहले उपयोगकर्ताओं के लिए उपलब्ध कराकर, अब प्लैटफ़ॉर्म के हिसाब से बनाए गए ऐप्लिकेशन की तुलना में, एक अहम सुविधा का अंतर खत्म हो गया है.

लोगों का आभार

इस पोस्ट की समीक्षा क्रिस्टीन हॉलिंग्सवर्थ, ऑस्टिन सुलिवन, और राहेल एंड्रयू ने की है.