الوحدة TTY في Node.js
مؤشر الاستقرار: 2 - مستقر
توفر وحدة tty
الصنفين tty.ReadStream
و tty.WriteStream
. في معظم الحالات، لن يكون من الضروري أو من الممكن استخدام هذه الوحدة مباشرةً. ومع ذلك، فإنه يمكن الوصول إليها باستخدام:
const tty = require('tty');
عندما تكتشف Node.js أنها تعمل من الطرفية النصية ("TTY") المرفقة، ستُعاد تهيئة process.stdin
، بشكل افتراضي، كمثيل من tty.ReadStream
ويصبح كل من عملية process.stdout
و process.stderr
مثيلَين على tty.WriteStream
بشكل افتراضي. ويصبح التحقق من أن قيمة الخاصية process.stdout.isTTY
هي true
هو الطريقة المفضلة لتحديد ما إذا كان Node.js تعمل من داخل TTY:
$ node -p -e "Boolean(process.stdout.isTTY)"
true
$ node -p -e "Boolean(process.stdout.isTTY)" | cat
false
يجب أن يكون هناك سبب بسيط أو لا يوجد سبب لأي تطبيق لإنشاء مثيلات الصنفين tty.ReadStream
و tty.WriteStream
يدوياً.
الصنف tty.ReadStream
أُضيف مع الإصدار: v0.5.8.
الصنف tty.ReadStream
هو صنف فرعي من net.Socket
والذي يمثل الجانب القابل للقراءة من TTY. في الظروف العادية تصبح العملية process.stdin
مثيل tty.ReadStream
الوحيد في عملية Node.js ويجب ألّا يكون هناك أي سبب لإنشاء المزيد من المثيلات.
readStream.isRaw
أُضيف مع الإصدار: v0.7.7.
قيمة منطقية boolean
تكون true
إذا كان ضبط TTY الحالي يهيئها للعمل كجهاز خام (صريح). القيمة الافتراضية: false
.
readStream.isTTY
أُضيف مع الإصدار: v0.5.8.
قيمة منطقية boolean
تكون دائما true
لمثيلات tty.ReadStream
.
readStream.setRawMode(mode)
أُضيف مع الإصدار: v0.7.7.
mode
من النوع<boolean>
إذا كانtrue
، يضبط وضعtty.ReadStream
للعمل كجهاز خام. أما إذا كانfalse
، يضبطtty.ReadStream
للعمل في وضعه الافتراضي. ستضبط الخاصيةreadStream.isRaw
إلى الوضع الناتج.
يسمح بضبط tty.ReadStream
بحيث يعمل كجهاز خام.
عندما تكون في وضع raw، يكون الإدخال دائما متاحًا حرفًا بحرف، وغير متضمنًا المُعدِّلات. بالإضافة إلى ذلك، تُعطَّل كل معالجة خاصة للحروف من خلال الطرفية، بما في ذلك ارتداد الحروف المُدخَلة. لاحظ ان CTRL + C
لم يعُد يسبب SIGINT
في هذا الوضع.
الصنف tty.WriteStream
أُضيف مع الإصدار: v0.5.8.
الصنف tty.WriteStream
هو صنف فرعي من net.Socket
والذي تمثل الجانب القابل للكتابة من TTY. في الظروف العادية تصبح process.stdout
و process.stderr
المثيلين الوحيدين للخاصية tty.WriteStream
المنشأة لعملية Node.js ويجب ألّا يكون هناك أي سبب لإنشاء المزيد من المثيلات.
الحدث: 'resize'
أُضيف مع الإصدار: v0.7.7.
ينطلق الحدث 'resize'
كلما يتغير أيًا من الخاصيتين writeStream.columns
أو writeStream.rows
. لا تمرر أية وسائط إلى دالة رد اتصال المُستمِع عند استدعائه.
process.stdout.on('resize', () => {
console.log('screen size has changed!');
console.log(`${process.stdout.columns}x${process.stdout.rows}`);
});
writeStream.columns
أُضيف مع الإصدار: v0.7.7.
رقم من النوع number
يحدد عدد الأعمدة الموجودة في TTY حاليًا. وتُحدِّث هذه الخاصية كلما انطلق الحدث 'resize'
.
writeStream.isTTY
أُضيف مع الإصدار: v0.5.8.
قيمة منطقية من النوع boolean
وتكون دائمًا true
.
writeStream.rows
أُضيف مع الإصدار: v0.7.7.
رقم من النوع number
يحدد عدد الصفوف الموجودة في TTY حاليًا. وتُحدِّث هذه الخاصية كلما انطلق الحدث 'resize'
.
writeStream.getColorDepth([env])
أُضيف مع الإصدار: v9.9.0.
- env من النوع
<Object>
وهو كائن يحتوي على متغيرات البيئة التي يجب التحقق منها. القيمة الافتراضية:process.env
. - القيمة المُعادة: من النوع
<number>
.
القيمة المُعادة:
1
في حالة دعم لونين إثنين،4
في حالة دعم 16 لون،8
في حالة دعم 256 لون،24
في حالة دعم 16,777,216 لون.
يستخدم هذا لتحديد عدد الألوان التي تدعمها الطرفية. نظرا لطبيعة الألوان في الطرفيات فمن الممكن أن يكون إما قيم false موجبة أو قيم false سالبة. ويعتمد ذلك على معلومات العملية ومتغيرات البيئة التي لها علاقة بالطرفية المستخدمة. لفرض سلوك معين دون الاعتماد على process.env
من الممكن تمرير كائن مع إعدادات مختلفة.
يستخدم متغير البيئة NODE_DISABLE_COLORS
لإجبار هذه الدالة على إعادة 1 دائمًا.
tty.isatty(fd)
أُضيف مع الإصدار: v0.5.8.
fd
من النوع<number>
وهو واصف ملف رقمي.
يُعيد التابع tty. isatty()
القيمة true
إذا كان fd
المعطى مقترنًا بـ tty ويعيد false
إذا لم يكن كذلك، بما في ذلك كلما كان fd
ليس عددا صحيحًا غير سالب.