مرجع API
مرجع كامل لـ @powerduck/conf-patch يتضمن تواقيع جميع العناصر المصدّرة وقيمها الافتراضية.
تتوفر نقطتا دخول:
@powerduck/conf-patch— جميع الوظائف أدناه: الطبقة الأساسية والملفات والتحقق من OpenAPI والأدوات المساعدة.@powerduck/conf-patch/core— الجزء المتوافق مع المتصفح فقط:patchContentوsetContentValueوdeleteContentValueوPatchContentOptionsودوال التحقق والأنواعConfigFormatوJsonPatchOpوJsonPathSegment.
الطبقة الأساسية (متوافقة مع المتصفح)
patchContent
تطبّق مصفوفة عمليات تصحيح RFC 6902 على سلسلة إعدادات. دالة نقية لا تصل إلى نظام الملفات.
function patchContent(
content: string,
ops: JsonPatchOp[],
format: ConfigFormat,
options?: PatchContentOptions,
): string;
| المعلمة | النوع | الوصف |
|---|---|---|
content | string | محتوى الإعدادات الخام، ويجب أن يكون صالحًا وفق format المحدد. |
ops | JsonPatchOp[] | العمليات المطلوب تطبيقها بالترتيب. تعيد المصفوفة الفارغة content دون تغيير. |
format | ConfigFormat | "json" | "jsonc" | "yaml". |
options.strict | boolean | عند true، وهي القيمة الافتراضية، تؤدي العملية الفاشلة إلى استثناء. عند false تُتخطى العملية ويُسجّل تحذير عبر console.warn. |
تُعيد: محتوى الإعدادات بعد التعديل (string).
الاستثناءات: TypeError إذا لم يكن content سلسلة أو كانت ops غير صالحة؛ وخطأ يصف العملية الفاشلة عندما تكون strict مساوية لـ true.
import { patchContent } from "@powerduck/conf-patch/core";
patchContent(
'{"name": "app"}',
[{ op: "add", path: ["version"], value: "1.0.0" }],
"json",
);
// => '{\n "name": "app",\n "version": "1.0.0"\n}'
setContentValue
تعيّن قيمة واحدة أو تنشئها. تستدعي داخليًا patchContent بعملية add واحدة. وفق RFC 6902، تستبدل add خاصية كائن موجودة أو تُدرج عنصرًا عند فهرس مصفوفة.
function setContentValue(
content: string,
path: readonly (string | number)[],
value: unknown,
format: ConfigFormat,
): string;
| المعلمة | النوع | الوصف |
|---|---|---|
content | string | محتوى الإعدادات الخام. |
path | readonly (string | number)[] | مسار مقسّم إلى مقاطع، مثل ["server", "port"]. لا يجوز أن يكون فارغًا. |
value | unknown | القيمة المراد كتابتها. |
format | ConfigFormat | تنسيق الإعدادات. |
تُعيد: المحتوى المحدّث (string).
setContentValue("server:\n port: 3000\n", ["server", "port"], 8080, "yaml");
deleteContentValue
تحذف مفتاحًا أو عنصر مصفوفة. تستدعي داخليًا patchContent بعملية remove واحدة. يجب أن يكون المسار موجودًا.
function deleteContentValue(
content: string,
path: readonly (string | number)[],
format: ConfigFormat,
): string;
deleteContentValue(
'{"name": "app", "legacy": true}',
["legacy"],
"json",
);
PatchContentOptions
interface PatchContentOptions {
/** When true, failed operations throw. When false, they are skipped with a warning. Default: true */
strict?: boolean;
}