Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
braces-security-backport — ترخيص MIT لـ braces 3.0.3 مع backport للعمق CVE-2026-93687 تمت مراجعته؛ استهلاك مثبّت فقط | Kitploit
أدوات/GitHubGitHub/bernydotjar/braces-security-backport
تحليل الثغرات الأمنيةتحليل الكودالأدوات والمكوناتأمن سلسلة التوريد
GitHubbernydotjar/braces-security-backport

braces-security-backport

ترخيص MIT لـ braces 3.0.3 مع backport للعمق CVE-2026-93687 تمت مراجعته؛ استهلاك مثبّت فقط

عرض المستودع
منذ 27 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

braces Donate NPM version NPM monthly downloads NPM total downloads Linux Build Status

توسيع الأقواس على غرار Bash، مُنفَّذ بلغة JavaScript. أكثر أمانًا من مكتبات توسيع الأقواس الأخرى، مع دعم كامل لمواصفات أقواس Bash 4.3، دون التضحية بالسرعة.

يُرجى التفكير في متابعة مؤلف هذا المشروع، Jon Schlinkert، والتفكير في منح المشروع نجمة لإظهار ❤️ والدعم.

التثبيت

ثبّت باستخدام npm:

$ npm install --save braces

تم إصدار v3.0.0!!

راجع سجل التغييرات للاطلاع على التفاصيل.

لماذا تستخدم braces؟

تجعل أنماط brace أنماط glob أكثر قوة من خلال إضافة القدرة على مطابقة نطاقات وتسلسلات محددة من الأحرف.

  • دقيق - دعم كامل لمواصفة Bash 4.3 Brace Expansion (يجتاز جميع اختبارات Bash braces)
  • سريع وعالي الأداء - يبدأ بسرعة، ويعمل بسرعة ويتوسع بشكل جيد مع زيادة تعقيد الأنماط.
  • قاعدة شيفرة منظمة - يسهل صيانة المحلل اللغوي والمترجم وتحديثهما عند ظهور حالات حافة.
  • مُختبَر جيدًا - آلاف تأكيدات الاختبار، ويجتاز جميع اختبارات الوحدة الخاصة بـ Bash وminimatch وbrace-expansion (اعتبارًا من تاريخ كتابة هذا النص).
  • أكثر أمانًا - لا ينبغي أن تقلق بشأن قيام المستخدمين بتعريف أنماط brace عدوانية أو خبيثة يمكن أن تعطّل تطبيقك. تتخذ Braces إجراءات لمنع التعبيرات النمطية الخبيثة التي يمكن استخدامها في هجمات DDoS (راجع التراجع الكارثي).
  • يدعم القوائم - (المعروفة أيضًا باسم "المجموعات") a/{b,c}/d => ['a/b/d', 'a/c/d']
  • يدعم التسلسلات - (المعروفة أيضًا باسم "النطاقات") {01..03} => ['01', '02', '03']
  • يدعم الخطوات - (المعروفة أيضًا باسم "الزيادات") {2..10..2} => ['2', '4', '6', '8', '10']
  • يدعم الهروب - لمنع تقييم الأحرف الخاصة.

الاستخدام

التصدير الرئيسي هو دالة تأخذ نمط brace واحدًا أو أكثر patterns وoptions.

const braces = require('braces');
// braces(patterns[, options]);

console.log(braces(['{01..05}', '{a..e}']));
//=> ['(0[1-5])', '([a-e])']

console.log(braces(['{01..05}', '{a..e}'], { expand: true }));
//=> ['01', '02', '03', '04', '05', 'a', 'b', 'c', 'd', 'e']

توسيع الأقواس مقابل الترجمة

بشكل افتراضي، تُترجم أنماط الأقواس إلى سلاسل نصية مُحسَّنة لإنشاء التعبيرات النمطية ومطابقتها.

مُترجَم

console.log(braces('a/{x,y,z}/b'));
//=> ['a/(x|y|z)/b']
console.log(braces(['a/{01..20}/b', 'a/{1..5}/b']));
//=> [ 'a/(0[1-9]|1[0-9]|20)/b', 'a/([1-5])/b' ]

موسّع

فعّل توسيع الأقواس بتعيين الخيار expand إلى true، أو باستخدام braces.expand() (يُعيد مصفوفة مشابهة لما تتوقعه من Bash، أو echo {1..5}، أو minimatch):

console.log(braces('a/{x,y,z}/b', { expand: true }));
//=> ['a/x/b', 'a/y/b', 'a/z/b']

console.log(braces.expand('{01..10}'));
//=> ['01','02','03','04','05','06','07','08','09','10']

القوائم

توسيع القوائم (مثل "المجموعات" في Bash):

console.log(braces('a/{foo,bar,baz}/*.js'));
//=> ['a/(foo|bar|baz)/*.js']

console.log(braces.expand('a/{foo,bar,baz}/*.js'));
//=> ['a/foo/*.js', 'a/bar/*.js', 'a/baz/*.js']

التسلسلات

توسيع نطاقات الأحرف (مثل "التسلسلات" في Bash):

console.log(braces.expand('{1..3}')); // ['1', '2', '3']
console.log(braces.expand('a/{1..3}/b')); // ['a/1/b', 'a/2/b', 'a/3/b']
console.log(braces('{a..c}', { expand: true })); // ['a', 'b', 'c']
console.log(braces('foo/{a..c}', { expand: true })); // ['foo/a', 'foo/b', 'foo/c']

// supports zero-padded ranges
console.log(braces('a/{01..03}/b')); //=> ['a/(0[1-3])/b']
console.log(braces('a/{001..300}/b')); //=> ['a/(0{2}[1-9]|0[1-9][0-9]|[12][0-9]{2}|300)/b']

راجع fill-range للاطلاع على جميع خيارات توسيع النطاقات المتاحة.

النطاقات المتدرجة

يمكن استخدام الخطوات، أو الزيادات، مع النطاقات:

console.log(braces.expand('{2..10..2}'));
//=> ['2', '4', '6', '8', '10']

console.log(braces('{2..10..2}'));
//=> ['(2|4|6|8|10)']

عند استخدام طريقة .optimize، أو عند تعيين options.optimize على true، يتم تمرير التسلسلات إلى to-regex-range للتوسيع.

التداخل

قد تكون أنماط الأقواس متداخلة. لا يتم فرز نتائج كل سلسلة موسّعة، ويتم الحفاظ على الترتيب من اليسار إلى اليمين.

الأقواس "الموسّعة"

console.log(braces.expand('a{b,c,/{x,y}}/e'));
//=> ['ab/e', 'ac/e', 'a/x/e', 'a/y/e']

console.log(braces.expand('a/{x,{1..5},y}/c'));
//=> ['a/x/c', 'a/1/c', 'a/2/c', 'a/3/c', 'a/4/c', 'a/5/c', 'a/y/c']

أقواس "محسّنة"

console.log(braces('a{b,c,/{x,y}}/e'));
//=> ['a(b|c|/(x|y))/e']

console.log(braces('a/{x,{1..5},y}/c'));
//=> ['a/(x|([1-5])|y)/c']

الهروب

الهروب من الأقواس

لن يتم توسيع نمط الأقواس أو تقييمه إذا تم الهروب من القوس الافتتاحي أو الإغلاقي:

console.log(braces.expand('a\\{d,c,b}e'));
//=> ['a{d,c,b}e']

console.log(braces.expand('a{d,c,b\\}e'));
//=> ['a{d,c,b}e']

تهريب الفواصل

يمكن أيضًا تهريب الفواصل داخل الأقواس المعقوفة:

console.log(braces.expand('a{b\\,c}d'));
//=> ['a{b,c}d']

console.log(braces.expand('a{d\\,c,b}e'));
//=> ['ad,ce', 'abe']

باتباع اصطلاحات bash، لا يتم أيضًا توسيع نمط الأقواس عندما يحتوي على حرف واحد:

console.log(braces.expand('a{b}c'));
//=> ['a{b}c']

الخيارات

options.maxLength

النوع: Number

الافتراضي: 10,000

الوصف: يحدّ من طول سلسلة الإدخال. مفيد عندما تكون سلسلة الإدخال مُولّدة أو عندما يسمح تطبيقك للمستخدمين بتمرير سلسلة، وما إلى ذلك.

console.log(braces('a/{b,c}/d', { maxLength: 3 })); //=> throws an error

options.expand

النوع: Boolean

القيمة الافتراضية: undefined

الوصف: إنشاء نمط أقواس "موسّع" (بدلاً من ذلك يمكنك استخدام الدالة braces.expand()، التي تفعل الشيء نفسه).

console.log(braces('a/{b,c}/d', { expand: true }));
//=> [ 'a/b/d', 'a/c/d' ]

options.nodupes

النوع: Boolean

القيمة الافتراضية: undefined

الوصف: إزالة التكرارات من المصفوفة المُرجعة.

options.rangeLimit

النوع: Number

القيمة الافتراضية: 1000

الوصف: لمنع تمرير أنماط خبيثة من قِبل المستخدمين، يتم طرح خطأ عند استخدام braces.expand() أو عندما تكون options.expand صحيحة وسيتجاوز النطاق المُولَّد قيمة rangeLimit.

يمكنك تخصيص options.rangeLimit أو تعيينه إلى Inifinity لتعطيل هذا كليًا.

أمثلة

// pattern exceeds the "rangeLimit", so it's optimized automatically
console.log(braces.expand('{1..1000}'));
//=> ['([1-9]|[1-9][0-9]{1,2}|1000)']
تنزيل الأداة