एसडीके 0.6 और नए फ़ंक्शन नियमों में अपग्रेड करें
जावास्क्रिप्ट एसडीके से Edge Functions को कॉल करने वाली परियोजनाओं के लिए एक चेकलिस्ट, उन रहस्यों के साथ जिन्हें आपको घुमाने की आवश्यकता हो सकती है।
1. क्या बदला
नया संस्करण स्थापित करें:
रिलीज़ में एक सुरक्षा परिवर्तन और त्रुटियों और प्रतिक्रियाओं की रिपोर्ट करने के तरीके में कई सुधार हैं। सुरक्षा परिवर्तन फ़ंक्शन सेवा में भी है: सेवा अपडेट होते ही यह आपके प्रोजेक्ट पर लागू होता है, चाहे आप जो भी एसडीके संस्करण का उपयोग करें।
2. परिवर्तन तोड़ना
प्रबंधन कॉल के लिए अब service_role कुंजी की आवश्यकता है
functions.list(), get(), listJobs(), getJob(), enqueueJob(), listCronJobs(), createCronJob() और deleteCronJob() सार्वजनिक कुंजी या साइन-इन उपयोगकर्ता को 403 लौटाते हैं। इससे पहले, list() और get() ने सार्वजनिक कुंजी रखने वाले किसी भी व्यक्ति को स्रोत कोड और प्रत्येक फ़ंक्शन के वेरिएबल लौटाए थे। सुरक्षा मॉडल देखें।
केवल वही लौटाएँ जो आपके फ्रंटएंड को चाहिए (उदाहरण के लिए नाम), पूरी परिभाषा कभी नहीं।
जो निकाय JSON नहीं हो सकता उसे अस्वीकार कर दिया जाता है
invoke(name, { body: new Blob(…) }), और ArrayBuffer, टाइप किए गए सरणियों, FormData, URLSearchParams या ReadableStream के साथ भी ऐसा ही है, अब त्रुटि कोड invalid_body लौटाता है। इससे पहले, फ़ंक्शन को {} प्राप्त हुआ था और कोई त्रुटि रिपोर्ट नहीं की गई थी। बाइनरी डेटा (बेस64) को एन्कोड करें या इसे स्टोरेज पर अपलोड करें और इसका पथ भेजें।
किसी फ़ंक्शन का अपना 502, 503 या 504 एक FunctionsHttpError है
पहले, इन स्थितियों को हमेशा FunctionsRelayError के रूप में वर्गीकृत किया जाता था, तब भी जब आपका कोड उन्हें लौटाता था। अब FunctionsRelayError का मतलब है कि प्लेटफॉर्म विफल हो गया है। यदि आपने FunctionsRelayError पर पुनः प्रयास किया है, तो जांचें कि आपका पुनः प्रयास तर्क अभी भी मेल खाता है: त्रुटियां, टाइमआउट और पुनः प्रयास देखें।
FunctionDef अधिक सटीक है
env_vars Record<string, string> है (यह Record<string, unknown> था) और permissions जोड़ा गया है। इन फ़ील्ड्स को पढ़ने वाला कोड काम करता रहता है; वह कोड जो किसी अन्य प्रकार का मान निर्दिष्ट करता है, अब संकलित नहीं होता है।
3. व्यवहार ठीक करता है
| पहले | अब |
|---|---|
टेक्स्ट के साथ 500 लौटाने वाले फ़ंक्शन ने संदेश "null" उत्पन्न किया | संदेश वह पाठ है जो आपके फ़ंक्शन ने लौटाया है |
एक फ़ंक्शन उत्पादित टेक्स्ट के साथ 200 लौटा रहा है { data: null, error: null } | data पाठ है |
डिफ़ॉल्ट मोड में एक बाइनरी प्रतिक्रिया { data: null, error: null } उत्पन्न हुई | error.code invalid_response है और संदेश responseType सुझाता है |
responseType: 'text' एक त्रुटि के साथ JSON { "error": "…" } ने HTTP 503 दिखाया | संदेश JSON से पढ़ा जाता है, जैसा कि डिफ़ॉल्ट मोड में होता है |
'text', 'blob' और 'arrayBuffer' में कोई डिफ़ॉल्ट टाइमआउट नहीं था | क्लाइंट टाइमआउट (30 सेकंड) लागू होता है |
| यूआरएल में एक फ़ंक्शन नाम अनएन्कोडेड डाला गया था | यह एन्कोड किया गया है: a/../b इसके पथ के अंदर रहता है |
किसी कार्य पर delaySecs को नजरअंदाज कर दिया गया: कार्य तुरंत चला गया | काम अपनी तारीख का इंतजार करता है |
नए निर्यात: FunctionsHttpError, FunctionsRelayError, isRelayStatus और FunctionsResponseType @aurabase/aurabase-js के साथ-साथ @aurabase/functions से भी आते हैं। यदि आपने उन्हें @aurabase/functions से आयात किया है, तो वह काम करता रहता है; पीएनपीएम के साथ अब आपको प्रत्यक्ष निर्भरता के रूप में उस पैकेज की आवश्यकता नहीं है।
@aurabase/auth में, getClaims() के परिणाम में email का प्रकार अब string | null है, जो कि बिना ई-मेल पते वाले उपयोगकर्ता के लिए सेवा लौटाता है।
सीएलआई. aura functions deploy अब पहले से मौजूद फ़ंक्शन के रहस्यों को नहीं मिटाता है। aura functions invoke --data {} भेजने के बजाय अमान्य JSON को अस्वीकार कर देता है। aura functions download Deno फ़ंक्शन के लिए काम करता है। aura functions serve जिस पोर्ट की घोषणा करता है उसे सुनता है। aura studio पोर्ट 3000 पर स्टूडियो खोलता है।
4. उजागर रहस्यों को घुमाएँ
यदि आपका प्रोजेक्ट किसी सेवा संस्करण पर चलता है जो इस परिवर्तन से पहले का है, तो आपकी सार्वजनिक कुंजी का कोई भी धारक आपके फ़ंक्शन के कोड और वेरिएबल को पढ़ सकता है। मान लें कि वे पढ़े गए थे:
service_roleकुंजी के साथ अपने कार्यों को सूचीबद्ध करें और प्रत्येक के वेरिएबल खोलें।- उनमें मौजूद प्रत्येक रहस्य को घुमाएँ: भुगतान कुंजियाँ, वेबहुक रहस्य, तृतीय-पक्ष टोकन।
- उन रहस्यों को हटाएं जो सीधे
index.tsमें लिखे गए थे और उन्हें वेरिएबल्स में ले जाएं। - आपके द्वारा नहीं बनाई गई प्रविष्टियों के लिए प्रोजेक्ट के जॉब और अलर्ट नियमों की जाँच करें।
5. चेकलिस्ट
- ब्राउज़र में या सार्वजनिक कुंजी के साथ चलने वाले कोड में
functions.list(,functions.get(,listJobs(,getJob(,enqueueJob(,createCronJob(,deleteCronJob(औरlistCronJobs(के लिए अपना कोड खोजें। body:मान खोजें जो सादे JSON नहीं हैं।- पुनः प्रयास तर्क की जाँच करें जो
FunctionsRelayErrorपर निर्भर करता है। - ऊपर वर्णित अनुसार रहस्यों को घुमाएँ।
- सीएलआई को अद्यतन करें.