Skip to content

TTY

[مستقر: 2 - مستقر]

مستقر: 2 استقرار: 2 - مستقر

رمز المصدر: lib/tty.js

يوفر نمط node:tty فئتي tty.ReadStream و tty.WriteStream. في معظم الحالات، لن يكون من الضروري أو الممكن استخدام هذا النمط مباشرة. ومع ذلك، يمكن الوصول إليه باستخدام:

js
const tty = require('node:tty')

عندما يكتشف Node.js أنه يتم تشغيله مع وجود محطة نصية ("TTY") متصلة، سيتم تهيئة process.stdin بشكل افتراضي، كمثيل لفئة tty.ReadStream، وسيكون كلا من process.stdout و process.stderr بشكل افتراضي، مثيلات لفئة tty.WriteStream. الطريقة المفضلة لتحديد ما إذا كان Node.js يتم تشغيله ضمن سياق TTY هي التحقق من أن قيمة خاصية process.stdout.isTTY هي true:

bash
$ 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. في الظروف العادية، سيكون process.stdin هو مثيل tty.ReadStream الوحيد في عملية Node.js، ويجب ألا يكون هناك سبب لإنشاء مثيلات إضافية.

readStream.isRaw

مضافة في: v0.7.7

قيمة من نوع boolean تكون true إذا تم تهيئة TTY حاليًا للعمل كجهاز خام.

تكون هذه العلم دائمًا false عند بدء عملية، حتى إذا كانت المحطة تعمل في الوضع الخام. ستتغير قيمتها مع المكالمات اللاحقة إلى setRawMode.

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 إلى الوضع الناتج.
  • قيمة مُعادة: <this> مثيل دفق القراءة.

يسمح بتكوين tty.ReadStream بحيث يعمل كجهاز خام.

عندما يكون في الوضع الخام، تكون الإدخالات متاحة دائمًا حرفًا حرفًا، دون تضمين المُعدِّلات. بالإضافة إلى ذلك، يتم تعطيل جميع عمليات المعالجة الخاصة للشخصيات بواسطة المحطة، بما في ذلك عرض أحرف الإدخال. لن يتسبب + في SIGINT عند التواجد في هذا الوضع.

الصف: tty.WriteStream

مضاف في: v0.5.8

يمثل الجانب القابل للكتابة من TTY. في الظروف العادية، سيكون process.stdout و process.stderr هما مثالي tty.WriteStream الوحيدان المُنشآن لعملية Node.js، ويجب ألا يكون هناك سبب لإنشاء مثيلات إضافية.

new tty.ReadStream(fd[, options])

[السجل]

الإصدارالتغييرات
v0.9.4يتم دعم وسيطة options.
v0.5.8مضاف في: v0.5.8
  • fd <number> مُعرّف ملف مرتبط بـ TTY.
  • options <Object> الخيارات المُمرَّرة إلى net.Socket الأب، راجع options لبناء net.Socket.
  • قيمة مُعادة <tty.ReadStream>

يُنشئ ReadStream لـ fd المرتبط بـ TTY.

new tty.WriteStream(fd)

مضاف في: v0.5.8

يُنشئ WriteStream لـ fd المرتبط بـ TTY.

الحدث: 'resize'

مضاف في: v0.7.7

يُصدر حدث 'resize' كلما تغيرت خاصية writeStream.columns أو خاصية writeStream.rows. لا تُمرر أي وسيطات إلى دالة الاستدعاء المُستمع عند استدعائها.

js
process.stdout.on('resize', () => {
  console.log('تغير حجم الشاشة!')
  console.log(`${process.stdout.columns}x${process.stdout.rows}`)
})

writeStream.clearLine(dir[, callback])

[السجل]

الإصدارالتغييرات
v12.7.0تم الكشف عن دالة الاستدعاء وقيمة الإرجاع الخاصة بـ write() للتيار.
v0.7.7مضاف في: v0.7.7
  • dir <number>

    • -1: إلى اليسار من المؤشر
    • 1: إلى اليمين من المؤشر
    • 0: السطر بأكمله
  • callback <Function> يتم استدعاؤها بمجرد اكتمال العملية.

  • القيمة المُرجعه: <boolean> false إذا كان التيار يرغب في أن تنتظر الكود المُستدعي حتى يتم إصدار حدث 'drain' قبل المتابعة في كتابة بيانات إضافية؛ خلاف ذلك true.

تقوم writeStream.clearLine() بمسح السطر الحالي من هذا WriteStream في الاتجاه المُحدد بواسطة dir.

writeStream.clearScreenDown([callback])

[السجل]

الإصدارالتغييرات
v12.7.0تم الكشف عن دالة الاستدعاء وقيمة الإرجاع الخاصة بـ write() للتيار.
v0.7.7مضاف في: v0.7.7
  • callback <Function> يتم استدعاؤها بمجرد اكتمال العملية.
  • القيمة المُرجعه: <boolean> false إذا كان التيار يرغب في أن تنتظر الكود المُستدعي حتى يتم إصدار حدث 'drain' قبل المتابعة في كتابة بيانات إضافية؛ خلاف ذلك true.

تقوم writeStream.clearScreenDown() بمسح هذا WriteStream من المؤشر الحالي إلى الأسفل.

writeStream.columns

أضيف في: v0.7.7

رقم number يحدد عدد الأعمدة التي يمتلكها TTY حاليًا. يتم تحديث هذه الخاصية كلما تم إصدار حدث 'resize'.

writeStream.cursorTo(x[, y][, callback])

[السجل]

الإصدارالتغييرات
v12.7.0تم الكشف عن دالة الاستدعاء و قيمة الإرجاع لـ write() للتيار.
v0.7.7أضيف في: v0.7.7
  • x <number>
  • y <number>
  • callback <Function> يتم استدعاء هذه الدالة بمجرد اكتمال العملية.
  • قيمة الإرجاع: <boolean> false إذا كان التيار يرغب في أن تنتظر الكود الذي يقوم بالاستدعاء حتى يتم إصدار حدث 'drain' قبل مواصلة كتابة بيانات إضافية؛ خلاف ذلك true.

يقوم writeStream.cursorTo() بنقل مؤشر WriteStream هذا إلى الموضع المحدد.

writeStream.getColorDepth([env])

أضيف في: v9.9.0

  • env <Object> كائن يحتوي على متغيرات البيئة التي سيتم التحقق منها. هذا يسمح بمحاكاة استخدام محطة طرفية محددة. الافتراضي: process.env.
  • قيمة الإرجاع: <number>

قيمة الإرجاع:

  • 1 لـ 2،
  • 4 لـ 16،
  • 8 لـ 256،
  • 24 لـ 16,777,216 لونًا مدعومًا.

استخدم هذا لتحديد الألوان التي تدعمها المحطة الطرفية. نظرًا لطبيعة الألوان في المحطات الطرفية، من الممكن وجود إيجابيات خاطئة أو سلبيات خاطئة. يعتمد ذلك على معلومات العملية ومتغيرات البيئة التي قد تكذب بشأن المحطة الطرفية المستخدمة. من الممكن تمرير كائن env لمحاكاة استخدام محطة طرفية محددة. يمكن أن يكون هذا مفيدًا للتحقق من سلوك إعدادات بيئة محددة.

لتطبيق دعم لون محدد، استخدم أحد إعدادات بيئة ما يلي:

  • لونان: FORCE_COLOR = 0 (يعطل الألوان)
  • 16 لونًا: FORCE_COLOR = 1
  • 256 لونًا: FORCE_COLOR = 2
  • 16,777,216 لونًا: FORCE_COLOR = 3

من الممكن أيضًا تعطيل دعم اللون باستخدام متغيرات البيئة NO_COLOR و NODE_DISABLE_COLORS.

writeStream.getWindowSize()

مضاف في: v0.7.7

writeStream.getWindowSize() تُرجع حجم وحدة التحكم النصية (TTY) المُقابلة لـ WriteStream هذا. المصفوفة من النوع [numColumns, numRows] حيث يُمثل numColumns و numRows عدد الأعمدة والصفوف في وحدة التحكم النصية المُقابلة.

writeStream.hasColors([count][, env])

مضاف في: v11.13.0, v10.16.0

  • count <integer> عدد الألوان المطلوبة (الحد الأدنى 2). الافتراضي: 16.
  • env <Object> كائن يحتوي على متغيرات البيئة للتحقق. هذا يُمكّن من محاكاة استخدام وحدة تحكم نصية محددة. الافتراضي: process.env.
  • المُرجع: <boolean>

يُرجع true إذا كان writeStream يدعم عددًا من الألوان لا يقل عن العدد المقدم في count. الحد الأدنى للدعم هو 2 (أسود وأبيض).

هذا يحتوي على نفس الإيجابيات الكاذبة والسلبيات الكاذبة كما هو موضح في writeStream.getColorDepth().

js
process.stdout.hasColors()
// يُرجع true أو false بناءً على ما إذا كان `stdout` يدعم 16 لونًا على الأقل.
process.stdout.hasColors(256)
// يُرجع true أو false بناءً على ما إذا كان `stdout` يدعم 256 لونًا على الأقل.
process.stdout.hasColors({ TMUX: '1' })
// يُرجع true.
process.stdout.hasColors(2 ** 24, { TMUX: '1' })
// يُرجع false (إعداد البيئة يتظاهر بأنه يدعم 2 ** 8 ألوان).

writeStream.isTTY

مضاف في: v0.5.8

قيمة من نوع boolean تكون دائمًا true.

writeStream.moveCursor(dx, dy[, callback])

[السجل]

الإصدارالتغييرات
v12.7.0تم الكشف عن دالة الاستدعاء و قيمة الإرجاع للدالة write() للتيار.
v0.7.7مضاف في: v0.7.7
  • dx <number>
  • dy <number>
  • callback <Function> يتم استدعاء هذه الدالة عند اكتمال العملية.
  • المُرجع: <boolean> false إذا كان التيار يرغب في أن تنتظر الكود المُستدعي حدث 'drain' قبل متابعة كتابة بيانات إضافية؛ خلاف ذلك true.

writeStream.moveCursor() يحرك مؤشر WriteStream هذا بشكل نسبي إلى موقعه الحالي.

writeStream.rows

مضاف في: v0.7.7

رقم يحدد عدد الصفوف الموجودة حاليًا في TTY. يتم تحديث هذه الخاصية كلما تم إصدار حدث 'resize' .

tty.isatty(fd)

مضاف في: v0.5.8

ترجع طريقة tty.isatty() القيمة true إذا كان fd المُعطى مرتبطًا بـ TTY و false إذا لم يكن كذلك، بما في ذلك عندما لا يكون fd عددًا صحيحًا غير سالب.