مانیفست برنامهٔ سفارشی
شناسهٔ شِما: custom-app-manifest@1
شِمای قابلخواندن توسط ماشین: custom-app-manifest.schema.json
توصیف مرجع یک برنامهٔ سفارشی React (بخش 6.3): همان remote در Module Federation که Platform Shell برای یک برنامهٔ دستنویس در یک محیط بارگذاری میکند. یک مانیفست به شکل یکسان اعتبارسنجی میشود، چه از طریق Admin Control Center ثبت شده باشد، چه با یک فراخوانی مستقیم API ارسال شده باشد، چه یک دستیار هوش مصنوعی تولیدش کرده باشد، و چه درون یک وارد کردن راهحل حمل شده باشد — قاعدهٔ تکمسیرِ اعتبارسنجی (بخش 6.7).
شکل
| فیلد | نوع | اجباری | یادداشتها |
|---|---|---|---|
logicalName | string | بله | پیشوند ناشر در ابتدا، با snake-case کوچک (مثلاً par_sales_dashboard). بهعنوان شناسهٔ پایدار آرتیفکت برنامه به کار میرود — مخاطبِ App Context Token آن. |
displayName | string | بله | نام خوانا برای انسان که در صفحهٔ خانهٔ پوسته نمایش داده میشود. |
description | string | null | خیر | توصیف کوتاهی که روی کاشی برنامه نمایش داده میشود. |
entryFileName | string | خیر | فایل ورودی ظرف درون بسته (مثلاً remoteEntry.js)، برداشتهشده از مانیفست خود بایگانی. در حالت میزبانیشده تهی است، که بستهای ندارد. |
packageHash | string | null | خیر | SHA-256 شانزدهشانزدهی حروفکوچکِ بایگانیای که این برنامه از آن ثبت شد. در حالت میزبانیشده null است. هنگام ورود راهحل در برابر بایتهایی که در بسته سفر کردهاند وارسی میشود، تا آنچه ارائه میشود همان باشد که برونبرد شده بود. |
remoteEntryUrl | string | بله | یا یک نشانی مطلق http(s) به remoteEntry.js مربوط به remote (حالت Hosted — مبدأ آن باید در فهرست مجاز پوستهٔ آن محیط باشد، بخش 6.3)، یا یک ارجاع webresource:<logicalName> (حالت Packaged، بخش 6.15) — بسته به عنوان منبع وب ذخیره و توسط پلتفرم سرو میشود، و پوسته آن را به یک نشانی سروِ پلتفرم رفع میکند و دستاول میشمارد. |
scope | string | بله | نام scope سراسری کانتینر Module Federation (برای هر remote یکتا)، منطبق با federation({ name }) آن remote. |
module | string | بله | مسیر ماژول در معرض قرارگرفته که پوسته بارگذاری میکند (مثلاً ./App). باید با ./ آغاز شود. |
requestedScopes | string[] | بله | اسکوپهایی که برنامه اعلام میکند لازم دارد؛ هنگام صدور App Context Token آن درخواست و با دسترسیهای خودِ کاربر اشتراک گرفته میشوند. میتواند خالی باشد. |
declaredEntities | string[] | بله | جدولهایی که برنامه اعلام میکند به آنها دسترسی دارد، برای بازبینی و اعتبارسنجی وابستگی. میتواند خالی باشد. |
کجا اعتبارسنجی میشود
- ثبت — لایهٔ Application مانیفست را در برابر
custom-app-manifest@1اعتبارسنجی میکند و پیش از ثبت برنامه در یک محیط، الزام میکند کهlogicalNameب ا پیشوند ناشر مالک آغاز شود. - وارد کردن راهحل — هر مانیفست جاسازیشده در یک بستهٔ راهحل، پیش از ثبت برنامه در محیط مقصد، دوباره در برابر همان شِما اعتبارسنجی میشود، تا بستهای که دستی ویرایش شده نتواند یک remote نامعتبر را از لای درها رد کند.
یادداشتهای امنیتی
یک برنامهٔ سفارشی React در همان realm جاوااسکریپت پوسته اجرا میشود (Module
Federation، نه یک iframe — بخش 6.3)، بنابراین مرز اعتماد جای دیگری اعمال میشود: مبدأ
remoteEntryUrl باید برای آن محیط در فهرست مجاز باشد (CSP)، برنامه تنها در صورتی
قابل بارگذاری است که یک راهحل آن را در آن محیط مستقر کرده باشد، و هر فراخوانی دادهای
که از طریق Runtime SDK انجام میدهد در سمت سرور در برابر اسکوپهای روی App Context
Token آن مجوزدهی میشود. اعلام یک اسکوپ در requestedScopes هرگز آن را اعطا نمیکند
— آن اسکوپ با آنچه کاربر پیشاپیش در اختیار دارد اشتراک گرفته میشود.
مرتبط
- مرجع Runtime SDK (اینکه یک برنامهٔ سفارشی چگونه
useParswareRuntime()را مصرف میکند). - بستهٔ راهحل — این مانیفستها را زیر آرایهٔ
customAppsخود میان محیطها حمل میکند.