شعار أوراباسي
aurabaseمستندات
مستندات›أدلة›Upgrade to SDK 0.6

الترقية إلى SDK 0.6 وقواعد الوظائف الجديدة

قائمة مرجعية للمشاريع التي تستدعي Edge Functions من JavaScript SDK، مع الأسرار التي قد تحتاج إلى تدويرها.

6 د قراءة·المستوى وسيطة·تمت المراجعة في 12‏/10‏/2026
تم إنشاء هذا النص الإنجليزي تلقائيًا من النص الأصلي الفرنسي ولم تتم مراجعته بعد.
تمت ترجمة هذه الصفحة تلقائيًا. النسخة الإنجليزية موثوقة.
#
ملخص

1. ما الذي تغير

تثبيت الإصدار الجديد:

terminalbash
npm install @aurabase/aurabase-js@0.6.0

يحتوي الإصدار على تغيير أمني واحد والعديد من الإصلاحات لكيفية الإبلاغ عن الأخطاء والاستجابات. التغيير الأمني ​​موجود أيضًا في وظائف خدمة : وهو ينطبق على مشروعك بمجرد تحديث الخدمة، مهما كان إصدار SDK الذي تستخدمه.

#
كسر

2. كسر التغييرات

تحتاج مكالمات الإدارة الآن إلى مفتاح service_role

functions.list(), get(), listJobs(), getJob(), enqueueJob(), listCronJobs(), createCronJob() و deleteCronJob() تعيد 403 إلى مفتاح عام أو مستخدم قام بتسجيل الدخول. من قبل، كان list() وget() يعيدان الكود المصدري ومتغيرات كل وظيفة إلى أي شخص يحمل المفتاح العام. راجع نموذج الأمان.

before.ts (browser)typescript
const { data } = await aura.functions.list() // عملت مع المفتاح العام
بعد: انقله إلى الخادم الخاص بكtypescript
// الخادم/واجهة برمجة التطبيقات/functions.ts
const admin = createClient(process.env.AURA_URL!, process.env.AURA_SERVICE_ROLE_KEY!)
export const GET = async () => Response.json((await admin.functions.list()).data?.map((f) => f.name))

قم بإرجاع ما تحتاجه الواجهة الأمامية فقط (الأسماء، على سبيل المثال)، وليس التعريف بالكامل.

يتم رفض النص الذي لا يمكن أن يكون JSON

invoke(name, { body: new Blob(…) })، ونفس الشيء مع ArrayBuffer، المصفوفات المكتوبة، FormData، URLSearchParams أو ReadableStream، تُرجع الآن رمز الخطأ invalid_body. من قبل، كانت الوظيفة تستقبل {} ولم يتم الإبلاغ عن أي خطأ. تشفير البيانات الثنائية (base64) أو تحميلها على التخزين وإرسال مسارها.

الوظيفة الخاصة 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 ثانية).
تم إدراج اسم وظيفة في عنوان URL غير مشفرتم ترميزه: a/../b يبقى داخل مساره
تم تجاهل delaySecs في مهمة ما: تم تشغيل المهمة في الحالالمهمة تنتظر موعدها

الصادرات الجديدة: FunctionsHttpError و FunctionsRelayError و isRelayStatus و FunctionsResponseType تأتي من @aurabase/aurabase-js وكذلك من @aurabase/functions. إذا قمت باستيرادها من @aurabase/functions، فسيستمر هذا في العمل؛ مع pnpm لم تعد بحاجة إلى تلك الحزمة باعتبارها تبعية مباشرة.

في @aurabase/auth، أصبح نوع email في نتيجة getClaims() الآن string | null، وهو ما ترجعه الخدمة لمستخدم بدون عنوان بريد إلكتروني.

واجهة سطر الأوامر. aura functions deploy لم يعد يمحو أسرار وظيفة موجودة بالفعل. aura functions invoke --data يرفض JSON غير صالح بدلاً من إرسال {}. aura functions download يعمل مع وظائف Deno. aura functions serve يستمع إلى المنفذ الذي يعلن عنه. aura studio يفتح الاستوديو على المنفذ 3000.

#
الأمن

4. تدوير الأسرار المكشوفة

إذا تم تشغيل مشروعك على إصدار خدمة يسبق هذا التغيير، فيمكن لأي حامل لمفتاحك العام قراءة التعليمات البرمجية والمتغيرات الخاصة بوظائفك. لنفترض أنهم قرأوا:

  1. قم بإدراج وظائفك باستخدام مفتاح service_role وافتح متغيرات كل منها.
  2. قم بتدوير كل سر يحتوي عليه: مفاتيح الدفع، وأسرار خطاف الويب، والرموز المميزة للجهات الخارجية.
  3. إزالة الأسرار التي تمت كتابتها مباشرة في index.ts ونقلها إلى المتغيرات.
  4. تحقق من قواعد الوظائف والتنبيه الخاصة بالمشروع للإدخالات التي لم تقم بإنشائها.
#
قائمة التحقق

5. قائمة المراجعة

  • ابحث في التعليمات البرمجية الخاصة بك عن functions.list( و functions.get( و listJobs( و getJob( و enqueueJob( و createCronJob( و deleteCronJob( و listCronJobs( في التعليمات البرمجية التي يتم تشغيلها في متصفح أو باستخدام مفتاح عام.
  • ابحث عن قيم body: التي ليست JSON عادية.
  • تحقق من منطق إعادة المحاولة الذي يعتمد على FunctionsRelayError.
  • قم بتدوير الأسرار كما هو موضح أعلاه.
  • قم بتحديث سطر الأوامر.