Wakaru هو Decompiler JavaScript للواجهة الأمامية الحديثة. يعيد الكود الأصلي من مصدر مجمعة ومقلوب.
انظر العرض التجريبي المباشر للحصول على أمثلة مفصلة.
يحول الكود المنقول إلى شكله القابل للقراءة ويستعيد بناء جملة تم تخفيضه.
يدعم Transpilers التالية:
اقرأ الوثائق لمزيد من المعلومات.
يحول جافا سكريبت المجمعة إلى وحدات منفصلة
يدعم الحزم التالية:
اختبر الأداة ورؤيتها في مجال الملعب.
بشكل افتراضي ، سيتم تشغيل CLI في الوضع التفاعلي ويرشدك خلال العملية.
يمكنك أيضًا تمرير خيارات لتخطي بعض الخطوات في الوضع التفاعلي.
npx @wakaru/cli
# or
pnpm dlx @wakaru/cli قم بتشغيل npx @wakaru/cli --help لمشاهدة القائمة الكاملة للخيارات.
| خيار | تقصير | وصف |
|---|---|---|
--output | "out" | دليل الإخراج |
--force | false | دليل الإخراج في الكتابة فوق |
--concurrency | 1 | محدد عدد المهام المتزامنة |
--perf | false | عرض مقاييس الأداء |
--perf-output | دليل إخراج مقاييس الأداء |
-يمكن استخدام --concurrency لتسريع العملية. ولكن يرجى العلم أن العملية قد تكون إذا كانت ملف الإدخال كبيرًا جدًا.
إذا كنت ترغب في تشغيل CLI في الوضع غير التفاعلي ، فيمكنك تحديد الميزة من خلال تمرير اسم الميزة كوسيطة أولى.
سيقوم unpacker و unminify بتشغيل الميزة المقابلة فقط.
سيتم تشغيل all على حد سواء unpacker unminify بالتتابع.
npx @wakaru/cli all <files...> [options]
npx @wakaru/cli unpacker <files...> [options]
npx @wakaru/cli unminify <files...> [options]
هذه الخيارات متوفرة فقط في all الوضع.
| خيار | تقصير | وصف |
|---|---|---|
--unpacker-output | "out/unpack" | تجاوز دليل الإخراج إلغاء الاضطراب |
--unminify-output | "out/unminify" | تجاوز دليل الإخراج غير المرتبط |
عند تشغيل ميزة واحدة (إما unpacker أو unminify ) ، فإن CLI ستستخدم فقط المسار المحدد في خيار --output . هذا يعني أنه ، على عكس الوضع في all الوضع الذي يتم فيه إنشاء أول دليل ( out/unpack و out/unminify ) داخل دليل الإخراج ، في وضع الميزات الفردية ، يتم وضع ملفات الإخراج مباشرة في دليل --output المحدد دون أي متناول اليد الإضافية.
npm install @wakaru/unpacker @wakaru/unminify
# or
pnpm install @wakaru/unpacker @wakaru/unminify
# or
yarn add @wakaru/unpacker @wakaru/unminify@wakaru/unpacker import { unpack } from '@wakaru/unpacker' ;
const { modules , moduleIdMapping } = await unpack ( sourceCode ) ;
for ( const mod of modules ) {
const filename = moduleIdMapping [ mod . id ] ?? `module- ${ mod . id } .js` ;
fs . writeFileSync ( outputPath , mod . code , 'utf-8' ) ;
}@wakaru/unminify import { runDefaultTransformationRules , runTransformationRules } from '@wakaru/unminify' ;
const file = {
source : '...' , // source code
path : '...' , // path to the file, used for advanced usecases. Can be empty.
}
// This function will apply all rules that are enabled by default.
const { code } = await runDefaultTransformationRules ( file ) ;
// You can also specify the rules to apply. Order matters.
const rules = [
'un-esm' ,
...
]
const { code } = await runTransformationRules ( file , rules ) ;يمكنك التحقق من جميع القواعد على/unminify/src/transformations/index.ts.
يرجى العلم أن هذا المشروع لا يزال في التطوير المبكر. قد تتغير واجهة برمجة التطبيقات في المستقبل.
وحجم حزمة هذه الحزم ضخمة. قد يتم تقليله في المستقبل. توخي الحذر على المتصفح (نعم ، مثل الملعب ، يمكن أن يعمل على المتصفح).
استخدام wakaru لمهاجمة الأهداف دون موافقة مسبقة مسبقة أمر غير قانوني. إنها مسؤولية المستخدم النهائي عن إطاعة جميع القوانين المحلية والولائية والولائية المعمول بها. لا يتحمل المطورون أي مسؤولية وليس مسؤولين عن أي سوء استخدام أو ضرر ناتج عن هذا البرنامج.
معهد ماساتشوستس للتكنولوجيا